Escolar Documentos
Profissional Documentos
Cultura Documentos
Definições
1.1. Programação e Linguagens
Programar é escrever um conjunto de instruções para que o computador exe-
cute uma determinada tarefa. É similar a uma norma de procedimentos. Estas ins-
truções podem ser interativas ou fazer parte de um programa. Se interativas, a cada
comando dado pelo usuário provoca uma resposta do computador. Se programados
escreve-se um rol de instruções que serão gravadas em um arquivo, as quais serão
executadas posteriormente, ao se executar o arquivo.
Existem muitas linguagens de programação. Cada uma delas apresentam van-
tagens e são destinadas a rodar em determinadas máquinas e seus respectivos Sis-
temas Operacionais sendo adequadas para uma determinada situação.
As linguagens de programação podem ser interpretadas ou compiladas.
Quando elas são interpretadas a conversão de cada comando para o código
nativo do Hardware é feito no ato de sua execução. Neste caso o interpretador pre-
cisa estar sempre presente na memória do computador. O dBase III Plus é interpre-
tado, assim como o Access.
Já o compilador faz a tradução das instruções escritas pelo programador em
um processo autônomo gerando o que se chama de código objeto ou executável que
é carregado na memória quando de sua execução. A vantagem é que neste caso ele
roda de forma independente, sem a necessidade de um interpretador e além disso
seu processamento é muito mais rápido. É o caso do Clipper, Delphi e do Visual
C++.
Existem também os pré-compiladores que tem como maior objetivo esconder
dos usuários o programa fonte, evitando assim que o mesmo possa alterá-lo ou co-
piá-lo, pois somente o executável é disponibilizado para uso. Neste caso necessita-se
do “Run-Time”, que é um interpretador sem possibilidade de se desenvolver novas
rotinas. Em alguns casos, ainda, o interpretador é embutido no executável. É o caso
do Visual dBase, Visual Object e Clipper.
De qualquer forma, todas as linguagens de programação são similares. É o
que se vê quando se estuda mais detalhadamente cada uma delas.
Campos ou
Colunas Registros
ou Linhas
2. Fluxogramas
Fluxogramas são representações gráficas de algoritmo, onde formas geomé-
tricas diferentes implicam ações (instruções e comandos) distintos.
O algoritmo é a seqüência lógica de alguma atividade ou tarefa. Por exemplo
veja o fragmento de algoritmo abaixo:
1- Armar o despertador
2 - Desligar o despertador
3 - Bocejar
4 - Sacudir a esposa
5 - Sair da Cama
.
.
n – final
CIDS – Curso Interno para o Desenvolvimento do Suporte
Não
Desligar o
Dar-lhe $ 100
despertador
Sim
Casado +
5 anos?
Repetir Não
bocejar
3 vezes
Beijar a
esposa
Sacudir a
esposa
Casado +
1 ano?
Não
Sair da cama
Beijar a
esposa
Sim Está
Acender a luz
escuro?
Ir até o carro
Não
Não Sim
Dirigir-se para
Ir ao banheiro
o escritório
Tomar café
Fim
3. Lógica
Lógica é a ciência que estuda as leis do raciocínio, coerência e do racional. No
âmbito da informática, lógica é um conjunto de técnicas utilizadas para a resolução
de problemas.
Para se obter uma lógica é fundamental:
• Ter bem claro as informações com que se irá trabalhar;
• Se o problema e/ou processo for grande, deve-se dividi-lo em partes menores;
• Ter bem claro os objetivos e resultados que se deseja obter.
Para a elaboração de um programa deve-se considerar fundamen-
talmente os itens acima e ainda trabalhar em etapas:
• Executar um levantamento geral das tarefas a serem programadas, identificando
os objetivos das mesmas.
• Analisar estas tarefas e os problemas decorrentes delas.
• Executar a resolução lógica destas tarefas e dos problemas.
3.2. Fórmulas
Fórmulas são equações que permitirão processar algumas informações para
obter outras. Em matemática, utiliza-se incógnitas e números, sendo que as incógni-
tas são os valores desconhecidos e normalmente são também as respos-
tas/informações que se deseja obter. Os números são as informações conhecidas.
Exemplo:
“Maria comeu duas maçãs e agora restam 3. Quantas maçãs existiam antes ?”
Maças existentes antes = X maçãs
Maria comeu = 2 maçãs
Restam = 3 maçãs
Fórmula:
X maças existentes - 2 maçãs comidas pela Maria = 3 maças restantes
Portanto:
X-2=3
Resolução:
X-2=3;X=3+2;X=5
Outro exemplo:
“Na compra de um determinado produto, sabe-se que o valor do mesmo é de R$
1.000,00, com ICMS de 18% embutido no valor.
1) Qual o Valor do ICMS ?
2) Qual o valor de custo deste produto ?
3) Qual a fórmula a ser adotada se para saber somente o custo do produto ?”
Questão 1: ValorICMS = ValorProduto x AlíquotaICMS
ValorICMS = 1.000,00 * 0.18
ValorICMS = 180,00
Questão 2: CustoProduto = ValorProduto - ValorICMS
CustoProduto = 1.000,00 - 180,00
CIDS – Curso Interno para o Desenvolvimento do Suporte
CustoProduto = 820,00
Questão 3: CustoProduto = ValorProduto - ValorICMS
como Valor ICMS = ValorProduto x AliquotaICMS, por substituição:
CustoProduto = ValorProduto - (ValorProduto x AliquotaICMS)
Não Calcular o
Alíquota = 0 imposto
Sim
Próximo
Processo
Note que o termo Senão, se... (ElseIf) indica que as condições anteriores
não foram atendidas e que para o próximo processo ainda existe outra análise.
Já o tempo Senão (Else) indica que as condições anteriores não foram aten-
didas e que para o próximo processo não será necessária mais nenhuma análise, ou
seja, eqüivale a Se nenhuma das condições anteriores forem atendidas, exe-
cute isto.
ContadorDePA = 0
While estoqueMP > 0
ContadorDePA = ContadorDePA + 1
If ContadorDePA > 10
(dar uma pausa de 10 minustos)
(ContadorDePA = 0)
Loop
EndIf
.
(processo de produção)
.
EndDo
ContadorDePA = 0
While estoqueMP > 0
ContadorDePA = ContadorDePA + 1
If ContadorDePA > 10
(dar uma pausa de 10 minustos)
(ContadorDePA = 0)
Loop
EndIf
4.1. Operadores
Operadores são sinais para determinadas análises e processos. Os operadores abai-
xo são utilizados no RDMAKE:
> maior que < menor que
>= maior ou igual <= menor ou igual
== exatamente igual := atribuição
+ adicionar - diminuir
* multiplicar / dividir
Não utilize os operadores ++, --, +=, -=, etc., pois não são reconhecidos pelo
RDMAKE.
4.2. Variáveis
Variáveis são dados incógnitos que variam durante um processo, ou ainda serão as
respostas que se deseja obter após a execução do processo Elas podem ser do tipo
Numérica, Caracter, Data, Lógica, etc.
Variáveis tipo Numérica são utilizadas para números que sofrerão variações
matemáticas e devem ser representadas com um “n” minúsculo no início. Os valores
são escritos sem a utilização de delimitadores. Por exemplo:
nValor := 1000
Variáveis tipo Caracter são utilizadas para letras, números e outros símbolos.
Devem ser representadas por um “c” minúsculo no início. Seus valores são escritos
utilizando aspas como delimitador. Por exemplo:
cNome := “Microsiga”
CIDS – Curso Interno para o Desenvolvimento do Suporte
cCEP := “02511-000”
Variáveis tipo Data são utilizadas para representar datas. Devem ser repre-
sentadas por um “d” minúsculo no início. Seus valores são escritos com a função
CTOD(“ “). Por exemplo:
dVend := CTOD(“01/10/97”)
Variáveis tipo Lógica são utilizadas para representar o Verdadeiro ou Falso.
Devem ser representadas por um “l” minúsculo no início. Seus valores são escritos
utilizando o ponto como delimitador e podem ser apenas .T. (true = verdadeiro) ou
.F. (false = falso). Por exemplo:
lFimArq := .F.
//===============================================//
// Salva Integridade dados de entrada //
//+-------------------------------------------------------+
//¦ Salva a Integrigade dos dados de entrada ¦
//+-------------------------------------------------------+
cSavScr1 := SaveScreen(3,0,24,79)
cSavCur1 := SetCursor()
cSavRow1 := Row()
cSavCol1 := Col()
cSavCor1 := SetColor("bg+/b,,,")
//+-------------------------------------------------------+
//¦ Define Variaveis ¦
//+-------------------------------------------------------+
Tamanho := "M"
limite := 80
Titulo := "Relatorio Estatistico Faturamento de Vendas"
cDesc1 := "Este programa emite relacao das Notas Fiscais de vendas
dentro do"
cDesc2 := "periodo selecionado, descrevendo por valores ate
1000,00, 2.000,00"
cDesc3 := "e mais de 2.000,00. "
cString := " "
aReturn := { "80 Colunas", 1,"Administracao", 2, 2, 1, "", ""}
nomeprog := "EMP002"
nLastKey := 0
cPerg := "EMP002"
CIDS – Curso Interno para o Desenvolvimento do Suporte
CbCont := 0
Cbtxt := ''
nLin := 80 // contador de linha
m_pag := 1
wnrel := "EMP002"
cSavScr1 := SaveScreen(3,0,24,79)
nSF2 := 0 // numero de indices do SF2
cArqInd := "" // nome do arquivo de indice temporario
cChave := "" // chave do indice temporario
cFiltro := "" // filtro do indice temporario
nTotFat := 0 // total faturado
nT1000 := 0 // total ate 1.000
nT2000 := 0 // total ate 2.000
nTmais := 0 // total mais de 2.000
//+-------------------------------------------------------+
//¦ Variaveis utilizadas para parametros ¦
//¦ mv_par01 Data Emis.NF de ? ¦
//¦ mv_par02 Data Emis.NF ate ? ¦
//+-------------------------------------------------------+
Pergunte(cPerg,.f.)
//+-------------------------------------------------------+
//¦ Envia controle para a funcao SETPRINT ¦
//+-------------------------------------------------------+
wnrel:=SetPrint(cString,wnrel,cPerg,Titulo,cDesc1,cDesc2,cDesc3,.F.,,.T.,"P",.F.
,.F.)
//+--------------------------------------------------+
//¦ Recupera a Integridade dos dados ¦
//+--------------------------------------------------+
RestScreen(3,0,24,79,cSavScr1)
SetCursor(cSavCur1)
DevPos(cSavRow1,cSavCol1)
SetColor(cSavCor1)
Return
Endif
SetDefault(aReturn,cString)
//+--------------------------------------------------+
//¦ Recupera a Integridade dos dados ¦
//+--------------------------------------------------+
RestScreen(3,0,24,79,cSavScr1)
SetCursor(cSavCur1)
DevPos(cSavRow1,cSavCol1)
SetColor(cSavCor1)
Return
Endif
//+-------------------------------------------------------+
//¦ Cabecalhos ¦
//+-------------------------------------------------------+
Régua do cabeça-
lho, de uso padrão Cabec1 := "Valor até até +de"
na Microsiga. Cabec2 := "N.F. Pedido Cliente Vendedor Total 1000 2000 2000"
// XXXXXX XXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX 9.999,99 9.999,99 9.999,99
9.999,99
// 0 1 2 3 4 5 6 7 8
//+---------------------------------------------------------+
//¦ Verifica Caracter de Compactacao ¦
//+---------------------------------------------------------+
//+---------------------------------------------------------+
//¦ Posiciona indices ¦
//+---------------------------------------------------------+
//+---------------------------------------------------------+
//¦ Cria indice temporario ¦
//+---------------------------------------------------------+
dbSelectArea("SF2")
dbSetOrder(1)
cArqInd := CriaTrab(,.F.)
IndRegua("SF2",cArqInd,cChave,,cFiltro,"Selecionando Regis-
tros...")
nSF2 := RetIndex("SF2")
DbSelectArea("SF2")
DbSetIndex(cArqInd)
DbSetOrder(nSF2+1)
//+---------------------------------------------------------+
//¦ Impressao - ate o final do arquivo SF2 ¦
//+---------------------------------------------------------+
dbGoTop()
SetRegua( LastRec() )
While !EOF()
IncRegua()
//+----------------------------------------------------+
//¦ Posiciona Cliente, Vendedor, Itens da NF e TES ¦
//+----------------------------------------------------+
//+----------------------------------------------------+
//¦ Verifica se TES gera duplicata ¦
//+----------------------------------------------------+
//+----------------------------------------------------+
//¦ Cabecalho da listagem ¦
//+----------------------------------------------------+
If nLin > 56
NLin:= Cabec(titulo,cabec1,cabec2,nomeprog,Tamanho,nComp)+1
EndIf
//+----------------------------------------------------+
//¦ Imprime dados ¦
//+----------------------------------------------------+
//+----------------------------------------------------+
//¦ Totalizacoes ¦
//+----------------------------------------------------+
dbSelectArea("SF2")
dbSkip()
nLin:=nLin+1
EndDo
//+---------------------------------------------------------+
//¦ Impressao do rodape ¦
//+---------------------------------------------------------+
Roda(cbcont,cbtxt,Tamanho)
//+---------------------------------------------------------+
//¦ Se impressao em disco, chama Spool ¦
//+---------------------------------------------------------+
If ( aReturn[5] == 1 )
Set Printer TO
DbCommitAll()
OurSpool(wnrel)
EndIf
//+---------------------------------------------------------+
//¦ Libera relatorio para Spool da Rede ¦
//+---------------------------------------------------------+
Ft_Pflush()
//+---------------------------------------------------------+
//¦ Apaga indice temporario ¦
//+---------------------------------------------------------+
DbSelectArea("SF2")
RetIndex("SF2")
DbSetOrder(1)
If !Empty(cArqInd)
Ferase(cArqInd+OrdBagExt())
EndIf
dbSelectArea("SF2")
dbSetOrder(1)
//+---------------------------------------------------------+
//¦ Recupera a Integridade dos dados ¦
//+---------------------------------------------------------+
RestScreen(3,0,24,79,cSavScr1)
SetCursor(cSavCur1)
DevPos(cSavRow1,cSavCol1)
SetColor(cSavCor1)
__Return()
Cadastre as perguntas no arquivo de Perguntas e Respostas (SX1), acrescente
o relatório no menu do SIGAFAT e teste o mesmo.
CIDS – Curso Interno para o Desenvolvimento do Suporte
5. Vetores
Vetor (Array ou Matriz) é um tipo de variável de memória que permite arma-
zenar um conjunto de dados. Assemelha-se às células de uma planilha eletrônica. A
grande vantagem é a velocidade pois os dados estão em memória e a economia do
código de programação.
Um vetor pode ser unidimensional ou multidimensional. Porém, como o vetor
é uma variável de memória, seu tamanho é limitado.
Para facilitar o seu entendimento, veja a representação matemática abaixo de
uma matriz:
Matriz = a b c d
linhas m n k l
w x y z
colu-
Cada letra da Matriz é chamado de elemento da matriz. Para identificar um
elemento, utiliza-se o número da linha e o numero da coluna. Onde houver o cruza-
mento da linha e da coluna estará o elemento a ser identificado.
Exemplo:
Para identificarmos a letra k dentro desta matriz, utilizamos Matriz[2,3] = k
, sendo que o nº 2 representa a 2ª linha, e o número 3 representa a 3ª coluna.
Para sabermos o valor de Matriz[3,2], verifica-se o cruzamento da linha 2
com a coluna 3. Encontramos, portanto a letra x.
Num programa, como exemplo, um vetor pode conter o código de um cliente,
a razão social e a cidade. Veja o exemplo, comparando-se uma matriz matemática
com o vetor de programação:
Matriz = [ 0001 MICROSIGA SAO PAULO 1000,00 01/10/97 ]
aVetor1 := 0001, MICROSIGA, SAO PAULO, 1000,00, 01/10/97
No exemplo, o vetor aVetor1 possui cinco dados. Cada dado é um elemento
do vetor. Este vetor é unidimensional (pois possui apenas uma linha). Note que os
elementos do vetor podem ser de qualquer tipo, ou seja, caracter, numérico, data,
etc.
A variável tipo vetor é representada por um a minúsculo no início. Seus valo-
res são escritos utilizando as chaves como delimitador, sendo que os valores contido
dentro do vetor devem respeitar os delimitadores do tipo de dado respectivo. Para
identificar os elementos, utiliza-se colchetes com o numero da posição do elemento.
Portanto, a maneira correta de escrever o aVetor1 mostrado anteriormente é:
aVetor1 := { “0001”, “MICROSIGA”, “SAO PAULO”, 1000,00, CTOD(“01/10/97”) }
onde,
While !EOF()
AADD( aVend, { SA3->A3_COD, SA3->A3_NOME, 0 } )
dbSkip()
EndDo
CIDS – Curso Interno para o Desenvolvimento do Suporte
// Solicitar Nº da NF
.
.
.
// Armazenar os dados básicos da Nota Fiscal em variáveis
.
.
.
// Iniciar impressora
.
.
.
// Imprimir cabeçalho da NF
.
.
.
// Imprimir dados do destinatário
.
.
.
// Imprimir dados da duplicata
ImpDup( )
// Imprimir impostos
.
.
.
// Imprimir totais
.
.
.
e criar as funções ImpDup, ImpPrd, ImpSer e CalcImp em seguida, separadamente.
Agora veja abaixo o esquema para imprimir um relatório:
.
.
.
While ... (imprimir)
If nLinha > 60
nLinha := 1
.
.
. (comandos para desenhar o cabeçalho)
.
.
nLin := 5
EndIf
@ nLin,000 Say...
Pode-se isolar os comandos para o cabeçalho e montar o programa como segue:
.
.
.
While ... (imprimir)
If nLinha > 60
nLin:=Cabec( )
EndIf
@ nLin,000 Say...
@ nLin,000 Say... (imprimir dados)
@ nLin,000 Say...
dbSkip( )
nLin := nLin + 1
EndDo
.
.
. Lógica e Conceitos Básicos de Programação - 21
No SIGA Advanced, existem muitas funções de usuários disponíveis para
uso, inclusive uma para cabeçalho. As funções permitem que sejam enviadas alguns
parâmetros ( que são informados dentro dos parênteses ) e retornam um resultado.
Um exemplo disso no RDMAKE é a função Cabec( ), a qual possui a seguinte sinta-
xe e retorna a última linha utilizada pelo cabeçalho:
nLin := Cabec( cTitulo, cCabec1, cCabec2, cNomPrg, nLargRelat, nCtrImp )
Já nas funções criadas pelo programador, como no exemplo, não é necessário
enviar parâmetros, pois os dados ficam disponível o tempo todo dentro do programa
RDMAKE assim que são declaradas, inclusive dentro das funções do mesmo progra-
ma.
CIDS – Curso Interno para o Desenvolvimento do Suporte
Para melhor entender os comandos, foi adotado simbologias que fazem indicações conforme segue:
Itálico Indica variáveis ou dados que devem ser substituídos por uma expressão ou valor conforme a necessi-
dade
Negrito É o comando ou função propriamente dito.
[] Indica que o conteúdo do colchetes é opcional, devendo ser usado somente se o programador necessi-
tar. Os colchetes não devem ser digitados.
cExp expressão caractere que deve ser informada pelo programador. Esta expressão deve estar entre aspas.
Por exemplo: SETCOLOR( cExp ) pode ser usada como SETCOLOR( “w/n” )
nExp expressão numérica que deve ser informada pelo programador.
lExp expressão lógica que deve ser informada pelo programador. Esta expressão deve estar entre pontos.
dExp expressão em forma de data que deve ser informada pelo programador. Por exemplo: a função DAY(
dExp ) pode ser usada como DAY( CTOD(“01/01/80”) ) ou como DAY( dNascim ).
aExp expressão de vetor que deve ser informada pelo programador.
xExp expressão de qualquer tipo que deve ser informada pelo usuário. Esta expressão pode ser também uma
outra função, ou ainda vários argumentos, como condições e comparações.
nLin expressão numérica relativa ao nº da linha que deve ser informada pelo programador. Quando ocorrer
nLin1,nCol1,nLin2,nCol2 significa que deve-se especificar duas coordenadas para determinar uma área
retangular. nLin1,nCol1 indicam o canto superior esquerdo e nLin2,nCol2 indicam o canto inferior direito.
nCol expressão numérica relativa ao nº da coluna que deve ser informada pelo programador.
ALIAS expressão relativa ao nome do Banco de Dados que deve ser informada pelo programador.
#define K_... nExp
Por ocasião da compilação, toda ocorrencia da expressão K_... será convertida para a expressão declarada em nExp.
A expressão K_... são as existentes no arquivo inkey.ch.
PCol()
Retorna o número da coluna em que a cabeça de impressão da impressora está posicionada. Veja também a função
PRow().
Retorna o número da linha em que a cabeça de impressão da impressora está posicionada. Veja também a função
PCol().
__Return( [Exp] )
Encerra uma função/programa, retornando o valor especificado em Exp. Veja também o co-
mando Return.
Adiciona um dado em um vetor. aExp1 deve ser substituída pelo vetor que receberá o dado. Exp2 é o dado que será
adicionado no vetor, que pode ser qualquer tipo de dado.
Alias( [ nExp ] )
Retorna o Alias do banco de dados que estiver aberto na área especificada por nExp. Se não for usado nExp, será
retornado o Alias da área atual.
AllTrim( cExp )
Elimina os espaços em branco no início e no fim da expressão cExp. Veja também as funções LTrim() e RTrim().
Pesquisa no vetor especificado em aExp1 a existência do dado especificado em Exp2, retornando o número do ele-
mento ou zero se o dado não for encontrado. nExp3 indica por qual elemento deve-se iniciar a pesquisa; se não for
especificado será considerado o primeiro elemento do vetor. nExp4 indica quantos elementos devem ser pesquisa-
dos; se não for especificado, será considerado todos os elementos do vetor.
BOF()
Verifica se o ponteiro do banco de dados da área atual esta no início do arquivo. Se estiver, a função retornará .T.,
caso contrário retornará .F.. BOF significa begin of file, ou seja, início do arquivo.
Col()
Retorna a coluna atual do cursor na tela. Esta função é muito usada com a função Row().
Cria um arquivo de banco de dados temporário retornando um nome para ele, ou simplesmente retorna um nome
para um arquivo qualquer. Para criar um arquivo de banco de dados deve-se informar a expressão aExp que é um
vetor multidimensional com as estruturas dos campos ( a coluna 1 é o nome do campo, a coluna 2 o tipo, a coluna 3 o
tamanho e a coluna 4 as casas decimais) e a expressão lExp deve ser .T. Para se obter apenas um nome não infor-
me aExp e lExp deve ser .F.
CTOD( cExp )
Converte o formato caractere da expressão especificada para o formato data. A expressão caractere que deve ser
informada deve estar montada como se fosse uma data, por exemplo: CTOD( “01/01/90” ), CTOD( “1/1/1990” ),
CTOD( SPACE(8) ).
dbGoBottom()
Move o ponteiro do banco de dados da área atual para o último registro, respeitando o índice ativo se houver.
dbGoTo( nExp )
Move o ponteiro do banco de dados da área atual para o registro cujo numero interno é o especificado em nExp. O
número interno corresponde a posição seqüencial que o registro foi incluído no banco de dados. Os índices não tem
ação sobre este numero interno.
dbGoTop()
dbSeek( Exp )
Pesquisa todo o banco de dados posicionando o ponteiro no primeiro registro cujo valor seja igual a expressão espe-
cificada. Este comando só funciona em bancos de dados abertos e com o índice ativo. Ele executa a pesquisa tam-
bém somente no campo chave, ou seja, aquele que determina a seqüência do índice ativo. Esta função retorna .T. se
o registro foi localizado ou .F. se o registro não foi localizado. Caso o registro não foi localizado, o ponteiro do banco
de dados será posicionado no fim do arquivo, ou seja, na posição EOF (vide o comando EOF() )
dbSelectArea( cExp )
A área em que estiver o banco de dados especificado em cExp será a área atual. cExp deverá ser o ALIAS do banco
de dados.
dbSetIndex( cExp )
dbSetOrder( nExp )
Determina qual índice deve estar ativo na área atual. Um banco de dados pode ter vários índices e todos podem estar
abertos simultaneamente. Porém somente um índice estará ativo por vez. Para determinar o índice ativo o seu núme-
ro deve ser especificado em nExp. O número do índice depende de quando ele foi aberto. O primeiro índice aberto na
área atual será o índice 1; o segundo índice aberto na área atual será o 2; e assim por diante.
dbSkip( [ nExp ] )
Move o ponteiro do banco de dados nExp para frente ou para traz. Se nExp não for especificado, será movido 1 regis-
tro para frente. Se nExp for um número negativo, o ponteiro será movido para traz.
DevPos( nLin,nCol )
DTOC( dExp )
Retorna a data especificada no formato aaaammdd. Esse formato é útil quando necessita-se criar uma chave de índi-
ce cujo conteúdo é uma data junto com caracteres.
Empty( Var )
Verifica se a variável especificada possui algum valor ou não. Se a variável possuir valor, será retornado .T., se não
possuir será retornado .F. A variável pode ser de qualquer tipo, inclusive campo de banco de dados.
EOF()
Verifica se o ponteiro do banco de dados está no fim do arquivo ou não. Se estiver será retornado .T., se não estiver
será retornado .F. EOF significa end of file, ou seja, fim do arquivo.
Exit
Interrompe o loop While ... EndDo, sendo que o processamento será continuado a partir da linha seguinte ao coman-
do EndDo. (veja o comando While).
FErase( cExp )
Provoca um loop (execução de um grupo de programas mais de uma vez) entre o comando For e o comando Next.
Var é uma variável que terá um valor inicial especificado em nExp1. Esse valor irá progredindo até que tenha o valor
idêntico a nExp2, quando então o loop será encerrado. Se não for especificado Step a progressão de nExp1 será de
1 em 1. Caso contrario, a progressão será conforme especificado em nExp3.
Ft_Pflush( )
GetMv( cExp )
Retorna o conteúdo do parâmetro descrito em cExp. Os parâmetros são cadastrados através do módulo SigaCFG.
Help( ,1,cExp )
Monta uma janela de Help em nível de campo. cExp é um título para o Help.
Esta estrutura avalia uma condição em Exp1 para executar os comandos logo abaixo. O ELSEIF é uma segunda
condição, caso necessário, e pode ser usada várias vezes. O ELSE faz com que os comandos logo abaixo sejam
executados caso nenhuma das condições anteriores forem aceitas. O ENDIF encerra a estrutura.
IncRegua( )
Incrementa a régua de processamento, utilizada na impressão de relatórios. Esta função trabalha em conjunto com a
função SetRegua( ).
IndexOrd()
Retorna o número do índice ativo do banco de dados da área atual. O número do índice depende da seqüência com
que os índices foram abertos. Veja a função dbSetIndex( ) e dbSetOrder( ).
Inkey( [ nExp ] )
Para a execução do programa até que uma tecla seja pressionada ou durante um determinado tempo. O tempo deve
ser especificado em nExp. Se não for especificado, nExp será considerado como 0 (zero), ou seja, por tempo inde-
terminado. Se nExp for especificado como 0.5, será considerado meio segundo. Se for especificado como 1, será
considerado 1 segundo, e assim por diante.
Esta função retorna o código ASCII da tecla pressionada para que a execução do programa continue.
LastRec( )
Len( Exp )
Retorna a quantidade de dígitos se Exp for uma expressão caractere ou numérica, contando inclusive os espaços em
branco e zeros. Se Exp for um vetor, retorna a quantidade de elementos que ele possuir.
Loop
Faz com que o Loop do tipo While seja reiniciado a partir da linha onde é iniciado (que possui o próprio comando
WHILE).
OurSpool( cExp )
Chama o spool de impressão. Deve ser chamada quando o quinto elemento de aReturn for igual a 1 (Disco), ou seja,
a impressão for direcionada para disco. O vetor aReturn é montado quando da chamada da função SetPrint( ).
Carrega os parâmetros de perguntas correspondente ao programa especificado em cExp, a qual é o nome do Grupo
de Perguntas, que devem serem especificadas no arquivo SX1. Se lExp for .T., uma janela com as perguntas será
exibida em tela, independente do comando do usuário. Se lExp for .F., a janela não será apresentada.
Pict Exp
Este comando é um argumento que deve ser usado com o comando Say ou com o comando Get e determina uma
máscara na expressão desses comandos. Exp é o formato da máscara que pode ser usado, que são:
“” Determina o espaço ocupado pela variável. O espaço ocupado será o mesmo que o numero de es-
paços dentro das aspas.
“!” Além de determinar o espaço ocupado pela variável, o dado será convertido para maiúsculo. Use !
para cada dígito que queira converter para maiúsculo. Pode ser usado também o ! junto com espa-
ços (por exemplo “!!! “
“@!” Faz com que todos os dígitos da variável sejam convertidos para maiúsculo.
“@E” é usado para que o valor fique no formato europeu, com pontos nas casas de milhar e vírgulas na
casa decimal.
“#,###.##” é usado para colocar o separador de milhar. O espaço ocupado pelo dado será o mesmo que o nú-
mero de #. A quantidade de # é indeterminada, podendo ser maior ou menor que a especificada nes-
te exemplo.
“@E #,###.##” é uma combinação dos comandos “@E” e “#,###.##”. Note que apesar de ser especificado a vírgula
na casa da milhar e o ponto na casa decimal, o dado ao ser exibido na tela ou na impressora estará
no formato europeu.
Read
Recno( )
Replicate( cExp1,nExp2 )
Retorna uma expressão cujo o conteúdo será o mesmo que especificado em cExp1, sendo que esta expressão será
repetida nExp2 vezes. Por exemplo: Replicate( “x”,10 ) retorna “xxxxxxxxxx”.
RestScreen( nLin1,nCol1,nLin2,nCol2,Var )
Restaura um tela previamente gravada com a função SaveScreen( ) nas coordenadas especificadas. Veja a função
SaveScreen( ).
RetIndex( cExp )
Return
Retorna para a função/programa anterior, exatamente para linha seguinte àquela que acionou a função atual.
Roda( 0, “ ”, cExp )
CIDS – Curso Interno para o Desenvolvimento do Suporte
Imprime o rodapé de relatório padrão do SigaAdvanced. cExp é o tipo do relatório (P pra pequeno, M para Médio e G
para Grande)
Row( )
Retorna o número da linha da tela em que o cursor está posicionado. Veja o comando Col().
SaveScreen( nLin1,nCol1,nLin2,nCol2 )
Esta função retorna para uma variável caracter o conteúdo da tela dentro das coordenadas informadas. A tela poderá
ser restaurada com o uso da função RestScreen( ), na qual deve-se especificar a mesma variável utilizada para ar-
mazenar o conteúdo do retorno desta função. Veja a função RestScreen( ).
SetColor( [ cExp ] )
Ativa cores para vídeo conforme os códigos especificados em cExp. Se cExp não for especificado, esta função retor-
nará uma expressão contendo os códigos das cores atualmente em uso.
Preta N Cinza N+
SetCursor( nExp )
Ajusta o formado e tamanho do cursor. nExp deverá ser um código conforme a tabela abaixo:
Nenhum ( ) 0 SC_NONE
Sublinhado ( _ ) 1 SC_NORMAL
* Obs.: as constantes poderão ser usadas no lugar do código se for especificado o respectivo #define no início do
programa.
SetDefault( aExp,cExp )
Habilita os padrões para impressão que são definidos pela função SetPrint( ). aExp é o vetor aReturn que é montado
pela função SetPrint( ) e cExp é o alias do arquivo a ser impresso.
SetPrint( cExp1, cExp2, cExp3, cExp4, cExp5, cExp6, cExp7, lExp8,,Exp9,cExp10, lExp11, lExp12, IExp13 )
Permite ajustar os padrões dos relatórios. Esta função trabalha em conjunto com a função SetDefault( ). Ela retorna o
nome do arquivo gerado em disco, caso seja solicitado este arquivo pelo usuário. Ao ser executada, SetPrint( ) mon-
ta o vetor aReturn. Os parâmetros são:
SetRegua( nExp )
Configura a régua padrão de processamento dos relatórios do SigaAdvanced. nExp corresponde ao total de dados
(linhas, registros) a serem impresso. Esta função trabalha em conjunto com a função IncRegua( ).
Space( nExp )
Retorna uma variável com espaços em branco. A quantidade de espaços em branco é especificada pelo número em
nExp.
Retorna uma parte da expressão cExp1. A parte de cExp1 considerada para retorno começará na posição de nExp2 e
terminará até que atinja o tamanho especificado em nExp3. Se nExp3 não for especificada, será considerado o resto
final de cExp1. Por exemplo:
Transform( cExp1,cExp2 )
Transforma o dado especificado em cExp1 em um formato genérico e com a máscara utilizada em cEsp2. As másca-
ras possíveis de serem utilizadas são as mesmas do comando Pict.
Valid Exp
Este comando deve ser usado junto com o comando @...Get ou com @...Say...Get. O Valid determina se a entrada
obtida no comando Get é válida ou não. Exp deve ser substituída por uma comparação ou por uma função de usuá-
rio. Se for usado a função de usuário, ela deve retornar .T. se a entrada for válida ou .F. se a entrada não for válida.
Este comando deve ser usado junto com o comando @...Get ou com @...Say...Get. O When configura se o comando
Get deve ou não ser realmente executado. Exp deve ser substituída por uma comparação ou por uma função de usu-
ário. Se for usado a função de usuário, ela deve retornar .T. se a o Get tiver que ser executado ou .F. se não tiver que
ser executado.
While cExp
comandos
[ Loop ]
[comandos]
[ Exit ]
[comandos]
EndDo
Provoca um loop (faz com que os comandos existentes entre While e EndDo sejam executados várias vezes). cExp é
uma comparação ou uma função de usuário (que deverá retornar .T. ou .F.) que determinarão se o loop deve ser
executado e até quando. O comando Loop provoca um reinicio do loop (veja o comando). O comando Exit provoca a
interrupção do loop (veja o comando). E o comando EndDo determina onde o termina o conjunto de comandos que
pertencem ao loop.