Você está na página 1de 52

GUIA DE REFERNCIA RPIDA AdvPL

Contribuio e Apoio Eduardo Nakamato e Edson Rodrigues

GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

A seguir so apresentadas as funes SIGA Advanced para uso junto ao RD-MAKE /


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;

AbreExcl
Tipo: Processamento
Fecha o arquivo e reabre exclusivo. Esta funo fecha o arquivo cujo alias est
expresso em <cAlias> 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..
Sintaxe
AbreExcl(cAlias)
Parmetros
cAlias Nome do Alias do Arquivo. Deve ter obrigatriamente sua estrutura
definida no SX3.
Exemplo
//
IF AbreExcl(SI2)
Pack
ENDIF
AbreExcl( )
dbGoTop( )

Activate Dialog
Tipo: Tela Windows
Ativa uma janela previamente definida na funo Dialog e executa os GETs,
botes e outros objetos.
Sintaxe
ACTIVATE DIALOG cVar <CENTERED> [On Init cFuncInit] [Valid cFuncValid]
Parmetros
cVar 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)

Exemplo
Ver exemplo no programa RDDEMO apresentado no final deste Manual.
Ver tambm
Funo Dialog

Aleatorio
Tipo: 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.
Sintaxe
Aleatorio(nMax,nSeed)
Parmetros
nMax Nmero mximo para a gerao do nmero aleatrio
nSeed Semente para a gerao do nmero aleatrio
Retorna
nRet 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

Avalimp
Tipo: 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.
Sintaxe
AvalImp(nLimit)
Formatado

Comentrios
A clusula <CENTERED> opcional, se omitida assume as coordenadas
definidas na criao da janela.
GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

Parmetros
nLimit Tamanho do relatrio em colunas. Pode ser 80, 132 ou 220 (respectivamente para relatrios de tamanho P,M e G).
Retorna
cControl 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:=
aReturn:= {Especial, 1,Administrao, 1, 2, 2,,1}
cNomeProg:= NFEEDER
cPerg:= ENTSAI
nLastKey:= 0
lContinua:= .T.
nLi:= 0
wnrel:= NFEEDER
nTamNf:=72 // Apenas Informativo
Pergunte(cPerg,.F.) // Pergunta no SX1
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
GUIA DE REFERNCIA RPIDA AdvPL

Aviso
Tipo: Tela DOS/Windows
Monta uma janela exibindo o texto desejado e, opcionalmente, disponibilizando
opes de escolha para o usurio.
Sintaxe
Aviso(cTitulo,cMensagem,aOpcoes)
Parmetros
cTitulo 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).
Retorna
nResp 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 <ESC>
Exit
Endif
Endif
Exit
EndDo
// Faz o processamento...
Return

AxCadastro
Tipo: Processamento
Gerao de modelo 1. Rotina para criao e manuteno de cadastros no padro
do SIGA Advanced, contendo as opes padronizadas: PESQUISA, INCLU-SO,
ALTERAO, VISUALIZAO e EXCLUSO.
Disponibiliza o Browse e todas as funes de cadastramento padro.
Sintaxe
AxCadastro(cAlias,cTitulo,cDel,cOk)

Jomar ( ultima atualizao 04/10 )

Parmetros
cAlias Alias do arquivo. Deve obrigatoriamente ter sua estrutura definida no
SX3.
cTitulo Ttulo da Janela.
cDel Funo para validar a excluso.
cOk Funo para validar a Incluso/Alterao.
Comentrios
Deve ser utilizada para editar arquivos especficos (Famlia SZ?), sendo
seme-lhante aos cadastros de Clientes, Fornecedores e etc...
Exemplo
// Exemplo de uso de cadastro de arquivo especifico:
AxCadastro(SZ1,Cadastro de Descontos,.T.",.T.)
Return

@ n1,n2 BmpButton
Tipo: Tela Windows
Cria um boto de bitmap padro do SigaAdv Win.
Sintaxe
@ nLinha,nColuna BMPBUTTON TYPE nBotao ACTION cFuncao OBJECT
oBtn
Parmetros
nLinha Nmero da linha superior
nColuna Nmero da coluna superior
nBotao Nmero do boto padronizado
cFuncao Funo que ser executada
oBtn Objeto associado ao boto
Comentrios
Para executar funes definidas em um mesmo .PR? utilizar a funo
Execute(Nome da funo) ou ExecBlock(Nome do Arquivo) para chamar
outro .PR?.
Exemplo
Ver exemplo no programa RDDEMO apresentado no final deste Manual.

@... Bitmap... Size


Tipo: Tela Windows
Define a rea em que ser mostrado um BITMAP na janela.
Sintaxe
@ nLinha,nColuna BITMAP SIZE nAltura,nLargura FILE cArq
Parmetros
nLinha Nmero da Linha superior
nColuna Nmero da Coluna superior
nAltura Altura de apresentao do BITMAP
nLargura Largura de apresentao do BITMAP
GUIA DE REFERNCIA RPIDA AdvPL

cArq Nome do arquivo BITMAP


Exemplo
Ver exemplo no programa RDDEMO apresentado no final deste Manual.

@...To...Browse
Tipo: Tela Windows
Ativa Browse padro SigaAdv Win.
Sintaxe
@ nLinha1,nColuna1 TO nLInha2,nColuna2 BROWSE cAlias <ENABLE>
cCor
Parmetros
nLinha1 Nmero da linha superior
nColuna1 Nmero da coluna superior
nLinha2 Nmero da linha inferior
nColuna2 Nmero da coluna inferior
cAlias Alias do Arquivo (apenas arquivos com estrutura no SX3)
cCor Expresso que identifica a cor da marca do registro (opcional)
Exemplo
Marca Verde - Titulo em aberto
Marca Vermelha - Titulo pago
Comentrios
A clusula <ENABLE> opcional, se for omitida no ser disponibilizada
coluna que identifica situao do registro (Cor verde/vermelha).

@...Button
Tipo: Tela Windows
Cria um boto com texto.
Sintaxe
@ nLinha,nColuna BUTTON cTexto SIZE nAltura,nLargura ACTION
cFuno Object oBtn
Parmetros
nLinha Nmero da linha superior
nColuna Nmero da coluna superior
cTexto Texto que ser apresentado no boto. Deve incluir um _ antes
da letra que utilizada como Hot Key. Ex.: ( _Salvar,Edi_Tar)
nAltura Altura do boto
nLargura Largura do boto
cFuno Funo que ser executada
Object oBtn Objeto associado ao boto.

Jomar ( ultima atualizao 04/10 )

Comentrios
Para executar funes definidas em um mesmo .PR? utilizar a funo
Execute(Nome da funo) ou ExecBlock(Nome do Arquivo) para chamar outro
.PR?.
Exemplo
Ver exemplo no programa RDDEMO apresentado no final deste Manual.

Cabec
Tipo: 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.
Sintaxe
Cabec(cTtulo, cTexto1, cTexto2, cProg, cLargura, cControle)
Parmetros
cTtulo Ttulo do Relatrio
cTexto1 Extenso da primeira linha do cabealho
cTexto2 Extenso da segunda linha do cabealho
cProg Nome do Programa
cLargura Largura do relatrio (P/ M/ G)
cControle Caractere de controle da impressora (numrico)
Retorna
nLinha Nmero da ltima linha impressa no cabealho
Exemplo
cTitulo := Relao dos Adiantamentos
cCabec1 := Cdigo Item Conta Contbil CCusto Projeto Data Valor
cCabec2 := ----------- ------- ----------------------- ------------ ------------ -------- --------
cPrograma := ATRF090
cTamanho := P
nCaracter := 15
:
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

CalcEst
Tipo: 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.
GUIA DE REFERNCIA RPIDA AdvPL

Sintaxe
CalcEst(cProduto, cAlmox, dData)
Parmetros
cProduto Produto a ser pesquisado
cAlmox Almoxarifado a pesquisar
dData Data desejada
Retorna
aArray Array contendo:
Elemento 1 - Quantidade inicial em estoque na data
Elemento 2 - Custo inicial na data na moeda 1
Elemento 3 - Custo inicial na data na moeda 2
Elemento 4 - Custo inicial na data na moeda 3
Elemento 5 - Custo inicial na data na moeda 4
Elemento 6 - Custo inicial na data na moeda 5
Elemento 7 - Quantidade inicial na segunda unidade de medida
Exemplos
aSaldos:=CalcEst(SB1->B1_COD,SB1->B1_LOCPAD, dDataBase)
nQuant:=aSaldos[1]

CalcSaldo
Tipo: 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.
Sintaxe
CalcSaldo(nPer,nMoeda,lSalAnt)
Parmetros
nPer Perodo (1 a 17) que ser usado como limite para o clculo de
saldo.
nMoeda Moeda para o clculo. Se no informada, assumida a moeda
1.
lSalAnt Indica se deve (.T.) ou no (.F.) considerar o saldo inicial da
conta.
Se no informado, assumido verdadeiro (.T.).
Retorna
nSld 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

Jomar ( ultima atualizao 04/10 )

Capital

@...CheckBox...Var

Tipo: Processamento
Transforma as letras iniciais em Maisculas e as demais em Minsculas.
Sintaxe
Capital(cTexto)
Parmetros
cTexto Texto a ser convertido
Exemplo

Tipo: Tela Windows


Cria uma caixa de verificao para definir entre Sim/No ou Falso/Verdadeiro.
Sintaxe
@ nLinha,nColuna CHECKBOX cDesc VAR lSeleo Object oCbx
Parmetros
nLinha 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
Retorno
A varivel <lSeleo> recebe .T. se for selecionada ou .F., se vazia.
Comentrios
Pode ser utilizada uma seqncia de CHECKBOX para determinar um
conjunto de configuraes onde vrios itens podem ser marcados/desmarcados.
Deve ser definida uma varivel <lSeleo> para cada CHECKBOX definida. Ex.:
Atualiza Estoque - .T./.F. = Marcada/Desmarcada
Gera Duplicata - .T./.F. = Marcada/Desmarcada
Calcula IPI - .T./.F. = Marcada/Desmarcada

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

CGC
Tipo: 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.
Sintaxe
CGC(ExpC1)
Parmetros
ExpC1 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.
Retorna
ExpL1 Expresso lgica .T. se o CGC vlido (dgito verificador
confere) ou .F. se o dgito verificador no confere.
Exemplos
cCGC:= 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.

GUIA DE REFERNCIA RPIDA AdvPL

ChkFile
Tipo: 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.
Sintaxe
ChkFile(cAlias,lExcl,newAlias)
Parmetros
cAlias Alias do arquivo a ser aberto.
lExcl Se for informado verdadeiro (.T.), o arquivo ser aberto em modo
exclusivo, caso contrrio, o arquivo ser aberto em modo compar-tilhado.
Se este parmetro no for informado, ser assumido falso (.F.).
newAlis Abre o arquivo com outro apelido.
Retorna
lRet Retorna verdadeiro (.T.) caso tenha conseguido abrir o arquivo e
falso (.F.) caso contrrio.

Jomar ( ultima atualizao 04/10 )

Exemplo

Retorna
lRet 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 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
:
Endif
EndDo
If lOk
// Faz o processamento com o arquivo...
Endif
// Finaliza
If Select(SA1)
dbCloseArea()
Endif
ChkFile(SA1,.F.)
Return

// Exemplo de uso da funcao CloseOpen:


aFecha := {SA1,SA2",SA3",SB1"}
aAbre := {SG1,SH8"}
If CloseOpen(aFecha,aAbre)
.. Processamento
Endif
Return

ClosesFile

Close
Tipo: Tela Windows
Desativa uma janela previamente definida e ativa.
Sintaxe
Close(cVar)
Parmetros
cVar Varivel criada durante o comando de definio da janela.
Exemplo
@ 75,158 BmpButton type 02 Action Close(oDlg)

Tipo: 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.
Sintaxe
ClosesFile(cAlias)
Parmetros
cAlias String com os Aliases dos arquivos que no devem ser fechados.
Devem ser informados separados por barras (/)
Retorna
lRet 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

CloseOpen
Tipo: Processamento
Funo usada para fechar e abrir uma lista de arquivos.
Sintaxe
CloseOpen(aFecha,aAbre)
Parmetros
aFecha Array com a lista dos Aliases a serem fechados.
aAbre Array com a lista dos Aliases a serem abertos.

GUIA DE REFERNCIA RPIDA AdvPL

@...ComboBox...Itens...Size
Tipo: 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

Jomar ( ultima atualizao 04/10 )

Parmetros
nLinha Nmero da linha superior
nColuna Nmero da coluna superior
cCont Contedo caracter do item selecionado na Matriz [1]
aArray Array, Matriz [1] com os itens para seleo
nAltura Altura para definir o tamanho da caixa
nLargura Largura para definir o tamanho da caixa
oCbx Objeto relacionado ao boto
Retorno
O item selecionado pode ser obtido por <cCont>
Comentrios
Os itens da Matriz [1] devem ser tipo C caracter.
Exemplo
Ver exemplo no programa RDDEMO apresentado no final deste Manual.

Comp3
Tipo: 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.
Sintaxe
Comp3(aArray)
Parmetros
aArray Array contendo os 25 campos compactados (o Saldo Inicial, os
12 Dbitos e 12 Crditos)
Retorna
ExpC1 Nome do Campo aglutinador da compactao.
Exemplos
aSaldos:=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 tambm
Funo DeComp3

GUIA DE REFERNCIA RPIDA AdvPL

Condicao
Tipo: 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.
Sintaxe
Condicao(nValTot,cCond,nVIPI,dData,nVSol)
Parametros
nValTot Valor total a ser parcelado
cCond Cdigo da condio de pagamento
nVIPI Valor do IPI, destacado para condio que obrigue o pagamento
do IPI na 1 parcela
dData Data inicial para considerar
Retorna
aRet Array de retorno ( { {VALOR,VENCTO} , ... } )
Exemplo
// Exemplo de uso da funcao Condicao:
nValTot := 2500
cCond := 002 // Tipo 1, Duas vezes
aParc := Condicao(nValTot,cCond,,dDataBase)
? 1 Parcela: +Transform(aParc[1,1],@E 9,999,999.99")
? Vencto: +DTOC(aParc[1,2])
?
? 2 Parcela: +Transform(aParc[2,1],@E 9,999,999.99")
? Vencto: +DTOC(aParc[2,2])
inkey(0)
Return

ConfirmSX8
Tipo: Processamento
Permite a confirmao do nmero sugerido pelo Arquivo de Semforo, atravs da
funo GETSX8NUM. Verifique a funo GETSX8NUM para maiores detalhes.
Sintaxe
ConfirmSx8()
Exemplo
cNumSC5:=GetSX8Num(SC5)
Replace C5_NUM with cNumSC5
ConfirmSX8()

Verifique os exemplos descritos na funo GETSX8NUM.

Jomar ( ultima atualizao 04/10 )

Exemplo
Credito(11103,03,1)

Contar

Ver tambm
Funes Debito, Saldo e Movimento

Tipo: Processamento
Conta o nmero de registros de acordo com a condio determinada.
Sintaxe
Contar(cAlias, cCond)
Parmetros
cALias Alias do arquivo
cCond Condio para a contagem
Exemplo

CriaTrab

Contar(SC1,C1_DATPRF < dDataBase)

ConvMoeda
Tipo: Processamento
Converte o valor informado para a moeda selecionada.
Sintaxe
ConvMoeda(dData1,dData2,nValor,cMoeda)
Parmetros
dData1 Data de emisso
dData2 Data de vencimento
nValor Valor a ser convertido
cMoeda Para qual moeda dever converter
Retorna
ExpN1 Valor convertido (devolvido pela funo)
Comentrios
Esta 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.
Exemplos
nValor2 := ConvMoeda( D2_EMISSAO, , D2_TOTAL, cMoeda )
nValor1 := ConvMoeda( D1_DTDIGIT, , D1_TOTAL, cMoeda )

Credito
Tipo: Processamento
Devolve o valor a crdito de uma determinada conta.
Sintaxe
Credito(cConta, nMs, nMoeda)
Parmetros
cConta Cdigo da Conta
nMs Ms do movimento desejado
nMoeda Moeda desejada para obteno do valor a crdito
GUIA DE REFERNCIA RPIDA AdvPL

Tipo: Processamento
Cria arquivo de trabalho.
Sintaxe
CriaTrab(aArray,lDbf)
Parmetros
aArray Array multidimensional contendo os campos a criar {Nome, Tipo,
Tamanho, Decimal}
lDbf Determina se o arquivo de trabalho deve ser criado ( .T.) ou no
(.F. )
Retorna
ExpC1 Nome do Arquivo gerado pela funo.
Comentrios
Esta 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 , C, 1, 0})
AADD(aStru,{ AGLUT , C, 10, 0})
AADD(aStru,{ NUMOP , C, 10, 0})
AADD(aStru,{ PRODUTO, C, 15, 0})
AADD(aStru,{ QUANT , N, 16, 4})
AADD(aStru,{ ENTREGA, D, 8, 0})
AADD(aStru,{ ENTRAJU, D, 8, 0})
AADD(aStru,{ ORDEM , N, 4, 0})
AADD(aStru,{ GERADO , C, 1, 0})
cArqTrab := CriaTrab(aStru, .T.)
USE &cArqTrab ALIAS TRB NEW

Jomar ( ultima atualizao 04/10 )

// uteis de determinado mes utilizando-se dessa funcao.


// A logica e simples:
nDUtil := 0
nMes := 05
nAno := 98
dDtIni := CTOD(01/+StrZero(nMes,2)+/+StrZero(nAno,2)
dDtMov := dDtIni
While Month(dDtIni) == Month(dDtMov) .And. Year(dDtIni) == Year(dDtMov)
If DataValida(dDtMov) == dDtMov
nDUtil := nDUtil + 1
Endif
dDtMov := dDtMov + 1
EndDo

CriaVar
Tipo: 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.
Sintaxe
CriaVar(cCampo,lIniPad,cLado)
Parametros
cCampo Nome do campo
lIniPad Indica se considera (.T.) ou no (.F.) o inicializador
cLado Se a varivel for caracter, cLado pode ser: C - centralizado, L
- esquerdo ou R - direito
Retorna
uRet 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

Debito
Tipo: Processamento
Devolve o valor a dbito de uma determinada conta.
Sintaxe
Debito(cConta, nMs, nMoeda)
Parmetros
cConta Cdigo da Conta
nMs Ms do movimento desejado
nMoeda Moeda desejada para obteno do valor a dbito
Exemplo
Debito(11103,03,1)

Ver tambm
Funes Credito, Saldo e Movimento

DataValida
Tipo: 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.
Sintaxe
DataValida(dData)
Parametros
dData Data informada para validao.
Retorna
dDtVld 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
GUIA DE REFERNCIA RPIDA AdvPL

DeComp3
Tipo: 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.
Sintaxe
DeComp3(cCampo)
Parmetros
cCampo Nome do Campo aglutinador da compactao.
Retorna
aArray Array contendo os 25 campos compactados.
Exemplo
aSaldos:= 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)

Jomar ( ultima atualizao 04/10 )

10

Reclock(SA1)
REPLACE A1_MOVIMEN With Comp3(aSaldos)

DrawAdv3D

Ver tambm
Funo Comp3

@...To...Dialog
Tipo: Tela Windows
Define uma nova janela na rea de trabalho.
Sintaxe
@ nLinha1,nColuna1 TO nLinha2,nColuna2 DIALOG cVar TITLE cTtulo
Parmetros
nLinha1 Nmero da linha superior
nColuna1 Nmero da coluna superior
nLinha2 Nmero da linha inferior
nColuna2 Nmero da coluna inferior
cVar Varivel que recebera as definies da nova janela
cTtulo Titulo da Janela
Comentrios
Deve ser utilizada sem conjunto com o comando ACTIVATE DIALOG.
Exemplo
Ver exemplo no programa RDDEMO apresentado no final deste Manual.

Digito11

Tipo: Processamento
Clculo de dgito verificador em mdulo 11.
Sintaxe
Digito11(cCalc,cDigito)
Parmetros
cCalc String para calcular o dgito
cDigito Dgito de verificao
Retorna
ExpL1 Valor Lgico de Retorno (.T. ou .F.)
Comentrios
Esta 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))

Tipo: Tela DOS


Desenha uma janela DOS em 3 dimenses.
Sintaxe
DrawAdv3D(cTitle, nLinha1, nColuna1, nLInha2, nColuna2, cCorFrente,
cCorFundo, cStyle)
Parmetros
cTitle Ttulo da Janela
nLinha1 Nmero da linha superior
nColuna1 Nmero da coluna superior
nLinha2 Nmero da linha inferior
nColuna2 Nmero da coluna inferior
cCorFrente Cor da letra
cCorFundo Cor do fundo
cStyle 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)

DrawAdvWindow

Tipo: Tela DOS


Desenha uma janela padro de acordo com a posio relativa passada como
parmetro. Para verso DOS.
Sintaxe
DrawAdvWindow(cTitulo,nLinha1,nColuna1,nLInha2, nColuna2)
Parmetros
cTitulo Ttulo da janela
nLinha1 Linha superior da janela
nColuna1 Coluna esquerda da janela
nLinha2 Linha inferior da janela
nColuna2 Coluna direita da janela
Comentrios
Esta 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.
Exemplos
DrawAdvWindow(Ttulos em Aberto,3,4,20,76)

EANDigito

Tipo: Processamento
Calcula o dgito de controle para o cdigo EAN usado em cdigos de barras.
Sintaxe
EanDigito(cCod)
GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

11

Parmetros
cCod Cdigo de barras para o clculo do dgito. obrigatrio o tamanho
de 12 dgitos.
Retorna
cEan 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 AdvPL:
cCod := EanDigito(PADL(AllTrim(M->B1_CODBAR),12,0"))
cDig := Substr(cCod,12,1)
Alert(O digito calculado e: +cDig)
Return

Entre

Tipo: Processamento
Verifica se o contedo do campo est entre o contedo de duas expresses
(ExpX1 <= cCampo <= ExpX2). Se verdadeiro, retorna .T..Usado normalmente
em validaes de campos digitados.
Sintaxe
Entre(ExpX1,ExpX2,cCampo)
Parmetros
ExpX1 Expresso a comparar >=
ExpX2 Expresso a comparar <=
cCampo Nome do Campo
Retorna
ExpL1 Valor Lgico de Retorno (.T. ou .F.)
Exemplos
:
If Entre(A1,A9",cSerie)
@ 5,10 Say Serie Ok
Else
@ 5,10 Say Serie Invalida
Loop
EndIf
:

Estrut

// Exemplo de uso da funcao Estrut:


cPrd := Space(15)
aStru := {}
nEstru := 0
While .T.
@ 10,10 Say Codigo do Produto:
@ 10,30 Get cPrd Picture @! Valid(!Empty(cPrd))
Read
If LastKey() == 27
Exit
Endif
If !ExistCpo(SB1,cPrd)
Loop
Endif
i:= 0
aStru := Estrut(cPrd) // Obtem a estrutura
nLin := 5
For i := 1 To Len(aStru)
@nLin,00 Say Comp.: +aStru[i,3]
@nLin,20 Say Quant.: +Str(aStru[i,4],15)
nLin := nLin + 1
If nLin > 23
@24,00 Say Tecle <ENTER>...
Inkey(0)
nLin := 5
Endif
Next i
EndDo

Execute

Tipo: Processamento
Funo para obteno da estrutura de um produto previamente cadastrada no
SG1 atravs dos Mdulos SIGAEST ou SIGAPCP.
Sintaxe
Estrut(cProduto)
GUIA DE REFERNCIA RPIDA AdvPL

Parmetros
cProduto Cdigo do produto PAI da estrutura.
Retorna
aStru Retorna o array com a estrutura do produto na seguinte sintaxe:
{ {N , Cdigo , Comp. , Qtd. , TRT }, ... , ... }
Esta funo requer que seja declarada a varivel chamada nEstru
contendo 0, para o seu correto funcionamento.
Exemplo

Tipo: Processamento
Executa uma Funo definida em um mesmo .Pr? nas clusulas <ACTION> ou
<VALID>.
Sintaxe
Execute (cFuno)
Parmetro
cFuno Funo a ser executada.
Exemplo
@ 75,098 BmpButton type 01 action Execute(S500IMP)

Jomar ( ultima atualizao 04/10 )

12

ExistChav

Tipo: Processamento
Verifica se a chave j existe em determinado Alias. Funo para uso em
validaes de campos-chave, para no permitir a duplicidade de registros.
Sintaxe
ExistChav(cAlias,cChave,nOrdem,cHelp)
Parametros
cAlias Alias do arquivo no qual a consistncia deve ser avaliada
cChave Chave para a pesquisa. Opcional. Se no for informada, o
contedo ser automaticamente obtido do GET ativo
nOrdem Ordem do ndice para a pesquisa no Alias. Se no for
especificado, ser assumida a primeira ordem
cHelp Opcional chave de help. Se no for informada, o help ser o
padro do sistema (JAGRAVADO)
Retorna
lRet Retorna Verdadeiro (.T.) se a chave no existir (o que significa que
pode ser usada para incluir um novo registro). Caso contrrio, retorna
Falso (.F.) e executa um help do sistema.
Exemplo
// Exemplo de uso da funcao ExistChav:
// Pode-se utiliza-la em uma validacao de usuario,
// definada atraves do Configurador:
// Campo -> B1_COD
// Validacao do Usuario -> ExistChav(SB1)
// Ou em um AdvPL:
While .T.
cEsp := Space(15)
@ 00,00 Say Cadastro de Especialidades
@10,00 Say Espec.: Get cEsp Pict @!
Read
If LastKey() == 27
Exit
Endif
If ExistChav(SZ1,cEsp,1,ESPEXIST)
Loop
Endif
Grava() // Rotina generica
EndDo
Return

ExistCpo

// Exemplo de uso da funcao ExistCpo:


While .T.
cProd := Space(15)
@10,10 Get cProd
Read
If LastKey() == 27
Exit
Endif
If !ExistCpo(SB1,cProd)
Loop
Endif
Grava() // Funcao generica.
EndDo
Return

ExistIni

Tipo: Processamento
Verifica se o campo possui inicializador padro.
Sintaxe
ExistIni(cCampo)
Parmetros
cCampo Nome do campo para verificao.
Retorna
lEx Retorna Verdadeiro (.V.) se o campo possui inicializador padro,
caso contrrio, retorna falso (.F.).
Exemplo

Tipo: Processamento
Verifica se determinada chave existe no Alias especificado. Funo utilizada em
processamentos onde o cdigo informado deve existir em determinado cadastro,
na sua validao.
Sintaxe
ExistCpo(cAlias,cChave,nOrdem)

GUIA DE REFERNCIA RPIDA AdvPL

Parmetros
cAlias Alias do arquivo para a pesquisa
cChave Chave a ser pesquisada (opcional). Se no for informada, o
conte-do
obtido automaticamente do GET em uso
nOrdem Nmero da ordem do ndice para Pesquisa (Opcional). Se no
for informado, usa a ordem atual do Alias.
Retorna
lRet Retorna Verdadeiro (.T.) se a chave existir no Alias especificado,
caso contrrio, retorna Falso (.F.) e executa um help padro do sistema
(REGNOIS). A ordem utilizada na pesquisa a atualmente selecionada.
Se no for informado, usa a ordem atual do lias.
Exemplo

// Exemplo de uso da funcao ExistIni:


// Se existir inicializador no campo B1_COD:
If ExistIni(B1_COD)
// Chama o inicializador:
cCod := CriaVar(B1_COD)
Endif
Return

Jomar ( ultima atualizao 04/10 )

13

Extenso

Tipo: Processamento
Gera o extenso de um valor numrico. Esta funo retorna um valor, dinheiro ou
quantidade, por extenso. Usada para a impresso de cheques, valor de
duplicatas, etc.
Sintaxe
Extenso(nValor,lQtd,nMoeda)
Parametros
nValor Valor a ser gerado o extenso.
lQtd Verdadeiro (.T.) indica que o valor representa uma quantidade.
Falso (.F.) indica que o valor representa dinheiro. Se no for especificado,
o default falso (.F.).
nMoeda - Qual moeda do sistema deve ser o extenso.
Retorna
cValor Retorna o valor por extenso.
Exemplo
// Exemplo de uso da funcao Extenso:
nValor := SF2->F2_VALFAT
// Gera o extenso do valor, formatando a variavel com
// 200 caracteres preenchendo os espacos em branco com *
cExtenso := PADR(Extenso(nValor),200,*)
// Imprime o extenso em duas linhas (100 caracteres em cada):
For nLi := 20 To 21
@nLi,10 Say Substr(cExtenso,(nLi-20)*100+1,100)
Next nLi
Return

FinNatOrc
Tipo: Processamentoe Planilha
Retorna o valor orado da natureza.
Sintaxe
FinNatOrc(cNatureza,nMs,nMoeda)
Parmetros
cNatureza Natureza a ser pesquisada
nMs Ms para clculo
nMoeda Moeda de sada
Exemplo
FinNatOrc(R001,10,1)

FinNatPrv

Tipo: Processamento e Planilha


Retorna o valor previsto de cada natureza.
Sintaxe
FinatPrv(cNatureza,dData1,dData2,nMoeda)

cNatureza Natureza a ser pesquisada


dData1 Data Inicial para clculo
dData2 Data Final de clculo
nMoeda Moeda de sada
Exemplo

FinNatPrv(R001,CtoD(01/01/98),dDataBase,1)

FinNatRea

Tipo: Processamento e Planilha


Retorna o valor realizado da Natureza.
Sintaxe
FinNatRea(cNatureza,dData1,dData2,nMoeda)
Parmetros
cNatureza Natureza a ser pesquisada
dData1 Data Inicial para clculo
dData2 Data Final de clculo
nMoeda Moeda de sada
Exemplo
FinNatRea(R001,CtoD(01/01/98),dDataBase,1)
aAdd(aL,++)
aAdd(aL,|XXXXXXXX Relatorio de Teste Pagina: XXXXX|)
aAdd(aL,++++)
aAdd(aL,| CODIGO | DESCRICAO | PRECO |)
aAdd(aL,++++)
aAdd(aL,| XXXXXXX | XXXXXXXXXXXXXXXXXXXXXX | XXXXXX |)
aAdd(aL,++++)
nLim:= 80 // Relatorio de 80 colunas
nLi:= 60
nPg:= 1
dbSelectArea(SB1)
dbGoTop()
While !EOF()
If nLi > 55
nLi := 0
FmtLin({},aL[1],,,@nLi,.T.,nLim)
FmtLin({dDataBase,nPg},aL[2],,,@nLi,.T.,nLim)
FmtLin({},aL[3],,,@nLi,.T.,nLim)
FmtLin({},aL[4],,,@nLi,.T.,nLim)
FmtLin({},aL[5],,,@nLi,.T.,nLim)
nPg := nPg + 1
Endif
aDados := {}
aAdd(aDados,Subs(B1_COD,1,7))
aAdd(aDados,Subs(B1_DESC,1,22))

Parmetros
GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

14

Formula

Tipo: Processamento
Interpreta uma frmula cadastrada. Esta funo interpreta uma frmula, previamente cadastrada no Arquivo SM4 atravs do Mdulo Configurador, e retorna o
resultado com tipo de dado de acordo com a prpria frmula.
Sintaxe
Formula(cFormula)
Parmetros
cFormula Cdigo da frmula cadastrada no SM4.
Retorna
uRet Retorno, com tipo de dado de acordo com a frmula.
Exemplo
// Exemplo de uso da funcao formula:
// Formula cadastrada no SM4:
// Codigo: F01
// Regra : Sao Paulo, +StrZero(Day(dDataBase),2)+
// de +MesExtenso(dDataBase)+ de +
// StrZero(Year(dDataBase),4)+.
// Ao imprimir esta linha em um programa, por exemplo,
@ 00,00 Say Formula(F01)
// o resultado impresso sera algo como:
// Sao Paulo, 17 de dezembro de 1997.
// Formula cadastrada no SM4:
// Codigo: F02
// Regra : (GETMV(MV_JUROS)/100)+1
// Ao usar esta formula, pode-se dar um acrescimo em um
// valor de acordo com a taxa de juros cadastrada no parametro MV_JUROS:
nValor := nValor * Formula(F02)

FuncaMoeda

GUIA DE REFERNCIA RPIDA AdvPL

@... GET

Tipo: Tela DOS/Windows


Executa um Get, diferenciado pela clusula <F3>.
Sintaxe
@ nLinha,nColuna GET cVar <PICTURE> cMscara <VALID> cFuno
<F3> cConsulta
Parmetros
nLinha Nmero da Linha em que o Get ser posicionado
nColuna Nmero da Coluna em que o Get ser posicionado
cVar Varivel a ser editada
cMscara Define a mscara de edio (opcional)
cFuno Funo que retorna valor lgico para validao da edio
(opcional)
cConsulta Definio (SXB) da consulta <F3> associada ao contedo de
cVar
Comentrios
Os cdigos utilizados na clusula <F3> devem ser obtidos atravs do
arquivo (SXB). No necessrio utilizar o comando READ aps a definio dos
Gets.

GetAdvFval

Tipo: Processamento
Retorna um array contendo o valor do titulo em at cinco (5) moedas.
Sintaxe
FuncaMoeda(dData,nValor,nMoeda)
Parmetros
dData Data utilizada como referncia
nValor Valor utilizado como referncia
nMoeda Moeda em que o valor se encontra
Retorna
aRet Array contendo o valor informado nas cinco moedas ( {
nVal1,nVal2,nVal3,nVal4,nVal5 } )
Exemplo
// Exemplo do uso da funcao FuncAMoeda:
nValTit := SE1->E1_SALDO
nMoeda := SE1->E1_MOEDA
aValores := FuncaMoeda(dDataBase,nValTit,nMoeda)
For i:=1 to 5
? Valor do titulo na +Str(i,1)+ moeda: +;
Transform(aValores[i],@E 9,999,999.99")

Next i
inkey(0)
Return

Tipo: Processamento
Esta funo permite executar uma pesquisa em um arquivo, pela chave
especificada e na ordem especificada, retornando o contedo de um ou mais
campos.
Sintaxe
GetAdvFVal(cAlias,uCpo,uChave,nOrder,uDef)
Parmetros
cAlias Alias do arquivo.
uCpo Nome de um campo ou array contendo os nomes dos campos
desejados.
uChave Chave para a pesquisa.
nOrder Ordem do indice para a pesquisa.
uDef Valor ou array default para ser retornado caso a chave no seja
encontrada.
Retorna
uRet Retorna o contedo de um campo ou array com o contedo de
vrios campos.

Jomar ( ultima atualizao 04/10 )

15

Exemplo
// Exemplo de uso da funcao GetAdvFVal:
// Obtendo apenas de um campo:
cChave := SD2->D2_COD+SD2->D2_LOCAL
cDesc := GetAdvFVal(SB1,B1_DESC,cChave,1,SC6->C6_DESCRI)
// 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.

GetMV

Tipo: Processamento
Recupera o contedo de parmetros originados em SX6.
Sintaxe
GetMV(cParam)
Parmetros
cParam Nome do parmetro a ser pesquisado no SX6
Retorna
ExpX1 Contedo do parmetro devolvido pela funo
Exemplos
cTabVista := GETMV(MV_TABVIST)
cColICMS := GETMV(MV_COLICMS)

GetSX8Num

Tipo: 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
junta-mente com outras duas, chamadas CONFIRMSX8 e ROLLBACKSX8.
Verifique os exemplos para maiores detalhes.
Sintaxe
GetSx8Num(cAlias,cCpoSx8)
Parmetros
cAlias Alias do Arquivo
cCpoSx8 Nome do campo para aplicao do semforo
Exemplo
Para 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 programas AdvPL, 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 AdvPL:
cCodNew := GetSx8Num(SZ1,Z1_COD)
// Processamento...
// Confirmacao
ConfirmSx8()
// ou Cancelamento
RollBackSx8()
Return

GravaOrcado

Tipo: Processamento e Planilha


Permite que um determinado valor calculado pela planilha seja gravado no
Arquivo de Oramentos.
Sintaxe
GravaOrcado(cConta,nClula,nMs,nMoeda)
Parmetros
cConta Conta Contbil a ser orada
nClula Nmero da clula onde o valor estar contido
nMs Ms a ser orado (se nulo, ser ms corrente)

nMoeda Moeda a ser orada (se nula, ser moeda nacional)


GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

16

Exemplo
Para 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 <<< Orado >>>.

Help

Tipo: 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.
Sintaxe
Help(cHelp,nLinha,cTtulo,cNil,cMensagem,nLinMen,nColMen)
Parmetros
cHelp Nome da Rotina chamadora do help (sempre branco)
nLinha Nmero da linha da rotina chamadora (sempre 1)
cTtulo Ttulo do help
cNil Sempre NIL
cMensagem Mensagem adicional ao help
nLinMen Nmero de linhas da Mensagem (relativa janela)
nColMen Nmero de colunas da Mensagem (relativa janela)
Retorna
Nada
Exemplos
:
If Empty(cArqs)
dbSelectArea(cAlias)
RecLock(cAlias,.F.)
dbDelete()
Else
Help( ,1,NaoExclui,,cArqs,4,1)
Endif

// Exemplo de uso da funcao Impcadast:


// Imprime relatorio de cadastro de produtos:
ImpCadast(Cabec1,Cabec2,Cabec3,PRG01",P,80,SB1")
Return

IncRegua

Tipo: Impresso
Incrementa rgua padro de processamento em relatrios.
Sintaxe
IncRegua()
Parmetros
Nil
Retorno
Nil
Exemplo
DbSelectArea(SA1)
SetRegua(LastRec())
While ( ! Eof() )
@ Li, 001 PSAY SA1->A1_NOME
DbSkip()
IncRegua()
End

Comentrio
Ver tambm SetRegua()

IncProc

:
ImpCadast

nLim Limite do relatrio. Mxima coluna a ser impressa


cAlias Alias do arquivo de cadastro a ser impresso
Exemplo

Tipo: 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.
Sintaxe
ImpCadast(cCab1,cCab2,cCab3,cNomePrg,cTam,nLim,cAlias)
Parmetros
cCab1 Primeira linha de cabealho

Tipo: Tela DOS/Windows


Incrementa rgua padro de processamento.
Sintaxe
IncProc()
Parmetros
Nil
Retorno
Nil
Exemplo
ProcRegua(1000)
For i:= 1 to 1000
IncProc()
Next
Return

cCab2 Segunda linha de cabealho


cCab3 Terceira linha de cabealho
cNomePrg Nome do programa

cTam Tamanho do relatrio (P,M ou G)


GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

17

IndRegua

Tipo: Processamento
Cria ndice de trabalho, podendo ser condicional.
Sintaxe
IndRegua(cAlias,cArqtrab,cChave,cPar,cFiltro,cTexto)
Parmetros
cAlias Alias do arquivo.
cArqtrab Nome do arquivo de trabalho retornado pela funo CriaTrab
(.F.).
cChave Expresso utilizada na chave do novo ndice.
cPar Se for igual a D, cria um indice com a chave inversa, do maior
valor para o menor.
cFiltro Expresso utilizada para filtro.
cTexto Texto da rgua de processamento ( Selecionando registros ...).
Retorno
Nil
Exemplo
DbSelectArea(SC5)
cFiltro := C5_OK<>X
cChave := Dtos(C5_EMISSAO)+C5_VEND1
cIndSC51 := CriaTrab(Nil,.F.)
IndRegua(SC5, cIndSC51, cChave, , cFiltro, Selecionando Pedidos...)

LetterOrNum

GUIA DE REFERNCIA RPIDA AdvPL

Tipo: Processamento
Monta um browse padro do sistema, permitindo marcar e desmacar linhas.
Sintaxe
MarkBrowse(cAlias,cCampo,cCpo,aCampos,lMarc,cMarca,cCtrlM,lBotoes,
cTopFun,cBotFun,aCoord)
Parmetros
cAlias lias do arquivo
cCampo Campo que estabelece relao com a culuna de marca
cCpo Campo que se estiver vazio muda a cor da linha
aCampos Array com os campos para montar o browse
lMarc Flag para inicializar marcado ou no
cMarca Marca obtida com a funo Getmark
cCtrlM Funo para ser executada no Alt_M
lBotoes Parmetro obsoleto
cTopFun Funo filtro para estabelecer o primeiro registro
cTopFun Funo filtro para estabelecer o ltimo registro
aCoord Array com as coordenadas da MarkBrowse.
Exemplo
cMarca := GetMark()
cCadastro := Escolher Clientes
aRotina := { { Pesquisar,AxPesqui,0,1}, ;
{Visualizar,AxVisual,0,2}}
MarkBrow(SA1,A1_OK,SA1->A1_OK,,,cMarca)

Tipo: Processamento
Verifica se determinado caracter uma letra ou um nmero.
Sintaxe
LetterOrNum(cChar)
Parmetros
cChar Caracter para verificao.
Retorna
lAlfa Retorna Verdadeiro (.V.) se o caracter informado for uma letra ou
um nmero.
Exemplo
// Exemplo de uso da funcao LetterOrNum:
cCh := Inkey(0)
If LetterOrNum(cCh)
... Processamento
Endif
Return

MarkBrowse

MBrowse

Tipo: Processamento
Monta um browse padro do sistema, conforme os parmetros.
Sintaxe
mBrowse(nLinha1, nColuna1, nLinha2, nColuna2, cAlias, aFixe, cCpo,
nPar, cCor, n Opc)
Parmetros
nLinha1 Nmero da linha inicial
nColuna1 Nmero da coluna inicial
nLinha2 Nmero da linha final
nColuna2 Nmero da coluna final
cAlias Alias do arquivo
aFixe Array contendo os campos fixos (a serem mostrados em primeiro
lugar no browse)
cCpo Campo a ser tratado. Quando vazio, muda a cor da linha
nPar Parmetro obsoleto
cCor Funo que retorna um valor lgico, muda a cor da linha
nOpc Define qual opo do aRotina que ser utilizada no double click

Jomar ( ultima atualizao 04/10 )

18

Exemplo

Modelo2

cCadastro := Cadastro de Orcamentos


aRotina := {{Pesquisar,AxPesqui,0,1},;
{Incluir,ExecBlock(DEMOA,.F.),0,3},;
{Altera,ExecBlock(DEMOB),0,4},;
{Excluir,ExecBlock(DEMOC,.F.),0,5}}
MBrowse(6, 1, 22, 75, SA1)

Media

Tipo: Processamento
Retorna a taxa mdia da moeda em um determinado ms/ano.
Sintaxe
Media(nMoeda,nMes,nAno)
Parmetros
nTaxa Taxa mdia calculada.
nMoeda Moeda para clculo da taxa mdia.
nMes Ms para clculo da taxa mdia. Se no informado, assumido o
ms da data base.
nAno Ano para clculo da taxa mdia. Se no informado, assumido o
ano da data base.
Exemplo
// Exemplo de uso da funcao Media
nTxMed := Media(1)
nTaxa := nTxMed
@ 00,00 Say Media do mes: +Transform(nTxMed,@E999.99")
@ 00,01 Say Taxa calcul.: Get nTaxa Picture @E999.99
Read
Return

MesExtenso

Tipo: Processamento
Retorna o nome do ms por extenso.
Sintaxe
MesExtenso(nMes)
Parmetros
nMes Nmero do ms (1 a 12). Se nMes no for informado,
assumido o ms da data base do sistema. Esta varivel tambm pode ser
caracter (1 ou 2) ou do tipo data.
Retorna
cNome Nome do ms retornado por extenso.
Exemplo
// Exemplo do uso da funcao MesExtenso:
? Sao Paulo, +STRZERO(Day(dDataBase),2)+ de +;
MesExtenso(dDataBase)+ de +StrZero(Year(dDataBase),4)

GUIA DE REFERNCIA RPIDA AdvPL

Tipo: Processamento
Exibe formulrio para cadastro segundo o modelo 2 (como a rotina de Nota
Fiscal).
Sintaxe
M o d e l o 2 (c T t u l o ,a C a b e c ,a R o d a p ,a G d ,n O p ,c L O k ,c T O k ,
[aGetsGD,bF4,cIniCpos,nMax,aCordw,lDelget])
Parmetros
cTtulo Ttulo da janela
aCabec Array com os campos do cabealho
aRodap Array com os campos do rodap
aGd Array com as posies para edio dos itens (GETDADOS)
nOp Modo de operao (3 ou 4 altera e inclui itens, 6 altera mas no
inclui itens, qualquer outro nmero s visualiza os itens)
cLOk Funo para validao da linha
cTOk Funo para validao de todos os dados (na confirmao)
aGetsGD Array Gets editveis (GetDados)
Default = Todos.
bF4 Codeblock a ser atribudo a tecla F4.
Default = Nenhum.
cIniCpos String com o nome dos campos que devem ser inicializados ao
teclar seta para baixo (GetDados).
nMAx Limita o nmero de linhas (GetDados).
Default = 99.
aCordw Array com quatro elementos numricos, correspondendo s
coor-denadas
linha superior, coluna esquerda, linha interior e coluna
direita, definindo a rea de tela a ser usada.
Default = rea de Dados Livre.
lDelget Determina se as linhas podem ser deletadas ou no (GetDados)
Default = .T.
Retorna
lRet Retorna .T. se for confirmado
Exemplo
//**************************************************
// 3,4 Permitem alterar getdados e incluir linhas
// 6 So permite alterar getdados e nao incluir linhas
// Qualquer outro numero so visualiza
nOpcx:=3
dbSelectArea(Sx3)
dbSetOrder(1)
dbSeek(SX5)
nUsado:=0
aHeader:={}
While !Eof() .And. (x3_arquivo == SX5)
IF X3USO(x3_usado) .AND. cNivel >= x3_nivel
nUsado:=nUsado+1

Jomar ( ultima atualizao 04/10 )

19

AADD(aHeader,{ TRIM(x3_titulo),x3_campo,;
x3_picture,x3_tamanho,x3_decimal,;
ExecBlock(Md2valid,.f.,.f.),x3_usado,;
x3_tipo, x3_arquivo, x3_context } )
Endif
dbSkip()
End
aCols:=Array(1,nUsado+1)
dbSelectArea(Sx3)
dbSeek(SX5)
nUsado:=0
While !Eof() .And. (x3_arquivo == SX5)
IF X3USO(x3_usado) .AND. cNivel >= x3_nivel
nUsado:=nUsado+1
IF nOpcx == 3
IF x3_tipo == C
aCOLS[1][nUsado] := SPACE(x3_tamanho)
Elseif x3_tipo == N
aCOLS[1][nUsado] := 0
Elseif x3_tipo == D
aCOLS[1][nUsado] := dDataBase
Elseif x3_tipo == M
aCOLS[1][nUsado] :=
Else
aCOLS[1][nUsado] := .F.
Endif
Endif
Endif
dbSkip()
End
aCOLS[1][nUsado+1] := .F.
cCliente:=Space(6)
cLoja :=Space(2)
dData :=Date()
nLinGetD:=0
cTitulo:=TESTE DE MODELO2"
aC:={}
// aC[n,1] = Nome da Variavel Ex.:cCliente
// aC[n,2] = Array com coordenadas do Get [x,y], em
// Windows estao em PIXEL
// aC[n,3] = Titulo do Campo
// aC[n,4] = Picture
// aC[n,5] = Validacao
// aC[n,6] = F3
// aC[n,7] = Se campo e editavel .t. se nao .f.
#IFDEF WINDOWS
AADD(aC,{cCliente ,{15,10} ,Cod. do Cliente,@!,;
ExecBlock(MD2VLCLI,.F.,.F.),SA1",})
AADD(aC,{cLoja ,{15,200},Loja,@!,,,})
AADD(aC,{dData ,{27,10} ,Data de Emissao,,,,})
#ELSE
AADD(aC,{cCliente ,{6,5} ,Cod. do Cliente,@!,;
ExecBlock(MD2VLCLI,.F.,.F.),SA1",})
AADD(aC,{cLoja ,{6,40},Loja,@!,,,})
AADD(aC,{dData ,{7,5} ,Data de Emissao,,,,})
#ENDIF
GUIA DE REFERNCIA RPIDA AdvPL

aR:={}
// aR[n,1] = Nome da Variavel Ex.:cCliente
// aR[n,2] = Array com coordenadas do Get [x,y], em
// Windows estao em PIXEL
// aR[n,3] = Titulo do Campo
// aR[n,4] = Picture
// aR[n,5] = Validacao
// aR[n,6] = F3
// aR[n,7] = Se campo e editavel .t. se nao .f.
#IFDEF WINDOWS
AADD(aR,{nLinGetD ,{120,10},Linha na GetDados,;
@E 999,,,.F.})
#ELSE
AADD(aR,{nLinGetD ,{19,05},Linha na GetDados,;
@E 999,,,.F.})
#ENDIF
#IFDEF WINDOWS
aCGD:={44,5,118,315}
#ELSE
aCGD:={10,04,15,73}
#ENDIF
cLinhaOk := ExecBlock(Md2LinOk,.f.,.f.)
cTudoOk := ExecBlock(Md2TudOk,.f.,.f.)
// lRet = .t. se confirmou
// lRet = .f. se cancelou
lRet:=Modelo2(cTitulo,aC,aR,aCGD,nOpcx,cLinhaOk,cTudoOk)
// No Windows existe a funcao de apoio CallMOd2Obj() que
// retorna o objeto Getdados Corrente
Return

Modelo3

Tipo: Processamento
Executa cadastro semelhante ao cadastro de Pedidos de Venda, cabealho
varivel com itens.
Sintaxe
Modelo3(cTitulo,cAliasEnchoice,cAliasGetD,aCpoEnchoice,cLinOk,cTudO
k,nOpcE,nOpcG,cFieldOk, [lVirtual,nLinhas,aAltEnchoice])
Parmetros
cTitulo Ttulo da janela
cAliasEnchoice lias do cabealho
cAliasGetd lias dos itens
aCpoEnchoice Array com os campos que sero mostrados
cLinOk Funo para validar a mudana de linha nos itens.
cTudOk Funo para validar todos os itens.
nOpce Nmero da opo do menu para o cabealho (Enchoice)
nOpcG Nmero da opo do menu para o itens (GetDados)
cFieldOk Funo para validar os campos dos itens (GetDados)
lVirtual Permite visualizar campos virtuais na enchoice.
Default = .F.
nLinhas Limita o nmero mximo de linhas (GetDados)
Jomar ( ultima atualizao 04/10 )

20

Default = 99.
aAltEnchoice Array com campos alterveis (Enchoice)
Default = Todos.
Retorna
lRet Retorno da funo modelo3. Se True a operao foi confirmada.
Exemplo
aRotina := {{ Pesquisa,AxPesqui, 0 , 1},;
{ Visual,AxVisual, 0 , 2},;
{ Inclui,AxInclui, 0 , 3},;
{ Altera,AxAltera, 0 , 4, 20 },;
{ Exclui,AxDeleta, 0 , 5, 21 }}
//
// Opcoes de acesso para a Modelo 3
//
cOpcao:=VISUALIZAR
Do Case
Case cOpcao==INCLUIR; nOpcE:=3 ; nOpcG:=3
Case cOpcao==ALTERAR; nOpcE:=3 ; nOpcG:=3
Case cOpcao==VISUALIZAR; nOpcE:=2 ; nOpcG:=2
EndCase
//
// Cria variaveis M->????? da Enchoice
//
RegToMemory(SC5,(cOpcao==INCLUIR))
//
// Cria aHeader e aCols da GetDados
//
nUsado:=0
dbSelectArea(SX3)
dbSeek(SC6)
aHeader:={}
While !Eof().And.(x3_arquivo==SC6")
If Alltrim(x3_campo)==C6_ITEM
dbSkip()
Loop
Endif
If X3USO(x3_usado).And.cNivel>=x3_nivel
nUsado:=nUsado+1
Aadd(aHeader,{ TRIM(x3_titulo), x3_campo, x3_picture,;
x3_tamanho, x3_decimal,AllwaysTrue(),;
x3_usado, x3_tipo, x3_arquivo, x3_context } )
Endif
dbSkip()
End
If cOpcao==INCLUIR
aCols:={Array(nUsado+1)}
aCols[1,nUsado+1]:=.F.
For _ni:=1 to nUsado
aCols[1,_ni]:=CriaVar(aHeader[_ni,2])
Next
Else
aCols:={}
dbSelectArea(SC6)
dbSetOrder(1)
GUIA DE REFERNCIA RPIDA AdvPL

dbSeek(xFilial()+M->C5_NUM)
While !eof().and.C6_NUM==M->C5_NUM
AADD(aCols,Array(nUsado+1))
For _ni:=1 to nUsado
aCols[Len(aCols),_ni]:=FieldGet(FieldPos(aHeader[_ni,2]))
Next
aCols[Len(aCols),nUsado+1]:=.F.
dbSkip()
End
Endif
If Len(aCols)>0
//
// Executa a Modelo 3
//
cTitulo:=Teste de Modelo3()
cAliasEnchoice:=SC5"
cAliasGetD:=SC6"
cLinOk:=AllwaysTrue()
cTudOk:=AllwaysTrue()
cFieldOk:=AllwaysTrue()
aCpoEnchoice:={C5_CLIENTE}
_lRet:=Modelo3(cTitulo,cAliasEnchoice,cAliasGetD,aCpoEnchoice,cLinOk,cTudOk,nOpcE,n
OpcG,cFieldOk)
//
// Executar processamento
//
If _lRet
Aviso(Modelo3(),Confirmada operacao!,{Ok})
Endif
Endif
Return

MontaF3

Tipo: Processamento
Permite o acesso janela de Consultas Padronizadas (criadas no SXB) atravs
de um GET usando a tecla F3.
Sintaxe
MontaF3(cAlias)
Parmetros
cAlias Alias do arquivo ou cdigo de tabela para consulta. Se no
informado, desabilita a tecla F3.
Exemplo
// Exemplo de uso da funcao MontaF3:
// Versao DOS
cCod := Space(15)
@02,50 Say Digite o codigo: Get cCod Picture @! ;
When MontaF3(SB1) Valid(MontaF3())
Read
Return
// ***************************
// Versao WINDOWS
// Use a propria clausula do comando get:
@ 250,250 To 360,450 Dialog oDlg Title Teste

Jomar ( ultima atualizao 04/10 )

21

@ 02,50 Get cCod Picture @! F3 SB1


Activate Dialog oDlg Centered
Return

MovimCC

Tipo: Processamento
Retorna o movimento de um centro de custo mais conta contbil (extracontbil).
Sintaxe
MovimCC(cCC, cConta, nMs, nMoeda)
Parmetros
cCC Cdigo do centro de custo
cConta Cdigo da conta contbil
nMs Referente ao ms
nMoeda Moeda desejada para obteno do valor
Exemplo
MovimCC(3001, 111001,Month(Ddatabase),1)

Movimento

Tipo: Processamento
Devolve o movimento (dbito-crdito) de uma determinada conta, ou seja, o saldo
do movimento.
Sintaxe
Movimento(cCdigo,nMs,nMoeda,dData)
Parmetros
cCdigo Cdigo da conta
nMs Ms do movimento desejado
nMoeda Moeda desejada para obteno do movimento
dData Data do exerccio desejado
Exemplo
Movimento(43,1,1, CTOD ("01/01/95") - retorna o 1 perodo
Movimento(`43,1,1,CTOD(01/01/96) - retorna o 13 perodo
// Exibe uma mensagem no dialogo
MsProcTxt(Processando produto: +B1_COD)
// Processamento...
dbSkip()
EndDo
Return

MsGetVersion

Tipo: Processamento
Retorna array com as verses do Windows NT.
Sintaxe
MsGetVersion( )
Exemplo

MsgBox

Tipo: Tela Windows


Abre uma caixa de dialogo padronizada para informar o usurio de um Erro
deciso a ser tomada ou apenas uma informao (Registro Gravado com
sucesso).
Sintaxe
MSGBOX(cMensagem,cTtulo,cTpCaixa)
Parmetros
cMensagem Define a mensagem apresentada no interior da janela
cTtulo Titulo da janela
cTpCaixa Tipo da caixa padronizada
Retorno
Retorna Nil ou um valor lgico (.T. ou .F.) conforme o tipo de caixa.
Comentrios
As caixas assumem o tamanho de <cMensagem>.
Tipos de caixas:
STOP, utiliza um bitmap para advertncia e tem um boto Ok. Retorna
Nil.
INFO, utiliza um bitmap para advertncia e tem um boto Ok. Retorna
Nil.
ALERT, utiliza um bitmap para advertncia e tem um boto Ok.
Retorna Nil.
YESNO, utiliza um bitmap para advertncia e tem dois botes Sim e
No,
retorna .T. ou .F.
RETRYCANCEL, utiliza um bitmap para advertncia e tem dois botes
Repetir e Cancelar, retorna .T. ou .F.

@..To...MultiLine

Tipo: Tela Windows


Ativa Browse para edio de mltiplos itens padro SigaAdv Win (GetDados Itens
SC6).
Sintaxe
@ nLinha1,nColuna1 TO nLinha2,nColuna2 MULTILINE <<MODIFY>>
<<DELETE>> <<VALID>> cFuno <<FREEZE>> nColuna
Parmetros
nLinha1 Nmero da linha superior
nColuna1 Nmero da coluna superior
nLinha2 Nmero da linha inferior
nColuna2 Nmero da coluna inferior
cFuno Funo a ser executada para validar mudana de linha
<opcional>
nColuna Nmero de colunas Congeladas esquerda <opcional>

aVersao := MsGetVersion()
@ 001, 010 PSAY Versao do Windows : + Str( aVersao[1], 2 ) + . + Str(
aVersao[2], 2 )
@ 008, 010 PSAY Versao do Dos : + Str( aVersao[3], 2 ) + . + Str(aVersao[4], 2 )
GUIA DE REFERNCIA RPIDA AdvPL
Jomar ( ultima atualizao 04/10 )

22

Comentrios
As clusulas opcionais permitidas controlam as Alteraes, Excluses e
Validaes nas mudanas de linha e congelamento de colunas respectivamente.
Devem ser criadas obrigatoriamente as matrizes aHeader [n][n] e aCols[n][n]
antes da definio da MULTILINE, sendo que aHeader [n][n] contm informaes
sobre os campos que sero editados (SX3) e aCols [n][n] contm os dados
referentes aos campos que sero editados.

NaoVazio

Tipo: Processamento
Verifica se o campo no est vazio.
Sintaxe
NaoVazio(cCpo)
Parmetros
cCpo Campo a verificar
Retorna
ExpL1 Valor Lgico de Retorno (.T. ou .F.)
Exemplos

Orcado

Tipo: Processamento
Retorna o valor orado de uma conta.
Sintaxe
Orcado(cConta, nPerodo,nMoeda,dData)
Parmetros
cConta Cdigo da conta De
nPerdodo Referente ao perodo
nMoeda Moeda desejada para obteno do valor
GUIA DE REFERNCIA RPIDA AdvPL

OrcadoCC

Tipo: Processamento
Recupera o valor orado da Conta x Centro de Custo para utilizao na planilha.
Sintaxe
OrcadoCC(cConta,cCC,nPerodo,nMoeda,dData)
Parmetros
cConta Cdigo da Conta
cCC Cdigo do Centro de Custo
nPerodo Perodo (default ms da database)
nMoeda Moeda (default 1)
dData Data para converso se moeda de 2 a 5 - (default dDataBase)
Exemplo

OpenFile

Tipo: Processamento
Verifica se negativo.
Sintaxe
Negativo(nCpo)
Parmetros
nCpo Campo a verificar
Retorna
ExpL1 Se o valor de nCpo for menor que 0, retornado .T., caso
contrrio ser retornado .F..
Exemplos
If Negativo (nValTitulo)
@ 5,10 Say Valor invalido
Loop
EndIf

Orcado(11102001,1,1)

OrcadoCC( 111001,3001,3,2)

@ 5,10 Get cCodigo Valid NaoVazio(cCodigo)

Negativo

dData Data para converso (em formato data ou caracter), caso no


informada, ser utilizada a DataBase do sistema
Exemplo

Tipo: Processamento
a funo que exibe o diagnstico de arquivos, verificando a existncia dos
arquivos de dados e os ndices do sistema, criando caso no existam, etc. Abre
os arquivos de acordo com o mdulo onde executada ou de acordo com a
parametrizao.
Sintaxe
OpenFile(cEmp)
Parmetros
cEmp Cdigo da empresa que deve ser aberta.
Exemplo
// Exemplo de uso da funcao openfile:
cEmp := SM0->M0_CODIGO
// Elimina os indices de todos os arquivos abertos no
// SX2 para reindexacao
dbSelectArea(SX2)
dbGoTop()
While !EOF()
If Select(SX2->X2_CHAVE) > 0
dbSelectArea(SX2->X2_CHAVE)
dbCloseArea()
cEsp := AllTrim(SX2->X2_PATH)
cEsp := cEsp + AllTrim(SX2->X2_ARQUIVO) + "*" + RetIndExt()
fErase(cEsp)
Endif
dbSelectArea(SX2)
dbSkip()
EndDo
dbCloseAll() // Fecha todos os arquivos
OpenFile(cEmp) // Abre os arquivos (reindexa)

Jomar ( ultima atualizao 04/10 )

23

Return
* Parmetro cEmp apenas no Windows.

Periodo

OurSpool

Tipo: Impresso
Abre a tela do gerenciador de impresso do sistema. O gerenciador mostra os
relatrios impressos em disco gravados no diretrio definido atravs do parmetro
MV_RELATO.
Sintaxe
OurSpool(cArq)
Parmetros
cArq Nome do arquivo. Este parmetro opcional, se informado, o
gerenciador de impresso j aberto neste arquivo.
Exemplo
// Exemplo de uso da funcao ourspool:
// Ativa o gerenciador de impressao:
OurSpool()
// Para verificar o uso desta funcao em relatorios,
// verifique o exemplo da funcao AVALIMP.
Return

Pergunte

Veja o exemplo da funo CALCSALDO.


Pertence

Tipo: Impresso
Esta funo permite acessar e editar um grupo de perguntas do arquivo SX1.
Mostra uma tela contendo as perguntas gravadas em SX1 a serem respondidas
ou confirmadas pelo usurio.
Sintaxe
Pergunte(cGrupo, lVar)
Parmetros
cGrupo Nome do Grupo de perguntas.
lVar .F. - devolve o contedo das variveis, no apresentando a janela
de perguntas; .T. - permite a alterao das variveis, apresentando a
janela.
Retorna
ExpL1 .T. se o grupo de perguntas existe.
Exemplos
pergunte(AFR090,.T.)
// Variveis utilizadas na pergunta
// mv_par01 a partir da data
// mv_par02 at a data
// mv_par03 da conta
// mv_par04 at a conta
// mv_par05 do centro de custo
// mv_par06 at o centro de custo
// mv_par07 do cdigo
// mv_par08 at o cdigo
// mv_par09 do projeto
// mv_par10 at o projeto
// mv_par11 moeda
GUIA DE REFERNCIA RPIDA AdvPL

Tipo: Processamento
Devolve o perodo contbil de acordo com o exerccio atual.
Sintaxe
Periodo(dData,nMoeda)
Parametros
dData Data a ser considerada. Se no for especificada, assumida a
data base.
nMoeda Moeda a ser considerada. Se no for especificada, assumida
a primeira moeda.
Retorna
nPer Perodo contbil retornado.
Exemplo

Tipo: Processamento
Verifica se o campo est contido em outro.
Sintaxe
Pertence(cString,cCampo)
Parmetros
cString String que deve estar contida no cCampo
cCampo Campo a verificar
Retorna
ExpL1 Valor Lgico de Retorno (.T. ou .F.)
Exemplo

SetCursor(1)
@ 09,19 Get cTipo Picture @! Valid Pertence(CL\VD\PD,cTipo)

PesqPict

Tipo: Processamento
Pesquisa, no dicionrio de dados, qual a picture usada em um determinado
campo, seja para a edio em tela ou para a impresso de relatrios.
Sintaxe
PesqPict(cAlias,cCampo,nTam)
Parmetros
cAlias Alias do arquivo
cCampo Nome do campo
nTam Opcional, para campos numricos, ser usado como o tamanho
do campo para definio da picture. Se no informado, e usado o
tamanho padro no dicionrio de dados.
Retorna
cPic Picture do campo

Jomar ( ultima atualizao 04/10 )

24

Exemplo

Positivo

// Exemplo de uso da funcao PesqPict


// Em um relatorio pode-se usar a sintaxe abaixo para
// formatacao automatica de acordo com o dicionario de
// dados:
@ nLin,20 Say Total:
@ nLin,27 Say SF2->F2_VALBRUT Picture PesqPict(SF2,F2_VALBRUT)
// ...
Return

PesqPictQt
Tipo: Processamento
Devolve a Picture de um campo de quantidade, de acordo com o dicionrio de
dados. Esta funo geralmente utilizada quando h pouco espao disponvel
para impresso de valores em relatrios, quando o valor nEdio no
informado, ela tem o comportamento semelhante ao da funo X3Picture, pois
busca o tamanho do campo no dicionrio de dados.
Sintaxe
PesqPictQt(cCampo,nEdio)
Parmetros
cCampo Nome do campo a verificar a picture
nEdio Espao disponvel para edio
Retorna
ExpC Picture ideal para o espao definido por nEdio, sem a
separao dos milhares por vrgula
Exemplo
@ 8,10 Say SB2->B2_QATU Picture PesqPictQt (B2_QATU,8)

Posicione

Tipo: Processamento
Posiciona o arquivo em um determinado registro.
Sintaxe
Posicione(cAlias, nOrdem, cChave, cCampo)
Parmetros
cAlias Alias do arquivo
nOrdem Ordem utilizada
cChave Chave pesquisa
cCampo Campo a ser retornado
Retorna
Retorna o contedo do campo passado com o permetro.
Exemplo
Posicione(SA1,1,xFilial(SA1)+001,A1_NOME)

GUIA DE REFERNCIA RPIDA AdvPL

Tipo: Processamento
Verifica se positivo.
Sintaxe
Positivo(nCampo)
Parmetros
nCampo Campo a verificar
Retorna
ExpL1 Valor Lgico de Retorno (.T. ou .F.)
Comentrios
Se cCampo for maior ou igual ( >= ) a zero a funo retorna .T.
Caso contrrio retorna .F.
Exemplo
@ 09,07 Get nValor Picture 999999 Valid Positivo ( nValor )

ProcRegua

Tipo: Tela DOS/Windows


Inicializa rgua padro de processamento.
Sintaxe
ProcRegua(nRegs,nLinha,nColuna)
Parmetros
nRegs Nmero de registros que sero processados.
nLinha Nmero da Linha da rgua
nColuna Nmero da Coluna da rgua
Retorna
Nil
Exemplo
ProcRegua(1000)
For i:= 1 to 1000
IncProc()
Next
Return

No programa para Windows a ProcRegua s utiliza o primeiro parmetro. No


programa para DOS so utilizados os trs parmetros.
= Ver tambm IncProc()

ProxReg

Tipo: Processamento
Retorna o ltimo registro incrementado. Esta funo retorna um valor, numrico
ou caracter, contendo o prximo nmero a partir do ltimo registro encontrado. O
campo que levado em considerao aquele que se encontra posicionado no
SX3 (dicionrio de dados). Pode ser usada para obter os prximos valores para
campos dos tipos: Caracter, Numrico e Data.

Jomar ( ultima atualizao 04/10 )

25

RecLock

Sintaxe

Tipo: Processamento
Tenta efetuar um lock no registro do banco de dados informado.
Sintaxe
RecLock(cAlias,lAdiciona)
Parmetros
cAlias Alias do Banco de Dados
lAdiciona .T. adiciona registro ao Banco de Dados
Retorna
ExpL1 Valor Lgico de Retorno (.T. ou .F.)
Comentrios
Esta funo tenta colocar o registro corrente do arquivo cAlias em lock.
necessrio colocar um registro em lock sempre que se for efetuar uma
atualizao no mesmo, como um comando Replace ou um Delete. Caso
lAdiciona = .T., a funo RecLock inclui (com um Append Blank) um
registro no arquivo cAlias. Se a operao for bem sucedida, retorna .T.
Exemplo

ProxReg(nInc,nPos,nIndice)
Parmetros
nInc Valor a incrementar
nPos Tamanho
nndice Nmero do ndice a ser utilizado
Retorna
uRet Prximo nmero (ltimo registro incrementado)
Exemplo
// Exemplo de uso da funo ProxReg:
dbSelectArea(SX3)
dbSetOrder(2)
dbSeek(A1_COD)
dbSelectArea(SA1)
cProx := ProxReg(1,6,1) // Retorna o possvel prximo
// cdigo para o cadastro de
// cliente
dbSelectArea(SX3)
dbSeek(D2_NUMSEQ)
dbSelectArea(SD2)
nProx := ProxReg(1,,4) // Retorna o proximo nmero
// seqencial
Return

@...Radio

Tipo: Tela Windows


Cria uma caixa de seleo semelhante a CHECKBOX, todos os itens so
apresentados mas apenas um pode ser selecionado.
Sintaxe
@ nLinha,nColuna RADIO aArray VAR nPos Object oRdx
Parmetros
nLinha Nmero da linha superior
nColuna Nmero da coluna superior
aArray Matriz [1] com os Itens
nPos Contm a posio na Matriz[1] do item selecionado
oRdx Objeto associado Radiobox()
Retorno
O item selecionado pode ser obtido por - Matriz [n3]
Comentrios
Os itens da Matriz [1] devem ser do tipo C caracter. Pode ser utilizada
para definir uma caracterstica em um conjunto. Ex.Tipo da Condio de
pagamento
Tipo 1
Tipo 2
Tipo 3
GUIA DE REFERNCIA RPIDA AdvPL

// Excluso de Registro
// Com lAdiciona = .F.
If ! RecLock(SF1,.F.)
@ 1,1 Say Registro em uso por outra estao
Loop
EndIf
dbDelete()
dbUnLock()
Com ExpL2 = .T.
// Incluso de Registro
RecLock(SF1,.T.)
Replace F1_TIPO With cTipo, F1_DOC With cNFiscal,;
F1_SERIE With cSerie ,F1_EMISSAO With dDEmissao,;
F1_LOJA With cLoja ,F1_FORNECE With Subs(cA100For,1,6)
dbUnLock()

Aps a atualizao do registro, deve-se executar a funo MsUnlock().

RecMoeda

Tipo: Processamento
Rotina para obteno do valor da moeda desejada em determinada data.
Sintaxe
RecMoeda(dData,nMoeda)
Parmetros
dData Data para obteno do valor da moeda.
nMoeda Moeda desejada.
Retorna
nVMoeda Retorna o Valor da moeda na data desejada.
Exemplo
// Exemplo de uso da funcao RecMoeda:
nDolar := RecMoeda(dDataBase,2)
nValDolar := SE1->E1_VALOR * nDolar
Return

Jomar ( ultima atualizao 04/10 )

26

Comentrios
Baseado no SINDEX, abre todos os ndices padres para o arquivo em
pauta.
Exemplo

RestArea

Tipo: Processamento
Restaura a rea RestArea a partir do array.
Sintaxe
RestArea(aArray)
Parmetros
aArray Expresso Array para restaurao
Exemplo

Select SA1
Index on A1_ACUM to TRAB
:
SINDEX := RetIndex (SA1)

aArray:=GetArea()
RestArea(aArray)

RollBackSX8

Ver tambm
Funo GetArea( )

RetASC
Tipo: Processamento
Retorna um cdigo de letras quando ultrapassar o nmero mximo de dgitos.
Sintaxe
RetAsc(cOri,nTam,lAlfa)
Parmetros
cOri String original a ser convertida.
nTam Tamanho mximo para a converso.
lAlfa Indica se o retorno deve conter letras (.T.) ou somente nmeros
(.F.)
Retorna
cStr Retorna a String formada com letras ou nmeros.
Exemplo
// Exemplo de uso da funcao RetAsc:
// Suponha a existencia de um campo caracter de tamanho
// 2. Usando a funcao RetAsc com o parametro lAlfa ver// dadeiro (.T.) se o numero ultrapassar 99 retornara A0
cCod := StrZero(ProxReg(1,2,1),2)
// Se ultrapassar 99 retorna A0
cCod := RetAsc(cCod,2,.T.)
__Return(cCod)

RetIndex

Tipo: Processamento
Devolve os ndices padres do SIGA.
Sintaxe
RetIndex(cAlias)
Parmetros
cAlias Alias do Arquivo
Retorna
Nmero ndices existentes no SINDEX

GUIA DE REFERNCIA RPIDA AdvPL

Tipo: Processamento
Retorna o nmero obtido pela funo GETSX8NUM no semforo como
pendente. Verifique a funo GETSX8NUM para maiores detalhes.
Sintaxe
RollBackSx8()
Exemplo
Verifique os exemplos na funo GETSX8NUM.

RptStatus

Tipo: Processamento (Apenas Windows)


Executa funo de detalhe do relatrio.
Sintaxe
RptStatus(bBlock) => RptStatus(bBlock, cTtulo, cMsg)
Parmetros
bBlock Bloco de cdigo que define a funo a ser executada.
cTtulo Ttulo do dilogo de processamento.
cMsg Mensagem do dilogo de processamento.
Comentrios
Pode ser utilizada com os parmetros:
RptStatus( { | | Execute(Nome da Funo) } )

Saldo

Tipo: Processamento
Calcula o saldo de uma determinada conta at o perodo informado e na moeda
especificada.
Sintaxe
Saldo(cConta,nPer,nMoeda)
Parmetros
cConta Cdigo da conta desejada.
nPer Perodo contbil at o qual ser feito o clculo.
nMoeda Moeda desejada.

Jomar ( ultima atualizao 04/10 )

27

Retorna
nSld Retorna o Saldo da conta at o perodo desejado.
Exemplo

SaldoSB2

// Exemplo de uso da funcao Saldo:


cConta := SA1->A1_CONTA
nSl := Saldo(cConta,Periodo(dDataBase,2),2)
cSl := Transform(nSl,@E 9,999,999.99")
Alert(O saldo da conta +cConta+ na moeda 2 e: +cSl)
Return

SaldoCC

Tipo: Processamento
Calcula o saldo atual em um determinado centro de custo ou conta (extracontbil).
O arquivo SI3 deve estar posicionado para a obteno dos valores para o clculo.
Sintaxe
SaldoCC(cCC,cConta,nPer,nMoeda)
Parmetros
cCC Centro de Custo desejado
cConta Cdigo da conta
nPer Perodo at o qual o acmulo deve ser calculado
nMoeda Moeda desejada
Retorna
nSld Saldo atual retorna do.
Exemplo
// Exemplo de uso da funcao SaldoCC:
// Assumindo-se que o SI3 esta posicionado, nao e neces// sario informar o centro de custo e a conta.
nSld := SaldoCC(,,12,1)
return

SaldoCusto

Tipo: Processamento
Calcula o saldo dos centro de custos extracontbeis.
Sintaxe
SaldoCusto(cCC1,cCC2,cConta1,cConta2,nMs,nMoeda)
Parmetros
cCC1 Centro de Custo Inicial
cCC2 Centro de Custo Final
cConta1 Conta Inicial
cConta2 Conta Final
nMs Ms (se nula, assume o ms de referncia da database)
nMoeda Moeda (se nula, ser assumido 1)
Exemplo

Tipo: Processamento
Esta funo calcula o saldo atual do produto (do Arquivo SB2), descontando os
valores empenhados, reservados, etc. necessrio que o Arquivo SB2 esteja
posicionado no produto desejado.
Sintaxe
SaldoSB2()
Retorna
nSld Retorna o Saldo do produto calculado.
Exemplo
// Exemplo de uso da funcao SaldoSb2:
cProd := Space(15)
@ 10,10 Get cProd Picture @!
Read
dbSelectArea(SB2)
dbSeek(cProd)
cSld := Transform(SaldoSb2(),@E 9,999,999.99")
Alert(Este produto tem um saldo de: +cSld)
Return

SetDefault
Tipo: Processamento
Habilita os padres definidos pela funo SetPrint.
Sintaxe
SetDefault (aArray, cAlias)
Parmetros
aArray Array aReturn, preenchido pelo SetPrint
[1] Reservado para Formulrio
[2] Reservado para N de Vias
[3] Destinatrio
[4] Formato => 1-Comprimido 2-Normal
[5] Mdia => 1-Disco 2-Impressora
[6] Porta ou Arquivo 1-LPT1... 4-COM1...
[7] Expresso do Filtro
[8] Ordem a ser selecionada
[9]..[10]..[n] Campos a Processar (se houver)
cAlias Alias do arquivo a ser impresso.
Retorna
Nil
Comentrios
Esta funo habilita os padres de relatrio alterados pela funo
SetPrint.

SaldoCusto(1007, 1099, 3, 4, 10, 1)

GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

28

cAlias Alias do Arquivo Principal (se existir)


cNomeRel Nome padro do relatrio
cPerg Nome do grupo de perguntas
cDesc1 ..cDesc4 Descrio do Relatrio
lDic Habilita o Dicionrio de Dados
.T. Habilita (s utilizar em conjunto com a funo ImpCadast)
.F. Desabilita
aOrdem Array contendo as ordens de indexao do arquivo principal.
lComp Habilita a alterao da compresso do relatrio
.T. Habilita
.F. Desabilita
cClass Classificao do Relatrio por Tamanho ( G, M ou P )
P 80 colunas
M 132 colunas
G 220 colunas
Retorna
ExpC Nome do arquivo com o relatrio impresso em disco
opcionalmente alterado pelo usurio
Comentrios
Esta funo possibilita a alterao de determinados padres dos
relatrios. Ela funciona em conjunto com a funo SetDefault.
Exemplo

Exemplo
// Define Variveis
cString:= SB1
NomeRel:= MATR290
cPerg := MTR290
titulo := RELAO PARA ANLISE DOS ESTOQUES
cDesc1 := Este relatrio demonstra a situao de cada item em
cDesc2 := relao ao seu saldo , seu empenho , suas entradas previstas
cDesc3 := e sua classe ABC.
aOrd := { Por Codigo , Por Tipo }
Tamanho := G
// Envia controle para a funo SETPRINT
NomeRel:= SetPrint( cString, NomeRel, cPerg, @titulo, cDesc1, ;
cDesc2, cDesc3, .F., aOrd, .F., Tamanho)
If LastKey() = 27 .or. nLastKey = 27
RestScreen(3,0,24,79,cSavScr1)
Return
Endif
SetDefault(aReturn,cAlias)
If LastKey() = 27 .OR. nLastKey = 27
RestScreen(3,0,24,79,cSavScr1)
Return
Endif

SetDlg

Tipo: Tela Windows


Colocar um ttulo em uma Dialog.
Sintaxe
SetDlg(oWnd, cText)
Parmetros
oWnd Objeto da janela
cText Novo Texto
Exemplo
If ( INCLUI )
cCaption := Inclusao de Pedidos
ElseIf ( ALTERA )
cCaption := Alteracao de Pedidos
EndIf
SetDlg( oDlg, cCaption )

SetPrint

Tipo: Impresso
Altera os padres de impresso.
Sintaxe
SetPrint(cAlias, cNomeRel, cPerg, cDesc1, cDesc2, cDesc3, cDesc4, lDic,
aOrdem, lComp, cClass)

// Define Variveis
cString:= SB1
NomeRel:= MATR290
cPerg := MTR290
titulo := RELAO PARA ANLISE DOS ESTOQUES
cDesc1 := Este relatrio demonstra a situao de cada item em
cDesc2 := relao ao seu saldo , seu empenho , suas entradas previstas
cDesc3 := e sua classe ABC.
aOrd := { Por Codigo , Por Tipo }
Tamanho:= G
// Envia controle para a funo SETPRINT
NomeRel := SetPrint( cString, NomeRel, cPerg, @titulo, cDesc1,;
cDesc2, cDesc3, .F., aOrd, .F., Tamanho )
If LastKey() = 27 .or. nLastKey = 27
RestScreen(3,0,24,79,cSavScr1)
Return
Endif
SetDefault(aReturn,cAlias)
If LastKey() = 27 .OR. nLastKey = 27
RestScreen(3,0,24,79,cSavScr1)
Return
Endif

Parmetros
GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

29

SetRegua

Tipo: Impresso (DOS/ Windows)


Inicializa rgua padro em relatrios.
Sintaxe
SetRegua(nRegs)
Parmetros
nRegs Nmero de registros que sero processados.
Retorno
Nil
Exemplo
DbSelectArea(SA1)
SetRegua(LastRec())
While ( ! Eof() )
@ Li, 001 PSAY SA1->A1_NOME
DbSkip()
IncRegua()
End Do

Comentrio
Ver tambm incRegra.

SldBco
Tipo: Processamento
Retorna o saldo bancrio em uma data.
Sintaxe
SldBco(cBanco,cAgncia,cConta,dData,nMoeda)
Parmetros
cBanco Cdigo do Banco
cAgncia Agncia Bancria
cConta Conta Bancria
dData Data do Saldo
nMoeda Moeda do Saldo Bancrio
Exemplo
SldBco(409,00198,011122, dDataBase,1)

SldCliente
Tipo: Processamento
Retorna o saldo a receber do cliente em uma determinada data.
Sintaxe
SldCliente(cCliente,dData,nMoeda,lSaldo)
Parmetros
cCliente Cdigo do Cliente+Loja
dData Data do Movimento a Receber (padro dDataBase)
nMoeda Moeda
lSaldo Se .T. considera o saldo do SE5 (padro .T.)
Exemplo

SldFornece

Tipo: Processamento
Retorna o saldo a pagar do fornecedor em uma data.
Sintaxe
SldFornece(cFornece,dData,nMoeda,lSaldo)
Parmetros
cFornece Cdigo do Fornecedor+Loja
dData Data do Movimento a Pagar (padro dDataBase)
nMoeda Moeda - (padro 1)
lSaldo Se .T. considera o saldo do SE5 (padro .T.)
Exemplo
SldFornece(00000101")

SldPagar

Tipo: Processamento
Retorna o saldo a pagar em uma determinada data.
Sintaxe
SldPagar(dData,nMoeda,lData)
Parmetros
dData Data do Movimento a Pagar ( padro dDataBase)
nMoeda Moeda (padro 1)
lData Se .T. At a Data, .F. Somente Data (padro .T.)
Exemplo
SldPagar(dDataBase,1,.T.)

SldReceber

Tipo: Processamento
Retorna o saldo a receber em uma data.
Sintaxe
SldReceber(dData,nMoeda,lData)
Parmetros
dData Data do Movimento a Receber.
nMoeda Moeda - default 1
lData .T. - at a Data; .F. - somente Data (o padro .T.)
Exemplo
SldReceber(Data,1,.T.)

SomaContas

Tipo: Processamento
Retorna o saldo acumulado de um grupo de contas, de acordo com a sintaxe
apresentada. Esta funo considera somente contas de classe A analtica
Sintaxe
SomaContas(cLista,nMs,nMoeda)

SldCliente(00000101,dDataBase)
GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

30

Parmetros
cLista Lista de contas, cercada por aspas ().
O separador : (dois pontos) informa intervalo de contas De-At.
O separador , (vrgula) informa separao de contas.
nMs Ms (default ms da database)
nMoeda Moeda (default 1)
Exemplo
SomaContas(11101001,3,1)
Devolve o saldo da conta em questo no ms 3 na moeda 1.

Parmetros
cConta1 Cdigo da conta De
cConta2 Cdigo da conta At
nPerodo Referente ao perodo
nMoeda Moeda desejada para obteno do valor
Exemplo
SomaSaldo(31001,31010,12,1)

SumMovimCC

Tipo: Processamento
Retorna o movimento de um intervalo de centro de custos extracontbeis. Poder
ser`parametrizados tambm um grupo de contas.
Sintaxe
SumMovimCC(cCC1,cCC2,cConta1,cConta2,nMs,nMoeda)
Parmetros
cCC1 do Centro de Custo
cCC2 at Centro de Custo
cConta1 da Conta
cConta2 at a Conta
nMs Ms (default ms da database)
nMoeda Moeda (default 1)
Exemplo

SomaMovim

Tipo: Processamento
Retorna o movimento dentro de um intervalo de contas analticas.
Sintaxe
SomaMovim(cConta1, cConta2, nMs, nMoeda)
Parmetros
cConta1 Cdigo da conta De
cConta2 Cdigo da conta At
nMs Referente ao ms
nMoeda Moeda desejada para obteno do valor
Exemplo
SomaMovim(41304,41305,12,1)

SumMovimCC( 3001,3100,31001,31010,12,1)

Somar

Tipo: Processamento
Faz o somatrio de um arquivo, retornando o valor acumulado de um campo
determinado.
Sintaxe
Somar(cAlias, cCond, cCampo)
Parmetros
cAlias Alias do arquivo
cCond Condio para soma
cCampo Campo a ser somado
Exemplo
Somar(SI1",I1_CLASSE='S' ,I1_SALANT)

Caso o usurio no deseje definir nenhuma condio, a ExpC2 deve ser .T..

SomaSaldo

Tipo: Processamento
Retorna o saldo atual entre um intervalo de contas.
Sintaxe
SomaSaldo(cConta1, cConta2, nPerodo, nMoeda)

GUIA DE REFERNCIA RPIDA AdvPL

Tabela
Tipo: Processamento
Devolve o contedo da tabela de acordo com a chave. Esta funo usada para
a obtencao do contedo de uma determinada tabela, na chave especificada.
Retorna o conteudo, possibilitando inclusive a exibio de um help caso a tabela
no exista.
Sintaxe
Tabela(cTab,cChav,lPrint)
Parmetros
cTab Nmero da tabela a pesquisar (deve ser informado como
caracter).
cChav Chave a pesquisar na tabela informada.
lPrint Indica se deve (.T.) ou no (.F.) exibir o help ou a chave NOTAB
se a tabela no existir.
Retorna
cRet Contedo da tabela na chave especificada. Retorna nulo caso a

tabela no exista ou a chave no seja encontrada.

Jomar ( ultima atualizao 04/10 )

31

Exemplo
// Exemplo de uso da funcao tabela:
// Suponha a existencia da tabela 99 (tabela de
// vendedor x Comissao):
// Chave Conteudo
//
// V0 10
// V1 2.20
// V3 5
// Pode-se fazer um gatilho que, quando da informacao do
// codigo do vendedor no cadastro, sugira o percentual
// da tabela acima, de acordo com as duas primeiras po// sicoes do codigo digitado:
//Gatilho-Dominio : A3_COD
// Cta. Dominio: A3_COMIS
// Regra : Val(Tabela(99,Left(M->A3_COD,2)))

TamSX3

Tipo: Processamento
Retorna o tamanho de um campo no SX3 (dicionrio de dados).
Sintaxe
TamSx3(cCampo)
Parmetros
cCampo Nome do campo.
Retorna
aTam Array com o tamanho e decimais do campo.
Exemplo
// Exemplo de uso da funcao TAMSX3
// Array auxiliar:
aCampos := { {B1_COD ,C},;
{B1_DESC,C},;
{B1_QE ,N},;
{B1_PRV1,N} }
// Cria arquivo de trabalho com o tamanho dos campos
// exatamente como na base de dados, evitando erros de ]
// Data Width Error:
i := 0
aStru := {}
For i:=1 To Len(aCampos)
cCpo := aCampos[i,1]
cTp := aCampos[i,2]
aTam := TamSx3(cCpo)
aAdd(aStru,{cCpo,cTp,aTam[1],aTam[2])
Next i
cArq := CriaTrab(aStru,.T.)
// O programa continua. . .
Return

GUIA DE REFERNCIA RPIDA AdvPL

Texto

Tipo: Processamento
No permite a digitao seguida de mais de um espao em branco, em campo do
tipo Caracter.
Sintaxe
Texto(ExpC)
Parmetros
ExpC1 Expresso a ser verificada
Exemplo
Texto()

@ ...TO

Tipo: Tela
Desenha um box 3d.
Sintaxe
@ nLInha1,nColuna1 TO nLinha2,nColuna2 <TITLE> cTtulo
Parmetros
nLinha1 Nmero da linha superior
nColuna1 Nmero da coluna superior
nLinha2 Nmero da linha inferior
nColuna2 Nmero da coluna inferior
cTtulo Titulo apresentado na linha superior (opcional)
Comentrios
A clusula TITLE opcional. Se for omitida, o box no ter ttulo.
Exemplo
@ 000, 000 TO 430, 500 DIALOG oDlg TITLE Interpretador xBase for Windows
@ 060, 005 TO 185, 245 TITLE Exemplos
@ 070, 010 BUTTON _Objetos B sicos SIZE 70,20 ACTION Execute(BasicObj)
@ 070, 090 BUTTON _Browses SIZE 70,20 ACTION Execute(Browse)
@ 130, 170 BUTTON Dlg c/Refresh SIZE 70,20 ACTION Execute(DlgDinam)
@ 160, 090 BUTTON SQL SIZE 70,20 ACTION Execute(SqlDemo)
@ 192,218 BMPBUTTON TYPE 1 ACTION Close(oDlg)
ACTIVATE DIALOG oDlg CENTERED

TM

Tipo: Processamento
Devolve a Picture de impresso de campos numricos dependendo do espao
disponvel.
Sintaxe
TM(nValor, nEdio, nDec)
Parmetros
nValor Valor a ser editado
nEdio Espao disponvel para edio
nDec Nmero de casas decimais

Jomar ( ultima atualizao 04/10 )

32

Retorna
ExpC1 Picture ideal para edio do valor nValor.
Comentrios
Esta rotina leva em considerao duas variveis:
MV_MILHAR Determina se deve haver separao de milhar;
MV_CENT Nmero de casas decimais padro da moeda corrente.
Para ajustar o valor passado (ExpN1) ao espao disponvel (ExpN2) o programa
verifica se pode haver separao de milhar, neste caso, a rotina eliminar tantos
pontos decimais quantos sejam necessrios ao ajuste do tamanho. Caso no seja
possvel ajustar o valor ao espao dado, ser colocado na picture o caracter de
estouro de campo . O programa tambm ajusta um valor ao nmero de decimais
(ExpN3), sempre imprimindo a quantidade de decimais passados no parmetro.
Exemplo
Cabec(Ttulo,Cabec1,Cabec2,NomeProg,Tamanho,nTipo)
Endif
li:=li+1
nSalAnt := nSaldoAtu-nCompras-nRecProd-nRecCons
@li,00 Say cTipAnt
@li,05 Say nSalAnt Picture TM(nSalAnt, 14)
@li,23 Say nCompras Picture TM(nCompras, 17, 3)

Comentrios
Retorna .T. se ExpC1 estiver vazio.
Exemplo
@ 9,10 Get cCodigo Valid !Vazio(cCodigo)

X3Picture

Tipo: Processamento
Devolve a Picture do campo de acordo com o dicionrio de dados.
Sintaxe
X3Picture(cCampo)
Parmetros
cCampo Nome do campo a verificar a picture.
Retorna
ExpC1 Picture do campo no dicionrio de dados.
Comentrios
Funo geralmente usada para atribuir aos relatrios a efetiva picture de
campos numricos em relatrios.
Exemplo
:
cRel:=SetPrint(cAlias, cPrograma , , @cTitulo, cDesc1, cDesc2, cDesc3 ,
.T., aOrd )
SetDefault(aReturn, cString)
:
While !EOF()
nLinha:=nLinha+1
@nLinha, 1 Say SB2->B2_QATU Picture X3Picture(B2_QATU)

Se o contedo do campo nSalAnt for: 3.423.659.234,48 o valor ser impresso


como: 3423659.234,48

Variao

Tipo: Processamento
Retorna a variao em percentual entre dois valores.
Sintaxe
Variao(nFator1,nFator2)
Parmetros
nFator1 Primeiro fator comparativo
nFator2 Segundo fator comparativo
Exemplo
Variacao(100000,50000)

Vazio

Tipo: Processamento
Verifica se o campo est vazio.
Sintaxe
Vazio(cCampo)
Parmetros
cCampo Campo a verificar
Retorna
ExpL1 Valor Lgico de Retorno (.T. ou .F.)

GUIA DE REFERNCIA RPIDA AdvPL

:
XFilial

Tipo: Processamento
Retorna a filial utilizada por determinado arquivo. Esta funo utilizada para
permitir que pesquisas e consultas em arquivos trabalhem somente com os dados
da filial corrente, dependendo claro se o arquivo est compartilhado ou no
(definio que feita atravs do Mdulo Configurador). importante verificar que
esta funo no tem por objetivo retornar apenas a filial corrente, mas retorn-la
caso o arquivo seja exclusivo. Se o arquivo estiver compartilhado, a funo xFilial
retornar dois espaos em branco.
Sintaxe
xFilial(cAlias)
Parmetros
cAlias Alias do arquivo desejado. Se no for especificado, o arquivo
tratado ser o da rea corrente.
Retorna
cFilArq Retorna a Filial para o arquivo desejado.

Jomar ( ultima atualizao 04/10 )

33

Exemplo

// Exemplo de uso da funcao xFilial:


// Supondo que a filial corrente seja a 01:
@ 10,10 Say xFilial(SB1)
// A linha acima ira imprimir 01 se o arquivo de
// produtos estiver exclusivo. Se estiver compartilhado
// imprimira .
// Usando em processamentos (Pesquisa e processa
// enquanto for a mesma filial):
dbSeek(xFilial()+mv_par01)
While !EOF() .And. xFilial() == SB1->B1_FILIAL
... Processamento
Enddo
Return

Microsiga

Sentido do movimento
de impresso

XMoeda

Tipo: Processamento
Rotina para converso de valores entre moedas.
Sintaxe
xMoeda(nVMo,nMo,nMd,dData,nDec)
Parmetros
nVMo Valor na moeda origem.
nMo Nmero da moeda origem.
nMd Nmero da moeda destino.
dData Data para converso.
nDec Nmero de decimais. Se no informado, assume-se 2 casas decimais.
Retorna
nVMoeda Retorna o Valor na moeda de destino.
Exemplo
// Exemplo de uso da funcao xMoeda:
nVal := SE1->E1_VALOR // Valor na moeda 1
nVM3 := 0 // Contera o valor na moeda 3
nVM3 := xMoeda(nVal,1,3,dDataBase)
Return

Funes para impresso


ZPL,ALLEGRO e ELTRON

de

etiquetas

padro

Visualizao do posicionamento da imagem na etiqueta no padro Zebra


(ZPL,EPL):
(OBS: Alguns modelos de impressoras ELTRON, possuem o alinhamento da folha
de etiqueta centralizado, por isso deve-se considerar o ponto de impresso da
posio+a margem)
GUIA DE REFERNCIA RPIDA AdvPL

Visualizao do posicionamento da imagem na etiqueta no padro Allegro:

Microsiga
X
Sentido do movimento
de impresso

Nota:
Parmetros que estiverem entre [], significa que no so OBRIGATRIOS, os
parmetros que estiverem com (*), significa que so ignorados no padro Allegro
e Eltron.

MSCBPrinter

Tipo: Impresso

Jomar ( ultima atualizao 04/10 )

34

Configura modelo da impressora, sada utilizada, resoluo na impresso


e tamanho da etiqueta a ser impresso.
Parmetros
[ModelPrt] = String com o modelo de impressora:
Zebra: S400, S600, S500-6, Z105S-6, Z16S-6, S300, S500-8,
Z105S-8, Z160S-8, Z140XI, Z90XI e Z170ZI.
Allegro:
ALLEGRO, PRODIGY, DMX e DESTINY.
Eltron:
ELTRON E ARGOX
cPorta
= String com a porta
[nDensidade] = Numero com a densidade referente a quantidade de pixel por
mm
[nTamanho] = Tamanho da etiqueta em Milmetros.
[lSrv]
= Se .t. imprime no server,.f. no client
[nPorta]
= numero da porta de outro server
[cServer] = endereo IP de outro server
[cEnv] = environment do outro server
[nMemoria] = Numero com bloco de memria
Observaes:
O parmetro nDensidade no necessrio informar, pois ModelPrt o
atualizar automaticamente. A utilizao deste parmetro (nDensidade) dever
ser quando no souber o modelo da impressora, a aplicao entendera que se
trata de uma impressora Zebra.
O tamanho da etiqueta ser necessrio quando a mesma no for
continua.
Exemplo
MSCBPRINTER("S500-8", "COM2:9600,e,7,2",NIL, 42)
MSCBPRINTER("S500-8", "LPT1",NIL, 42)
MSCBPRINTER("S600","COM1:9600,N,8,2",NIL,NIL,.T.,1024,"SERVERAP","ENVCODEBASEPORT609")
MSCBPRINTER("S600", "LPT1",NIL, 42,.F.,NIL,NIL,NIL,10240)

MSCBClosePrinter
Tipo: Impresso

Finaliza a conexo com a impressora


Exemplo
MSCBClosePrinter()
GUIA DE REFERNCIA RPIDA AdvPL

MSCBBegin

Tipo: Impresso
Inicializa a montagem da imagem para cada etiqueta
Parmetros
[nQtde] = Quantidade de cpias
[nVeloc] = Velocidade (1,2,3,4,5,6) polegadas por segundo
[nTamanho]= Tamanho da etiqueta em Milmetros.

Exemplo:
MSCBBEGIN(3,4,40)

MSCBEnd

Tipo: Impresso
Finaliza a montagem da imagem
Exemplo
MSCBEND()

MSCBSay

Tipo: Impresso
Imprime uma String
Parmetros
nXmm
= Posio X em Milmetros
nYmm
= Posio Y em Milmetros
cTexto = String a ser impressa
cRotao = String com o tipo de Rotao (N,R,I,B)
N-Normal
R-Cima p/baixo
I-Invertido
B-Baixo p/ Cima
cFonte = String com os tipos de Fonte
Zebra: (A,B,C,D,E,F,G,H,0) 0(zero)- fonte escalar
Allegro: (0,1,2,3,4,5,6,7,8,9) 9 fonte escalar
Eltron: (0,1,2,3,4,5)
cTam
= String com o tamanho da Fonte
*[lReverso]= Imprime em reverso quando tiver sobre um box preto
[lSerial] = Serializa o cdigo
[cIncr] = Incrementa quando for serial positivo ou negativo
*[lZerosL] = Coloca zeros a esquerda no numero serial

Jomar ( ultima atualizao 04/10 )

35

Exemplo
MSCBSAY(15,3,"MICROSIGA ","N","C","018,010",.t.)
MSCBSAY(15,3,"MICROSIGA ","N","C","018,010",.t.,.t.,"3",.t.)

[nLargura] = Largura da barra mais fina em pontos default 3


[nRelacao] = Relao entre as barras finas e grossas em pontos default 2
[lCompacta] = Compacta o cdigo de barra
[lSerial] = Serializa o cdigo
[cIncr] = Incrementa quando for serial positivo ou negativo
*[lZerosL] = Coloca zeros a esquerda no numero serial

MSCBSayBar

Tipo: Impresso
Imprime Cdigo de Barras
Parmetros
nXmm
= Posio X em Milmetros
nYmm
= Posio Y em Milmetros
cConteudo = String a ser impressa
cRotao = String com o tipo de Rotao
cTypePrt = String com o Modelo de Cdigo de Barras
Zebra:
2 - Interleaved 2 of 5
3 - Code 39
8 - EAN 8
E - EAN 13
U - UPC A
9 - UPC E
C - CODE 128
Allegro:
D - Interleaved 2 of 5
A - Code 39
G - EAN 8
F - EAN 13
B - UPC A
C - UPC E
E - CODE 128
Eltron:
2 - Interleaved 2 of 5
3 - Code 39
E80 - EAN 8
E30 - EAN 13
UA0 - UPC A
UE0 - UPC E
1 - CODE 128
[nAltura] = Altura do cdigo de Barras em Milmetros
*[ lDigver] = Imprime dgito de verificao
[lLinha] = Imprime a linha de cdigo
*[lLinBaixo]= Imprime a linha de cdigo acima das barras
[cSubSetIni]= Utilizado no code128
GUIA DE REFERNCIA RPIDA AdvPL

Exemplo
MSCBSAYBAR(20,22,AllTrim(SB1->B1_CODBAR),"N","C",13)

*MSCBSayMemo

Tipo: Impresso
Monta e imprime um campo MEMO
Parmetros
nXmm
= Posio X em Milmetros
nYmm
= Posio Y em Milmetros
nLMemomm = Tamanho da 1 linha do campo memo em Milmetros
nQLinhas = Quantidade de linhas
cTexto = String a ser impressa
cRotao = String com o tipo de Rotao (N,R,I,B)
cFonte = String com o tipo de Fonte (A,B,C,D,E,F,G,H,0)
cTam
= String com o tamanho da Fonte
[lReverso]= lgica se imprime em reverso quando tiver
sobre um box preto
[cAlign] = String com o tipo de Alinhamento do memo
L - Esquerda
R - Direita
C - Centro
J - Margem a margem (justificado)
Exemplo
MSCBSAYMEMO
(1,10,8,4,cTexto,"N","A","9,5",.f.,"C")

MSCBBox

Tipo: Impresso
Imprime um Box
Parmetros
nX1mm
= Posio X1 em Milmetros
nY1mm
= Posio Y1 em Milmetros
nX2mm
= Posio X2 em Milmetros
nY2mm
= Posio Y2 em Milmetros
[nEspessura]= Numero com a espessura em pixel
*[cCor] = String com a Cor Branca ou Preta ("W" ou "B")
Jomar ( ultima atualizao 04/10 )

36

Parmetros
cImagem = nome do arquivo que ser carregado

Exemplo
MSCBBOX(12,01,31,10,37)

Exemplo
MSCBLOADGRF("LOGO.GRF")

MSCBLineH

Tipo: Impresso
Imprime uma linha horizontal

MSCBGrafic

Tipo: Impresso
Imprime grfico que est armazenado na memria da impressora

Parmetros
nX1mm
= Posio X1 em Milmetros
nY1mm
= Posio Y1 em Milmetros
nX2mm
= Posio X2 em Milmetros
[nEspessura]= Numero com a espessura em pixel
*[cCor] = String com a Cor Branca ou Preta ("W" ou "B")

Parmetros
nXmm
= Posio X em Milmetros
nYmm
= Posio Y em Milmetros
cArquivo = Nome do grfico que foi carregado na memria da impressora
(no colocar a extenso .GRF)
*[lReverso]= Imprime em reverso quando tiver sobre um box preto
Exemplo
MSCBGRAFIC(3,3,"LOGO",.t.)

Exemplo
MSCBLineH(01,10,80,3,"B")

MSCBLineV

MSCBChkStatus

Parmetros
nX1mm
= Posio X1 em Milmetros
nY1mm
= Posio Y1 em Milmetros
nY2mm
= Posio X2 em Milmetros
[nEspessura] = Numero com a espessura em pixel
*[cCor]
= String com a Cor Branca ou Preta ("W" ou "B")

Parmetros
[lStatus] = Lgica ativa/desativa o controle

Tipo: Impresso
Imprime uma linha vertical

Tipo: Impresso
Seta ou visualiza o controle de status do sistema com a impressora.

Retorno
Retorna o Status
Com o status ativado, sempre que a aplicao enviar qualquer informao
para a impressora, ser analisado o status, caso esteja com o buffer cheio, sem
papel ou sem ribbon, o sistema aguardara at que os itens anteriores estejam
solucionados.

Exemplo
MSCBLineV(01,10,80,3,"B")

MSCBLoadGrf

Exemplo
MSCBCHKSTATUS(.f.) // desativa a verificao

Tipo: Impresso
Carrega uma imagem para memria da impressora
Observaes
Para o padro Zebra, arquivo do grfico tem que ser do tipo GRF, gerado
atravs de um PCX ou TIF no software fornecido pelo fabricante da zebra.
Para o padro Allegro e Eltron, arquivo do grfico pode ser do tipo BMP,
PCX e IMG. No precisa ser convertido.

MSCBWrite

Tipo: Impresso
Permite enviar para porta uma linha de programao nativa da
Impressora.
Parmetros

GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

37

cConteudo = Linha de programao nativa da impressora.


Exemplo
MSCBWRITE("^FO1,1^GB400,50,25^FS")

Tipos de Fontes para Zebra:

As fontes A,B,C,D,E,F,G,H, so do tipo BITMAPPEDs, tem tamanhos


definidos e podem ser expandidas proporcionalmente as dimenses mnimas.
Exemplo: Fonte do tipo A, 9 X 5 ou 18 x 10 ou 27 X 15
A fonte 0 (Zero) do tipo ESCALAR, esta ser gerada na memria da
impressora, portanto torna-se um processamento lento.

Utilizando as funes: Exemplo padro Allegro.

Tipos de fontes para Allegro:

As fontes 0,1,2,3,4,5,6,7,8, so do tipo BITMAPPEDs, tem tamanho


definido e podem ser expandidos.
Exemplo: Fonte do tipo 1, 1X1 ou 1x2 ou 1x3 ou 2x1 ou 2x2
A fonte 9 (Nove) do tipo ESCALAR, esta ser gerada na memria da
impressora, portanto torna-se um processamento lento, as dimenses deste tipo
de fonte tem que ser passando junto com o tamanho da fonte.
Exemplo. cTam := 001,001,002
\_____/ \_/
| |
| | dimenso da fonte que pode ser de 0 9
| tamanho da fonte

Utilizando as funes: Exemplo padro Zebra.


.
.
.
MSCBPRINTER("S500-8","COM2:9600,e,7,2",,42) //Seta tipo de impressora
padrao ZPL
MSCBLOADGRF("LOGO.GRF") //Carrega o logotipo para impressora
MSCBBEGIN(2,4) //Inicio da Imagem da Etiqueta
//com 2 copias e velocidade 4 etiquetas por polegadas
MSCBBOX(01,01,80,40) //Monta BOX
MSCBBOX(12,01,31.5,10,37)
MSCBGRAFIC(2.3,2.5,"LOGO")
//Posiciona o logotio
MSCBSAY(15,3,"MICROSIGA ","N","C","018,010") //Imprime Texto
MSCBSAY(13,6.5,"SOFTWARE S/A","N","C","018,010")
MSCBLineH(01,10,80)
//Monta Linha Horizontal
MSCBSAY(35,2,"Cdigo Interno","N","B","11,7")
GUIA DE REFERNCIA RPIDA AdvPL

.
.
.
.

MSCBSAY(35,5,SB1->B1_COD,"N","E","28,15")
MSCBSAY(4,12,"Descricao","N","B","11,7")
MSCBSAY(4,16,SB1->B1_DESC,"N","F","26,13")
MSCBLINEH(01,20,80)
MSCBSAYBAR(20,22,AllTrim(SB1->B1_CODBAR),"N","C",13,.f.,.t.,,,3,2,.t.)
//monta cdigo de barras
MSCBEND() //Fim da Imagem da Etiqueta
MSCBCLOSPRINTER()

.
.
.
MSCBPRINTER("ALLEGRO","COM2:9600,N,8,2",,45)
MSCBLOADGRF("d:\ver207\teste.bmp")
MSCBBEGIN (2,3)
MSCBBOX(01,01,75,41,2)
MSCBGRAFIC(3,33,"teste")
MSCBLineH(14,31.7,31,35)
MSCBSAY(16,36," MICROSIGA","N","1","001,002")
MSCBSAY(16,33.5,"SOFTWARE S/A","N","1","001,002")
MSCBLineH(1.6,31,74.4)
MSCBSAY(35,38,"Codigo Interno","N","9","001,001,001")
MSCBSAY(35,35, SB1->B1_COD,"N","2","001,001")
MSCBSAY(3,28,"Descricao","N","9","001,001,001")
MSCBSAY(3,22,SB1->B1_DESC,"N","2","001,001")
MSCBLineH(1.6,20,74.4)
MSCBSAYBAR(15,05,AllTrim(SB1->B1_CODBAR),;
"N","E",11,,.T.,,,3,2,.f.,.t.,"03",)
MSCBEND()
MSCBCLOSPRINTER()
.
.
.

Jomar ( ultima atualizao 04/10 )

38

Utilizando as funes: Exemplo padro Eltron.


.
.
.
MSCBPRINTER("ELTRON","COM2:9600,N,8,2",,)
MSCBLOADGRF("d:\ver207\teste.bmp")
MSCBBEGIN (2,3)
MSCBBOX(01,01,75,41,2)
MSCBGRAFIC(3,33,"teste")
MSCBLineH(14,31.7,31,35)
MSCBSAY(16,36," MICROSIGA","N","1","1,2")
MSCBSAY(16,33.5,"SOFTWARE S/A","N","1","1,2")
MSCBLineH(1.6,31,74.4)
MSCBSAY(35,38,"Codigo Interno","N","9","1,1")
MSCBSAY(35,35, SB1->B1_COD,"N","2","1,1")
MSCBSAY(3,28,"Descricao","N","9","1,1")
MSCBSAY(3,22,SB1->B1_DESC,"N","2","1,1")
MSCBLineH(1.6,20,74.4)
MSCBSAYBAR (15,05,AllTrim(SB1->B1_CODBAR),"N","1",11,,.T.,,,3,2,.f.,.t.,,)
MSCBEND()
MSCBCLOSPRINTER()
.
.
.

COMANDOS PARA TELNET VT100.


@...VTSay
Tipo: TELNET VT100
Exibe dados em uma linha e coluna especificadas

VTClear Screen

Tipo: TELNET VT100


Apaga a tela e coloca o cursor na posio inicial
Sintaxe
VTCLEAR [SCREEN]

@...VTGet

Tipo: TELNET VT100


Cria um novo objeto VTGET e o coloca em exibio na tela
Sintaxe
@ <nLin>, <nCol>
[VTSAY <exp>
[PICTURE <cSayPicture>]]
VTGET <idVar>
[PICTURE <cGetPicture>]
[WHEN <lPreCondicao>]
[VALID <lPosCondicao>]
[PASSWORD]
[F3<tabela>]
Parmetros
<nLin> e <nCol> So as coordenadas de linha e coluna para a operao. Se a
clausula VTSAY est presente, especificam as coordenadas para o VTSAY, e o
VTGET exibido a direita deste.

Sintaxe
@ <nLin>, <nCol>
[VTSAY <exp> [PICTURE <cSayPicture>]]
Parmetros
<nLin> e <nCol> so as coordenadas de linha e coluna da sada.
Os valores de linha podem variar entre zero e VTMAXROW(). O mesmo vale
para as colunas.
VTSAY <exp> exibe o resultado de uma expresso de qualquer tipo.
PICTURE <cSayPicture> define a mascara para a sada de exp.
GUIA DE REFERNCIA RPIDA AdvPL

Exemplo
nQtd :=15.45
cDesc := "Teste descricao"
//
@ 1, 1 VTSAY nQtd PICTURE "@9999.99"
@ 2, 1 VTSAY Teste VTG100
@ 4, 1 VTSAY cDesc PICTURE "@!"

VTSAY exibe o valor de <exp> nas coordenadas especificadas. Caso a


PICTURE <cSayPicture> seja especificada.
VTGET <idVar> define o nome da varivel de qualquer tipo de dados a ser
editada. Ela pode ser caractere, data ou numrica .
PICTURE <cGetPicture> especifica uma mascara para exibio e as regras
para edio do VTGET.
WHEN <lPreCondicao> especifica uma expresso que deve ser satisfeita

Jomar ( ultima atualizao 04/10 )

39

antes do cursor entrar na regio de edio de VTGET. Se <lCondicao> avaliada


como verdadeira (.T.), permitido ao cursor entrar; de outra forma, o VTGET
corrente saltado e o cursor move-se para o prximo VTGET.
VALID <lPosCondicao> especifica uma expresso que deve ser satisfeita
antes que o cursor possa deixar a regio de edio do VTGET
corrente. O
VALID<lPosCondicao> avaliado sempre que o usurio tenta deixar a regio de
edio do VTGET, a menos que a tecla Esc seja pressionada .
Se
<lPosCondicao> retorna falso (.F.), o controle retorna ao VTGET e o usurio
no pode deixa -lo at que <lPosCondicao>
retorne verdadeiro (.T.) ou o
usurio aperte Esc. Um VALID
<lPosCondicao> pode conter ou ser uma
funo definida pelo usurio, permitindo-lhe executar buscas e outros tipos de
operaes de validao.
PASSWORD Monta o VTGET para entrada de dados com * na tela, utilizado
para SENHAS
F3 Associa este VTGET a uma tabela do SXB ou Sx5.
Descrio
Quando um comando VTREAD especificado, um VTGET executa uma edio
do contedo de <idVar> de qualquer tipo de dado. Quando um objeto VTGET
criado, o nome e valor corrente de <idVar> so guardados no objeto VTGET. O
valor de <idVar> fica armazenado no que chamado de buffer do VTGET. O
buffer de VTGET o que realmente mostrado na tela e editado.
Exemplo
#include vt100.ch
nNumber = 0
@ 0, 0 VTSAY "Digite um numero;
VTGET nNumber;
VALID nNumber > 0

VALID respectivo, caso tenha sido


especificada.
O exemplo abaixo define vrios VTGETs e a seguir usa o comando
READ:
#include vt100.ch
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 SAY "Um :" VTGET cVar1 VALID !EMPTY(cVar1)
@ 2, 1 SAY "Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 SAY "Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD

VTSave Screen

Tipo: TELNET VT100


Grava a tela corrente numa varivel
Sintaxe
VTSAVE SCREEN TO <idVar>
Parmetros
TO <idVar> especifica a varivel que sero atribudos os
corrente.
Exemplo
#include vt100.ch
VTSave Screen To aTela
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 SAY " Um :" VTGET cVar1 VALID !EMPTY(cVar1)
@ 2, 1 SAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 SAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
VTRestore Screen From aTela

VTRead

Tipo: TELNET VT100


Ativa edio em tela usando objetos GET
Sintaxe
VTREAD
Descrio
O comando READ executa um mdulo de edio em tela usando todos os
objetos VTGET criados e adicionados.

VTRestore Screen

Dentro de um READ, o usurio pode editar o buffer de cada objeto VTGET


bem como mover-se de um objeto GET para outro. Antes que o usurio possa
entrar com um objeto VTGET, o controle passa para o respectivo WHEN.
Quando o usurio pressiona uma tecla de sada de VTGET, o controle passa

Sintaxe

GUIA DE REFERNCIA RPIDA AdvPL

contedos da tela

Tipo: TELNET VT100


Exibe uma tela guardada

VTRESTORE SCREEN [FROM <aTela>]

Jomar ( ultima atualizao 04/10 )

40

Parmetros
FROM <aTela> especifica uma varivel que contem o contedo da tela a ser
exibida.

#include vt100.ch
@ 7, 1 VTPause Tecle ENTER p/ Continuar

VTSetSize

Tipo: TELNET VT100


Seta o limite da rea de trabalho.

Exemplo
#include vt100.ch
VTSave Screen To aTela
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 SAY " Um :" VTGET cVar1 VALID !EMPTY(cVar1)
@ 2, 1 SAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 SAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
VTRestore Screen From aTela

Sintaxe
VTSETSIZE <nLin>, <nCol>
Parmetros
<nLin> e <nCol> so as coordenadas mximas de linha e coluna.

VTPause

Exemplo
#include vt100.ch
VTSetSize 8,20

Sintaxe
#include vt100.ch
VTPAUSE

VTSet Key

Tipo: TELNET VT100


Suspende a execuo de um programa at que seja pressionada a tecla ENTER

Tipo: TELNET VT100


Atribui a chamada de uma rotina a uma tecla
Sintaxe
VTSET KEY <nCodigoTecla> TO [<idRotina>]

@...VTPause
Tipo: TELNET VT100
Exibe dados em uma linha e coluna especificadas e para a execuo de um
programa at que seja pressionada a tecla ENTER
Sintaxe
@ <nLin>, <nCol>
[VTPAUSE <exp> [PICTURE <cSayPicture>]]

Parmetros
<nCodigoTecla> o valor VTINKEY() da tecla a qual se atribui a rotina.
TO <idRotina> especifica o nome da rotina que executada quando se aperta
uma tecla. Se <idRotina> no especificada, a definio corrente liberada.
Exemplo
Este exemplo demonstra como usar VTSET KEY para invocar uma rotina
quando o usurio aperta. A tecla A.

Parmetros
<nLin> e <nCol> so as coordenadas de linha e coluna da sada.
Os valores de linha podem variar entre zero e VTMAXROW(). O mesmo vale
para as colunas.
VTPAUSE <exp> exibe o resultado de uma expresso de qualquer tipo.
PICTURE <cSayPicture> define a mascara para a sada de exp.

#include vt100.ch
VTSET KEY 65 TO TESTE
CCodigo := space(6)
@ 1, 1 VTGET cCodigo
VTREAD
RETURN

Exemplo

FUNCTION Teste()

GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

41

@ 2,1 VTSay TESTE


RETURN NIL

VTRestore(0,0,4,10,aTela)

VTRestore()

Tipo: TELNET VT100


Exibe uma regio de tela gravada em uma localizao especificada
Sintaxe
RESTSCREEN(<nTopo>, <nEsquerda>,
<nBase>, <nDireita>, <aTela>) --> NIL

FUNCOES PARA TELNET VT100


VTReadVar()

Tipo: TELNET VT100


Retorna o nome da varivel VTGET corrente

Parmetros
<nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as
coordenadas da informao de tela contida em <aTela>.
<aTela> uma varivel contedo o contedo da tela gravada.

Sintaxe
VTREADVAR() --> cNomeVar
Retorna
VTREADVAR() retorna o nome da varivel associada ao objeto VTGET
corrente.

VTSave()

Tipo: TELNET VT100


Grava uma regio de tela para posterior exibio
Sintaxe
VTSAVE (<nTopo>, <nEsquerda>, <nBase>, <nDireita>) --> cTela
Parmetros
<nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as
coordenadas da regio de tela a ser gravada. Caso <nBase> ou
<nDireita> seja maior do que VTMAXROW() ou VTMAXCOL(), a tela
cortada.
Retorna
VTSAVE () retorna a regio de tela especificada na forma de uma
cadeia de caracteres.
Exemplo
#include vt100.ch
aTela := VTSave(0,0,4,10)
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 SAY " Um :" VTGET cVar1 VALID !EMPTY(cVar1)
@ 2, 1 SAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 SAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
GUIA DE REFERNCIA RPIDA AdvPL

Retorna
RESTSCREEN() sempre retorna NIL.
Exemplo
#include vt100.ch
aTela := VTSave(0,0,4,10)
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 SAY " Um :" VTGET cVar1 VALID !EMPTY(cVar1)
@ 2, 1 SAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 SAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
VTRestore(0,0,4,10,aTela)

VTScroll()

Tipo: TELNET VT100


Rola uma regio de tela para cima ou para baixo
Sintaxe
VTSCROLL(<nTopo>, <nEsquerda>,
<nBase>, <nDireita>, <nLinhas>) --> NIL
Parmetros
<nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as coordenadas da
regiao a ser rolada. Valores de linha e coluna podem variar entre 0, 0 e
VTMAXROW(), VTMAXCOL().
<nLinhas> define a quantidade de linhas a serem roladas. Um valor maior do
que zero rola para cima a quantidade especificada de linhas.

Jomar ( ultima atualizao 04/10 )

42

Um valor menor do que zero rola para baixo a quantidade especificada de


linhas. Um valor de zero apaga a rea especificada.
Retorna
VTSCROLL() sempre retorna NIL.

VTLastKey()

Tipo: TELNET VT100


Retorna o valor VTINKEY() da ltima tecla extrada do buffer de teclado
Sintaxe
VTLASTKEY() --> nCodInkey
Retorna
VTLASTKEY() retorna um nmero de -39 a 386 que identifica o valor
VTINKEY() da ltima tecla extrada do buffer de teclado.
Descrio
VTLASTKEY() uma funo de tratamento de teclado que informa o valor
VTINKEY() da ltima tecla capturada do buffer de teclado pela funo VTINKEY(),
ou
por
um
estado
de
espera
como
VTREAD,
VTPAUSE,
VTACHOICE(),VTABROWSE ou VTDBBROWSE. VTLASTKEY() retorna seu
valor corrente
at que outra tecla seja capturada do buffer de teclado.

VTSetKey()

Tipo: TELNET VT100


GUIA DE REFERNCIA RPIDA AdvPL

Sintaxe
VTSETKEY(<nCodInkey>, [<bAao>]) --> bAcaoCorrente
Parmetros
<nCodInkey> o valor INKEY() da tecla a ser associada ou questionada.
<bAcao> especifica o bloco de cdigo a ser automaticamente executado
sempre que a tecla especificada for pressionada durante um estado de espera.

Exemplo
VTSCROLL(0,0, VTMAXROW(),VTMAXCOL,1)

Exemplo
#include vt100.ch
aTela := VTSave(0,0,4,10)
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 SAY " Um :" VTGET cVar1 VALID !EMPTY(cVar1)
@ 2, 1 SAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 SAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
VTRestore(0,0,4,10,aTela)
If VTLastKey() == 27
Return .f.
Endif

Atribui um bloco de ao a uma tecla

Retorna
VTSETKEY() retorna o bloco de ao correntemente associado a tecla
especificada, ou NIL caso a tecla especificada nao esteja associada a um bloco.
Exemplo
#include vt100.ch
bKeyAnt := VTSetKey(65,{|| teste()})
CCodigo := space(6)
@ 1, 1 VTGET cCodigo
VTREAD
VTSetKey(65,bKeyAnt)
RETURN
FUNCTION Teste()
@ 2,1 VTSay TESTE
RETURN NIL

VTKeyBoard()

Tipo: TELNET VT100


Coloca uma cadeia de caracteres (string) no buffer de teclado
Sintaxe
VTKEYBOARD(<cCodigoTecla>)
Parmetros
<cCodigoTecla> o conjunto de caracteres a ser colocado no buffer
teclado.
Exemplo
#include vt100.ch
bKeyAnt := VTSetKey(65,{|| teste()})
CCodigo := space(6)
@ 1, 1 VTGET cCodigo
VTREAD
Jomar ( ultima atualizao 04/10 )

43

de

VTSetKey(65,bKeyAnt)

Extrai um caractere do buffer de teclado

RETURN

Sintaxe

FUNCTION Teste()
@ 2,1 VTSay TESTE
VTKeyBoard(chr(27))
RETURN NIL

VTINKEY([<nSegundos>]) --> nCodInkey


Parmetros
<nSegundos> especifica a quantidade de segundos que VTINKEY() deve
esperar por uma tecla. O valor pode ser especificado em incrementos do
tamanho de at um dcimo de segundo. Se for especificado zero, o programa
para at que uma tecla seja pressionada. Caso <nSegundos>
seja omitido, VTINKEY() no espera por uma tecla.

VTRow()

Tipo: TELNET VT100


Retorna a posio de linha do cursor na tela
Sintaxe
VTROW() --> nLinha
Retorna
VTROW() retorna a posio de linha do cursor na forma de um valor numrico
inteiro. A faixa do valor de retorno varia entre zero e VTMAXROW().
Exemplo
@ 0,0 VTSay Teste
@ VTRow()+1 ,0 VTSay Teste2

Retorna
VTINKEY() retorna um valor numrico inteiro de -39 at 386, que identifica a
tecla extrada do buffer de teclado. Caso o buffer de teclado esteja vazio,
VTINKEY() retorna zero.
Exemplo
While .t.
IF VtInkey(1) == 27 // correspondente a tela ESC
exit
EndIf
End

VTMaxCol()

Tipo: TELNET VT100


Determina a coluna mxima visvel na tela

VTCol()

Tipo: TELNET VT100


Retorna a posio de coluna do cursor na tela

Sintaxe
VTMAXCOL() --> nColuna

Sintaxe
VTCOL() --> nCol
Retorna
VTCOL() retorna um valor numrico inteiro. A faixa do valor de retorno de
zero at VTMAXCOL().
Exemplo
@ 1, 1 VTSAY "Cliente: " + TRIM(Cliente)
@ VTROW(), VTCOL() + 1 VTSAY Status

Retorna
VTMAXCOL() retorna o nmero da coluna visvel mais a direita para fins de
exibio.
Exemplo
@ 1, int(VTMaxCOL()/2) VTSAY *

VTMaxRow()
VTInkey()

Tipo: TELNET VT100


Determina a mxima linha visvel na tela

Tipo: TELNET VT100


GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

44

Sintaxe
VTMAXROW() --> nLinha

Parmetros
<lRev> Se verdadeiro ativa, falso desativa o modo de tela. Caso <lRev> seja
omitido, VTReverso() retorna o modo atual.

Retorna
VTMAXROW() retorna o nmero da ltima linha visvel para fins de exibio.
Descrio
VTMAXROW() uma funo de tratamento de tela que pode ser utilizada para
determinar a m xima linha visvel da tela. Nmeros de linha e coluna
comeam com zero em Clipper.
Exemplo
A seguinte funo definida pelo usurio, TamTela(), utiliza VTMAXROW() e
VTMAXCOL() para retornar um vetor que contm o tamanho da tela corrente:

Retorna
VTREVERSO() retorna o modo atual, verdadeiro que est em reverso, falso
no est em reverso.
Exemplo
#include vt100.ch
lReverso:= VTReverso(.t.)
@ 0,0 VTSay Teste 1
VTReverso(lReverso)
@ 1,0 VTSay Teste 2

FUNCTION TamTela
RETURN { VTMAXROW(), VTMAXCOL() }

VTClearBuffer()

Tipo: TELNET VT100


Limpa o buffer de teclado
Sintaxe

VTBeep()

Tipo: TELNET VT100


Emite um beep
Sintaxe
VTBEEP([<nQtde>]) --> NIL

VTCLEARBUFFER() --> NIL

Parmetros
<nQtde> especifica a quantidade de beep que ser emitido, Caso <nQtde>
seja omitido, VTBEEP() emitira um beep.
Retorna

Retorna
VTCLEARBUFFER() retorna NIL
Exemplo
VTCLEARBUFFER()

VTBEEP() retorna NIL


Exemplo
VTBEEP(3)

VTReverso()

Tipo: TELNET VT100


Ativa ou desativa o modo reverso da tela.
Sintaxe
VTREVERSO([<lRev>]) --> lReverso
GUIA DE REFERNCIA RPIDA AdvPL

VTAlert()

Tipo: TELNET VT100


Mostra uma messagem na tela
Sintaxe
VTALERT(<cMsg>,[<cCaption>],[<lCenter>],[<nSleep>]) nTecla
Parmetros
<cMsg> Mensagem a ser exibida.
<cCaption>Titulo da mensagem
<lCenter> Se verdadeiro centraliza a mensagem conforme o VTSetSize.
Jomar ( ultima atualizao 04/10 )

45

<nSleep> > especifica a quantidade de tempo em milsimo de segundos em a


mensagem permanecera na tela, Caso omito, aguardara que seja digitado Enter
ou ESC.
Retorna

Parmetros
<nTopo>, <nEsquerda> e <nBase>, <nDireita> so as coordenadas do canto
superior esquerdo e canto inferior direito da janela. Valores de linha podem
variar entre zero e VTMAXROW(), e valores de coluna podem variar entre zero e
VTMAXCOL().
<acItensMenu> um vetor que contem as cadeias de caracteres que sero
exibidas como sendo os itens de menu. Cada item de menu ser mais tarde
identificado atravs de sua posio numrica neste vetor.

VTALERT () retorna o cdigo da tecla digitada.


Exemplo

<alItensSelecionaveis> um vetor paralelo de valores lgicos, diretamente


relacionados a <acItensMenu> que especifica os itens de menu que podero ser
selecionados. Os elementos podem ser valores lgicos ou cadeias de
caracteres. Caso o elemento seja uma cadeia de caracteres, ele avaliado
como uma expresso macro que dever retornar um tipo de dado lgico. Em
ambos os casos, um valor de falso (.F.) significa que o item de menu
correspondente no est disponvel, e um valor de verdadeiro (.T.) significa que
est disponvel.

VTAlert(Produto no cadastrado,Aviso,.t.,4000)

VTYesNo()

Tipo: TELNET VT100


Mostra uma messagem a espera de uma confirmao na tela.
Sintaxe
VTYESNO (<cMsg>,[<cCaption>],[<lCenter>]) lConfrime
Parmetros
<cMsg> Mensagem a ser exibida.
<cCaption>Titulo da mensagem
<lCenter> Se verdadeiro centraliza a mensagem conforme o VTSetSize.

<cFuncaoUsuario> o nome de uma funo definida pelo usurio que


executada quando uma tecla no reconhecvel for pressionada. O nome da
funo especificado como uma expresso caractere sem parnteses ou
argumentos. Note que o comportamento de VTACHOICE() afetado pela
presena deste argumento. Consulte o texto abaixo para maiores informaes.
<nItemInicial> a posio ocupada no vetor de <acItensMenu> pelo item que
aparecer em destaque quando o menu for exibido pela primeira vez. Caso voc
especifique um item de menu que no esteja disponvel, ou caso voc no use
argumento algum, o item que aparecer em destaque
ser o primeiro item
selecionvel do vetor.
<lNaoBranco> Se for verdadeiro a opes do menu ser montado conforme o
tamanho da opo desconsiderando os espaos em branco direita e esquerda.
Caso seja negativa ou omitida a opo do menu ser montado conforme a
dimenso da tela do VTACHOICE definida em <nEsquerda> e <nDireita>.

Retorna
VTYESNO () retorna o verdadeiro caso tenha confirmado.
Exemplo
IF ! VTYesNo(Confirma a alteracao,'Atencao ',.T.)
Return .F.
ENDIF

VTAchoice()

Tipo: TELNET VT100


Executa um menu pop-up

<lMsg> Contedo tem que ser NIL, parmetro reservado para implementao
futura.

Sintaxe
VTACHOICE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,
<acItensMenu>, [<alItensSelecionaveis>],
[<cFuncaoUsuario>],[<nItemInicial>], [lNaoBranco] , [<lMsg>],
[<nLinhaJanela>],[<lScroll>]) --> nPosicao

<nLinhaJanela> o nmero da linha da janela na qual o item de menu inicial


aparecer.

GUIA DE REFERNCIA RPIDA AdvPL

Retorna

Jomar ( ultima atualizao 04/10 )

46

VTACHOICE() retorna a posio numrica ocupada pelo item de menu


selecionado no vetor de <acItensMenu>. Se o processo de seleo for
interrompido, VTACHOICE() retorna zero.
Funo de usurio: Da mesma forma que as demais funes de interface
com o usurio, VTACHOICE() aceita uma funo de usurio.
A funo de
usurio especificada quando voc deseja aninhar invocaes da funo
VTACHOICE() para criar menus hierrquicos ou redefinir teclas.
Modos de VTACHOICE()
0-Inativo
1-Tentativa de passar incio da lista
2-Tentativa de passar final da lista
3-Normal
4-tens no selecionados

Valores de Retorno da Funo de Controle de VTACHOICE()


0-Aborta seleo
1-Executa seleo
2-Continua VTACHOICE()
3-Vai para o prximo item cuja primeira letra for a tecla pressionada

Function testectrl(modo,nElem,nElemW)
If modo == 1
VtAlert('Top')
Elseif Modo == 2
VtAlert('Bottom')
Else
If VTLastkey() == 27
VtAlert('sair')
VTBeep(3)
return 0
elseIf VTLastkey() == 13
VtAlert('ok')
GUIA DE REFERNCIA RPIDA AdvPL

VTABrowse()

Tipo: TELNET VT100


Monta um browse com referencia a um array.
Sintaxe
VTABROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,
<aCab>, [<aItens>], [<aSize>],
[<cFuncaoUsuario>],[<nItemInicial>]) --> nPosicao

Aps a funo de usurio ter executado as operaes apropriadas ao modo


VTACHOICE(), ela deve retornar um valor que solicite ao VTACHOICE() executar
uma operao entre o seguinte conjunto de aes:

Exemplo
acMenuItens := {Um,Dois, "-----", Tres}
alSelectableItens := {.T., .T., .F., .T.}
nPosition
:=
VTACHOICE(0,
0,
alSelectableItens,TESTECTRL )

Endif
EndIf
Return 2

VtBeep(1)
return 1

7,

19,

Parmetros
<nTopo>, <nEsquerda> e <nBase>, <nDireita> so as
coordenadas do canto superior esquerdo e canto inferior direito da janela.
Valores de linha podem variar entre zero e VTMAXROW(), e valores de coluna
podem variar entre zero e VTMAXCOL().
<aCab>, um vetor que contem os ttulos das colunas
<aItens>, um vetor que contem os dados a serem mostrados
<aSize> , um vetor que contem o tamanho de cada coluna

acMenuItens,

<cFuncaoUsuario> o nome de uma funo definida pelo usurio que


executada quando uma tecla no reconhecvel for pressionada. O nome da
funo especificado como uma expresso caractere sem parnteses ou
argumentos. Note que o comportamento de VTABROWSE() afetado pela
presena deste argumento. Consulte o texto abaixo para maiores informaes.
<nItemInicial> a posio ocupada no vetor de < aItens > pelo item que
aparecer em destaque quando o menu for exibido pela primeira vez. Caso voc
especifique um item de menu que no esteja disponvel, ou caso voc no use
argumento algum, o item que aparecer em destaque
ser o primeiro item
selecionvel do vetor.
Retorna
VTABROWSE() retorna a posio numrica ocupada pelo item de menu
selecionado no vetor de <aItens>. Se o processo de seleo for interrompido,
VTABROWSE() retorna zero.
Funo de usurio: Utilizada da mesma forma que VTACHOICE.

Jomar ( ultima atualizao 04/10 )

47

Modos de VTABROWSE()
0-Inativo
1-Tentativa de passar incio da lista
2-Tentativa de passar final da lista
3-Normal
4-Itens no selecionados
Aps a funo de usurio ter executado as operaes apropriadas ao modo
VTABROWSE() ela deve retornar um valor que solicite ao VTABROWSE()
executar uma operaao entre o seguinte conjunto de aes:
Valores de Retorno da Funo de Controle de VTABROWSE()
0-Aborta seleo
1-Executa seleo
2-Continua VTABROWSE()
3-Vai para o prximo item cuja primeira letra for a tecla pressionada
Exemplo
#INCLUDE VT100.CH
VTClear
acab :={"Codigo","Cod
","Descricao
","UM"}
aSize := {10,4,20,10}
nPos := 12
aItens :={{"1010 ",10, "DESCRICAO1","UN "},;
{"2010 ",20,"DESCRICAO2","CX "},;
{"2020 ",30,"DESCRICAO3","CX "},;
{"2010 ",40,"DESCRICAO4","CX "},;
{"2020 ",50,"DESCRICAO5","CX "},;
{"3010 ",60,"DESCRICAO6","CX "},;
{"3020 ",70,"DESCRICAO7","CX "},;
{"3030 ",80,"DESCRICAO7","CX "},;
{"3040 ",90,"DESCRICAO7","CX "},;
{"2010 ",40,"DESCRICAO4","CX "},;
{"2020 ",50,"DESCRICAO5","CX "},;
{"3010 ",60,"DESCRICAO6","CX "},;
{"3020 ",70,"DESCRICAO7","CX "},;
{"3030 ",80,"DESCRICAO7","CX "},;
{"3050 ",100,"DESCRICAO7","CX "}}
npos := VTaBrowse(0,0,7,15,aCab,aItens,aSize,'testectrl',nPos)
.
.
.
GUIA DE REFERNCIA RPIDA AdvPL

Function testectrl(modo,nElem,nElemW)
If modo == 1
VtAlert('Top')
Elseif Modo == 2
VtAlert('Bottom')
Else
If VTLastkey() == 27
VtAlert('sair')
VTBeep(3)
return 0
elseIf VTLastkey() == 13
VtAlert('ok')
VtBeep(1)
return 1
Endif
EndIf
Return 2

VTDBBrowse()

Tipo: TELNET VT100


Monta um browse com referencia a uma tabela
Sintaxe
VTDBBROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,<cAlias>,
<aCab>, [<aFields>], [<aSize>], [<cFuncaoUsuario>],[<cTop>],[<cBottom>]) -->
nRecno
Parmetros
<nTopo>, <nEsquerda> e <nBase>, <nDireita> so as
coordenadas do canto superior esquerdo e canto inferior direito da janela.
Valores de linha podem variar entre zero e VTMAXROW(), e valores de coluna
podem variar entre zero e VTMAXCOL().
<cAlias>, uma string com alias da tabela
<aCab>, um vetor que contem os ttulos das colunas
<aFields>, um vetor que contem os campos do alias
<aSize> , um vetor que contem o tamanho de cada coluna
<cFuncaoUsuario> o nome de uma funo definida pelo usurio que
executada quando uma tecla no reconhecvel for pressionada. O nome da
funo especificado como uma expresso caractere sem parnteses ou
argumentos. Note que o comportamento de VTDBBROWSE () afetado pela
presena deste argumento. Consulte o texto abaixo para maiores informaes.
<cTop> string com a condio de validao de top
Jomar ( ultima atualizao 04/10 )

48

<cBottom> string com a condio de validao de Bottom


Retorna
VTDBBROWSE () retorna o recno() Se o processo de seleo for interrompido,
VTDBBROWSE () retorna zero.
Funo de usurio: Utilizada da mesma forma que VTACHOICE e
VTaBROWSE.
Modos de VTDBBROWSE ()
0-Inativo
1-Tentativa de passar incio da lista
2-Tentativa de passar final da lista
3-Normal
4-Itens no selecionados

Sintaxe

TerCls()
Retorna
NIL
Exemplo
TerCls()

TerSay()

Tipo: Microterminal
Escreve no display do microterminal a string especificada pelo parmetro
<cMsg> na linha <nLin> e coluna <nCol>.
Sintaxe

Aps a funo de usurio ter executado as operaes apropriadas ao modo


VTDBBROWSE () ela deve retornar um valor que solicite ao VTDBBROWSE ()
executar uma operao entre o seguinte conjunto de aes:
Valores de Retorno da Funo de Controle de VTDBBROWSE ()
0-Aborta seleo
1-Executa seleo
2-Continua VTDBBROWSE ()
3-Vai para o prximo item cuja primeira letra for a tecla pressionada

TerSay(nLin,nCol,cMsg)

Parmetros
nLin = Linha onde se deseja colocar a mensagem
nCol = Coluna onde se deseja colocar a mensagem
cMsg = Mensagem que se deseja colocar na tela
Retorna
NIL
Exemplo
TerSay(01,00,"Pressione <ENTER> para continuar.")

Exemplo
VtClear
aFields := {"B1_COD","B1_DESC","B1_UM","B1_PICM"}
aSize := {16,20,10,15}
aHeader := {'COD','DESCRICAO ','UM',"% ICM"}

TerInkey()
Tipo: Microterminal
Especifica a quantidade de segundos que TerInkey() deve esperar por
uma tecla. O valor pode ser especificado em incrementos de um segundo. Se for
especificado zero, o programa para ate que uma tecla seja pressionada.

SB1->(DbSeek(xfilial()+'00000000000001'))
ctop:="xFilial('SB1')+'00000000000001'"
cBottom:="xFilial('SB1')+'00000000000002'"
nRecno

Sintaxe

TerInkey([nSegundos])

Parmetros
nSegundos = Numero de segundos a aguardar

FUNCOES PARA MICROTERMINAL.


TerCls()

Tipo: Microterminal
Apaga todos os caracteres existentes na tela no microterminal
preenchendo a tela com espaos em branco.
GUIA DE REFERNCIA RPIDA AdvPL

Retorna
Codigo da Tecla pressionada, se no foi pressionado nada o valor
retornado e' ""
Exemplo

Jomar ( ultima atualizao 04/10 )

49

While !TerEsc()
cTecla := TerInkey(0)
TerSay(01,00,"Tecla Pressionada "+cTecla)
EndDo

Retorna
NIL
Exemplo

TerCBuffer()

Tipo: Microterminal
Libera o buffer de teclado do microterminal, esse comando e' util em
rotinas de interface com o usuario de forma a garantir que as teclas a serem
processadas do buffer do teclado sao apropriadas a atividade corrente e nao
pendentes de uma atividade anterior.
Sintaxe

lDigNome := .T.
cNome := Space(10)
cIdade := Space(02)
TerCls()
TerSay(00,00,"Nome:")
TerGetRead(00,06,@cNome,"XXXXXXXXXX",{||!Empty(cNome)},{||lDigNome})
TerGetRead(00,00,cIdade,"99",{||Val(cIdade)>0})
Observaes
A varivel da entrada de dados deve ser do tipo caracter.

TerCBuffer()
Retorna
Caracteres que estavam pendentes no buffer no teclado do microterminal.
Exemplo
TerCBuffer()
TerSay(01,00,"Pressione qualquer tecla para continuar.")
TerInkey(0)

TerEsc()

Tipo: Microterminal
Verifica se a ultima tecla pressionada no microterminal foi a DEL
(consideramos como equivalente a <ESC> no teclado normal).
Sintaxe
TerEsc()

TerGetRead()

Tipo: Microterminal
Executa uma entrada de dados no microterminal.

Retorna

Sintaxe

Exemplo
TerCls()
While .T.
cNome := Space(10)
TerSay(00,00,"Nome:")
TerGetRead(01,07,@cNome,"XXXXXXXXXX")
If TerEsc()
Exit
EndIf
EndDo
TerCls()
TerSay(01,00,"Finalizando...")

TerGetRead(nLin,nCol,uVar,cPict,[bValid],[bWhen])
Parmetros
nLin
nCol
uVar
cPict

- Linha a se executar a entrada de dados.


- Coluna a se executar a entrada de dados.
- Variavel a se devolver o valor da entrada de dados.
- Picture da entrada de dados, as pictures disponiveis sao:
"X" - Para entrada de caracteres numricos(0-9) e letras (A-Z).
"9" - Para entrada de caracteres numricos(0-9).
"A" - Para entrada de caracteres letra(A-Z).
"*" - Para entrada de caracteres numricos(0-9) e letras (A-Z) mas
exibindo "*" na tela.
"." - Exibe ponto decimal na tela.
"/" - Exibe a barra ("/") na tela.
bValid - Code Block contendo a validao da entrada de dados.
bWhen - Code Block contendo a condio para se executar a entrada de dados.
GUIA DE REFERNCIA RPIDA AdvPL

.T. se a ultima tecla pressionada foi <DEL> ou .F. se no foi

TerBeep()

Tipo: Microterminal
Emite um sinal sonoro pelo buzzer do Microterminal, caso o
microterminal no possua este dispositivo instalado nada acontece.

Jomar ( ultima atualizao 04/10 )

50

Sintaxe

TerCls()
TerRestore(00,00,01,40,cTela)

TerBeep([nVezes])

TerRestore()

Parmetros
nVezes - Numero de sinais sonoros a emitir.

Tipo: Microterminal
Restaura a regio de tela do microterminal gravada pela funo TerSave.

Retorna
NIL
Exemplo

TerBeep(3)
TerBeep()

Sintaxe

// executa 3 sinais sonoros


// executa apenas 1 sinal sonoro

TerNumTer()

Tipo: Microterminal
Retorna o numero do microterminal especificado no Monitor de
microterminais.
Sintaxe

TerNumTer()
Retorna
Numero do microterminal
Exemplo

nTerminal := TerNumTer()
TerSay(00,00,"Terminal : "+StrZero(nTerminal))

TerSave()

Parmetros
nTopo - Linha inicial da regio de tela a ser restaurada.
nEsquerda - Coluna inicial da regio de tela a ser restaurada.
nBase - Linha final da regio de tela a ser restaurada.
nDireita - Coluna final da regio de tela a ser restaurada.
cTela - E' uma cadeia de caracteres que contem a regio
de tela gravada.
Retorna
NIL
Exemplo
TerCls()
TerSay(00,00,"Tela a ser salva.")
cTela := TerSave(00,00,01,40)
TerCls()
TerRestore(00,00,01,40,cTela)

TerPBegin()

Tipo: Microterminal
Grava uma regiao da tela do microterminal para posterior exibio.
Sintaxe
TerSave([nTopo],[nEsquerda],[nBase],[nDireita])
Parmetros
nTopo - Linha inicial da regio de tela a ser gravada.
nEsquerda - Coluna inicial da regio de tela a ser gravada
nBase - Linha final da regio de tela a ser gravada.
nDireita - Coluna final da regio de tela a ser gravada.
Retorna
regiao de tela especificada na forma de cadeia de caracteres.
Exemplo
TerCls()
TerSay(00,00,"Tela a ser salva.")
cTela := TerSave(00,00,01,40)
GUIA DE REFERNCIA RPIDA AdvPL

TerRestore([nTopo],[nEsquerda],[nBase],[nDireita],cTela)

Tipo: Microterminal
Executa funo para inicio de impresso na porta paralela ou serial do
microterminal.
Sintaxe

TerPBegin([nTerm],cSerPar)
Parmetros
nTerm Numero do microterminal a iniciar a impresso, se nada
especificado ser considerado o numero definido no
Microterminais.
cSerPar Informa qual a sada utilizada para impresso,
utilizar a sada SERIAL ou 'P' para se utilizar a sada PARALELA.

for
Monitor de
'S'

para

Retorna
NIL

Jomar ( ultima atualizao 04/10 )

51

Exemplo
TerPBegin(,"S")
TerPrint("Testando a impresso na sada SERIAL")
TerPEnd()
TerPBegin(,"P")
TerPrint("Testando a impresso na sada PARALELA")
TerPEnd()

TerPrint("Testando a impresso na sada SERIAL")


TerPEnd()

TerIsQuit()

TerPrint()

Tipo: Microterminal
Envia a string especificada para a sada de impresso definida pela
funo TerPBegin.
Sintaxe

TerPrint( cString, [lSalta] )


Parmetros
cString - Cadeia de caracteres a enviar para a sada de impresso.
lSalta - Informe .F. para no saltar a linha na impressora aps o envio de cString
ou .T. para que se salte uma linha apos o envio de cString, se no especificado
.T. e' assumido.
Retorna
NIL

Tipo: Microterminal
Funo utilizada em pontos do programa para se verificar se o Monitor
esta
tentando finalizar a aplicao do microterminal, deve ser utilizada em
lugares do programa em que o fechamento da aplicao cause transtornos,
como por exemplo, apos a concluso de uma venda.
Sintaxe
TerIsQuit()
Retorna
.F.
Exemplo
While .T.
TerCls()
TerSay(00,00,"Inicando Venda...")
.
.
.
.

Exemplo

TerPBegin(,"P")
TerPrint("Imprimindo uma linha e saltando para proxima linha")
TerPrint("Imprimindo a linha e nao saltando.",.F.)
// no salta a linha
TerPrint("Continuando da linha anterior.")
TerPEnd()

TerSay(00,00,"Venda Finalizada...")
TerIsQuit()
// caso o monitor esteja finalizando a aplicao somente
//neste ponto a finalizao ser efetuada, garantindo
//assim que a venda seja concluda.
EndDo

TerPEnd()

Tipo: Microterminal
Finaliza impresso iniciada pela funo TerPBegin.
Sintaxe

TerPEnd()

Retorna
NIL
Exemplo
TerPBegin(,"S")
GUIA DE REFERNCIA RPIDA AdvPL

Jomar ( ultima atualizao 04/10 )

52