Sie sind auf Seite 1von 324

─────────────────────────────────────────────────────────────────────────

DATAFLEX 2.3b Linguagem de Quarta Geração


─────────────────────────────────────────────────────────────────────────

DATAFLEX 2.3b – for Ms-Dos

Dataflex é o mais versátil e compreensivel Sistema de Gerenciamento deBanco


de Dados que há no mercado.

É uma ferramenta poderosa para a geração de aplicações tanto para um


programador profissional como para um leigo, pois ele é dirigido através
de um sistema de menus.

Dataflex é a solução ideal para problemas de manipulação de dados com


ampla variedade de sistemas tanto para monousuários como para
multiusuários.

Com rotinas pré-desenvolvidas, um vasto número de comandos e facilidades


fornecidas pela sua estrutura. Dataflex livra você do tédio da
programação e possibilita que seu êxito seja a finalização da aplicação
e não o alívio de terminar mais um programa com sucesso.

Comparando o Dataflex 2.3b, passo a passo, suas facilidades de uso, com


outros sistemas desenvolvidos, veremos rapidamente por que o Dataflex é
a melhor escolha em termos de Sistema Gerenciadores de Banco de Dados e
Sistemas Geradores de Aplicação.

Com o Dataflex você não necessita de módulos extras, pois conta com um
sistema completo em mãos. Todas as ferramentas e utilitários estão em um
único e compacto bloco de programas e utilitários, como:

- Gerenciador de Banco de Dados Relacional;

- Linguagem de 4ª geração, expandível com macrocomandos;

- Gerador de relatórios e entradas de dados automático;

- Query para a geração imediata de relatórios individualizados com nove


níveis de seleção;

- Compilador de programas;

- Teclas de função redefiníveis em tempo de programação;

- Editor de textos;

- Indexação de acesso seqüencial.

( Data Access Corporation (USA) Intercomp (SP)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 1


┌───────────────────────────────────────────────┐
│NESPECIFICAÇÕES TÉCNICAS DO DATAFLEX VERSÃO 2.3│
└───────────────────────────────────────────────┘

- Gerador de banco de dados;


- Gerador de programas de manutenção;
- Gerador de relatórios;
- Gerador de Menus;
- Banco de dados relacional;
- Linguagem de programação;
- Editor de texto;
- Compilador Dataflex;
- Programação de teclas (Flex-Keys) (ESC, F1, F2, F3 ... F10);
- Funções matemáticas;
- Comandos gráficos;

┌─────────────────────────────────┐
│SISTEMAS OPERACIONAIS COMPATÍVEIS│
└─────────────────────────────────┘

- MS-DOS
- Unix
- Xenix
- Novell
- Vax
- Vms
- PC et

- outros

┌─────────────────────────────────────┐
│ESPECIFICAÇÕES DO HARDWARE E SOFTWARE│
└─────────────────────────────────────┘

- Configuração mínima RAM :384 Kb


- Linguagem em que foi desenvolvido :Linguacem C
- Número máximo de banco de dados :250
- Bancos de dados abertos simultâneos : limitado a RAM do computador
- τndices por bancos de dados :9 τndeces on-line, máx. 6 seg.
- Tamanho máximo do banco de dados :2,147 Gigabytes
- Número máximo de registros :16.777.215
- Número de campos por registro :255
- Número máximo de janelas :255
- Tamanho máximo do registro :16 Kilobytes
- Número de linhas por programa :32.000 (limitado a mem. RAM)
- Tamanho máximo da linha :255 caracteres
- Número máximo de páginas por programa:255
- Número máximo de janelas por programa:2.900 (limitado a mem. RAM)
- Número máximo de indicadores :89 mais 38 pré-difinidos
- Número máximo de variáveis :32.767 (limitado a mem. RAM)
- Número máximo de variáveis inteiras : 256
- Precisão numérica :8 casas decimais
- Número de FLex-Keys :22 , 16 reprogramáveis
- Níveis de quebra em relatórios :9 globais
- Tipo de banco de dados :compactado, acesso randômico,
tamanho fixo
- Tipo de programas : protegido semicompilado

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 2


┌───────────────────────────────┐
│TECLAS ESPECIAIS E SUAS FUNÇÕES│
└───────────────────────────────┘
┌───────┬───────────────────┬───────────────────┐
│ TECLA │ FUNÇÕES │ FLEX-KEY (ROTINA) │
├───────┼───────────────────┼───────────────────┤
│ F1 │ Help, socorro │ KEY.HELP │
│ F2 │ Janela anterior │ KEY.FIELD │
│ F3 │ Super pesquisa │ KEY.SFIND │
│ F4 │ Imprime tela │ KEY.PRINT │
│ F5 │ Calculadora │ │
│ F6 │ Exclui registro │ KEY.DELETE │
│ F7 │ Para ser defenida │ KEY.USER │
│ F8 │ Para ser definida │ KEY.USER2 │
│ F9 │ Limpa a tela │ KEY.CLEAR │
│ F10 │ Grava o registro │ KEY.SAVE │
│ TAB │ Pesquisa normal │ KEY.FIND │
│ PgUp │ Registro anterior │ KEY.PREVIOUS │
│ PgDn │ Registro posterior│ KEY.NEXT │
│ Esc │ Cancela o programa│ KEY.ESCAPE │
│ Enter │ Introduz os dados │ KEY.RETURN │
│ │ Seta para cima │ KEY.UP │
│ │ Seta para baixo │ KEY.DOWN │
│ │ Seta para direita │ KEY.RIGHT │
│ │ Seta para esquerda│ KEY.LEFT │
└───────┴───────────────────┴───────────────────┘

┌────────────────────────────┐
│UTILITÂRIOS DO DATAFLEX 2.3b│
└────────────────────────────┘

DFSETUP.EXE : Configura o Dataflex.


FLEX.EXE : Executa menu principal do Dataflex.
DFRUN.EXE : Módulo de execução do Run-time.
DFAUTO.EXE : Cria aplicação a partir de uma imagem.
DFQUERY.EXE : Gerador de relatórios e programa-relatório fonte etc.
DFEDIT.EXE : Editor de textos do Dataflex.
DFCOMP.EXE : Compilador dos programas.
DFPACK.EXE : Compactador do arquivo FMAC.
DFFILE.EXE : Gerador de banco de dados, definir, alterar estrutura.
DFINDEX.EXE : Reorganizador de arquivos.
DBCONV.FLX : Converte uma estrutura dBASE III Plus p/ Dataflex.
DIFGRAVA.FLX : Grava arquivo texto no formato DIF.
DIFLE.FLX : Grava regs em banco Dataflex de um arquivo DIF.
ENTERDEF.FLX : Gera programa fonte através de um arq. com ext. .DEF.
FDTAG.FLX : Gera arquivo .TAG de um arquivo .FD.
FLEXERRS.FLX : Permite incluir, alterar, excluir mensagens de erros.
MAIL.FLX : Gera um programa fonte de emissão de etiquetas.
MENU.FLX : Carrega todos os registros de menus gravados.
MENUDEF.FLX : Pemite incluir, alterar e excluir menus cadastrados.
MENULIST.FLX : Lista no dispositivo de saída todos os menus cadastrados.
MOVEDADOS.FLX : Gera um programa fonte para movimentar dados.
PRINTER.FLX : Permite selecionar um padrão de impressão.
NREAD.FLX : Gerador de programas fontes de importação de dados.
CLEANUP.FLX : Recupera um arquivo .BAD com registros duplicados.
DELQUERY.FLX : Permite selecionar e excluir um formato de relatório.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 3


┌────────────────────────┐
│INDICADORES PRÉDIFINIDOS│
└────────────────────────┘

[ENT$PERMISSIVE]
Quando verdadeiro, pode-se alterar o conteúdo dos campos de ligação de
arquivos relacionais.

[ERR]
Verdadeiro quando ocorrer um status de erro de operação.

[FINDERR]
Verdadeiro quando ocorrer uma pesquisa malsucedida.

[FOUND]
Verdadeiro quando ocorrer uma pesquisa bem-sucedida.

[ROTINA FLEX-KEY]
Verdadeiro se uma das teclas especiais for pressionada.

[KEYPRESS]
Verdadeiro estabelecido pelo comando KEYCHECK quando uma tecla é pressionada
durante a execução de um programa.

[MULTIUSER]
Verdadeiro se o sistema é multiusuário.

[PAGEBREAK]
Verdadeiro estabelecido pelo comando PAGECHECK quando ocorrer uma quebra
de página dentro de uma macro report.

[SEQEOF]
Verdadeiro quando ocorrer a leitura do final de um aquivo texto sequencial.

[SEQEOL]
Verdadeiro quando ocorrer a leitura do final de um aquivo sequencial.

[SELECT]
Verdadeiro estabelecido pelo comando INDICATE SELECT quando um registro
satisfaz o critério de seleção em um relatório, usando a macro report.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 4


┌──────────────────────┐
│VARIÂVEIS PRÉDEFINIDAS│
└──────────────────────┘

CHART$COLOR
Contém um código de cor pelo qual estabelece uma cor para eixos e os valores
de um gráfico.

CURRENT_IMAGE
Contém o número da imagem que está ativa no momento.

CURRENT_WINDOW
Contém o número da última janela manipulada no programa.

ERRLINE
Contém o número da última linha na qual ocorreu um erro de operação.

FILENUMBER
Contém o número do último arquivo manipulado pelo comando FILELIST ou

FILELIST_NEXT

FIELDINDEX
É um indexador de campos de um registro, através do qual estes podem ser
manipulados como variáveis indexadas.

FLEXKEY
Contém o número da última flex-key pressionada.

LABEL$COLOR
Contém um código de cor pelo qual estabelece uma cor para as palavras de um
gráfico.

LASTERR
Contém o número do último status de erro ocorrido no programa.

LINECOUNT
Contém o número de linhas impressas pela Macro Report em uma página.

NEXT_MENU
Contém o número de um menu do arquivo MENU.DAT que seráativado quando a
tecla ESC for pressionada.

NUMPAGE
Contém o número total de imagens de um programa.

NUMWINDOW
Contém o número total de janelas de um programa.

PAGECOUNT
Contém o número de páginas impressas pela Macro

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 5


Report

PAGEEND
Estabelece o número de linhas por página em um relatório.

PAGEFEED
Estabelece o número de linhas correspondentes á altura física do
formulário em impressão. O valor padrão (default) "0" (zero)
estabelece formulários padrões contínuos com 66 linhas de altura. O valor
"-1" (menos hum) provoca uma pausa para impressão em folhas
individuais ou em listagens no vídeo.

RECCOUNT
Contém o número de registros impressos em uma Macro Report.

banco_dados.RECNUM
Contém o número de registro ativo.

SCREENEND
Contém o número máximo de linhas do vídeo.

STRLEN
Contém o comprimento de uma substring dentro de uma string de uso
interno do Dataflex.

STRMARK
Contém a posição de uma substring dentro de uma variável de uso interno do
Dataflex.

WINDOWINDEX
É um indexador de janelas pelo qual estas podem ser manipuladas como
variáveis indexadas.

┌──────────────────────┐
│MASCARAS DE FORMATAÇÃO│
└──────────────────────┘

{CAPSLOCK}
Converte em maiúscula a string exibida em janelas alfanuméricas.

{FILL="X"}
Preenche os espaços restantes em uma janela com o caractere
especificado em "x".

{FLOAT$}
Imprime o prefixo monetário definido na configuração do Dataflex à esquerda
dos valores numéricos exibidos em janelas numéricas.

{POINTS=n}
O valor de "n" define o número de casas à direita do ponto decimal, que
deve estar no intervalo de 0 a 8.

{SIGNRT}
Imprime o sinal de menos (-) à direita dos valores negativos em
janelas numéricas.

{SUPRESS}
Elimina espaços não utilizados em janelas alfanuméricas.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 6


┌──────────────────────────────────────┐
│CARACTERES ESPECIAIS USADOS EM JANELAS│
└──────────────────────────────────────┘

Somente para a impressão de dados com o comando PRINT.

, : Insere vírgulas em números maiores que 1.000,00 fazendo


separação dos milhares.

C : Converte em maiúsculas.

0 : Preenche campo numérico vazio quando este for igual a 0.

$ : Insere o símbolo de $ (dolar) flutuante ou a moeda que


foi configurada no DFSETUP.

E : Exibe o número em notação científica.

* : Preenche campos a esquerda com asterisco (*).

Z : Exibe branco se o conteúdo deste campo for igual a zero


(0). Não imprimirá nada neste campo.

Exemplo dos formatadores visto na página anterior.

/BODY

__0___. __C_______________________________________
__,___,___.__ __Z_______.__ __$_______.__ __E_______.__ __*_______.__

/*

OPEN CADC INDEX.1

OUTFILE 'CON:'

MOVE 0 TO PAGEEND

REPORT CADC BY INDEX.1

SECTION BODY

PRINT CADC.COD_CLI
PRINT CADC.NOME
PRINT CADC.VLR_DUP
PRINT CADC.VLR_DUP
PRINT CADC.VLR_DUP
PRINT CADC.VLR_DUP
PRINT CADC.VLR_DUP

OUTPUT BODY

REPORTEND

FORMFEED
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 7


RESULTADO

-------------------------------------------------------------------
CODIGO NOME
SALARIO 1 SALARIO 2 SALARIO 3 SALARIO 4 SALARIO 5
-------------------------------------------------------------------
0000001 MARCELO DOS SANTOS
400.000,00 Cr400000,00 4,00000e5 ****400000,00

0000002 MIKE ALLAN JACKSON


400.000,00 Cr400000,00 4,00000e5 ****400000,00

┌───────────────────┐
│MASCARAS DE ENTRADA│
└───────────────────┘

{AUTOBACK}
Move o cursor para o final da janela anterior se a tecla"seta para esquerda
ou backspace" for pressinada no início da janela corrente.

{AUTOFIND}
Executa uma operação de pesquisa automaticamente, faz um Find (somente em
campo que possuir índice para procura)

{AUTOFIND_GE}
Executa uma operação de pesquisa geral automaticamente.

(GE - Greater or Equal - Maior ou Igual)

{AUTORETURN}
Avança automaticamente o cursor para a próxima janela,quando esta é
preenchida totalmente.

{CAPSLOCK}
Converte em maiúsculas os caracteres digitados em janelas alfanuméricas.

{CHECK="A,B,C"}
Verifica se o dados digitados na janela alfanumérica(ascii) é igual as
letras A, B ou C, caso não for igual a nenhuma das três letras não será
aceito e retorna para nova digitação.

{DISPLAYONLY}
A janela apenas será exibida, não permitindo a entrada ou alteração de dados.

{FINDREQ}
Mantém o cursor na janela até que um registro seja colocado no buffer
através de uma operação de pesquisa.

{FORCEPUT}
Força o conteúdo da janela para o buffer incodicionalmente.

{NOENTER}
A janela será apenas exibida, não permitindo entrada ou alteração de dados.

{NOPUT}
Não envia o conteúdo da janela para o buffer de registro.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 8


{POINTS=n}
O valor de "n" define o número de casas à direita do ponto decimal, no
intervalo de 0 a 8 casas.

{RANGE=10}
Verifica se os dados digitados em janelas numéricas são menores que 10.
Não aceitará números maiores que 10.

{REQUIRED}
A entrada e obrigatória, deve ser digitado algo para passar por esta
janela.

{RETAIN}
Mantém os dados na janela até que ela seja limpa pela segunda vez através
do comando CLEARFORM.

{RETAINALL}
Mantém os dados na janela permanentemente.

{SKIPFOUND}
Não permite entrada de dados se um registro estiver ativo no buffer.

┌───────────────────┐
│FUNÇÕES MATEMÂTICAS│
└───────────────────┘

ABS
Retorna o valor absoluto da expressão matemática especificada.

ACOS
Retorna um ângulo em radianos do arco coseno do valor da expressão
matemática especificada.

ASIN
Retorna um ângulo em radianos do arco seno do valor da expressão
matemática especificada.

ATAN
Retorna um ângulo em radianos do arco tangente do valor da expressão
matemática especificada.

COS
Retorna um ângulo em radianos do coseno do valor da expressão
matemática.

EXP
Eleva o valor de "e" (nepriano) à potência do valor da expressão
matemática expecificada.

INTEGER
Converte o valor da expressão matemática em um valor inteiro, sem
considerar a parte decimal.

LOG
Retorna o logaritmo neperiano (natural) do valor da expressão
matemática especificada.

REAL
Converte o valor da expressão matemática em um valor real.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 9


ROUND
Converte o valor da expressão matemática em um valor inteiro,
arredondando conforme a parte decimal.

SIN
Retorna um ângulo em radianos do seno do valor da expressão
matemática.

SQRT
Retorna a raiz quadrada do valor da expressão matemática especificada.

TAN
Retorna um ângulo em radianos da tangente do valor da expressão
matemática.

Exemplo com o comando ROUND

/TELA

<<< ROUND >>>

O valor informado sera atualizado com + 10% e o valor sera arredondado

Valor : ______.__

Valor corrigido: ______.__

/*

// 5577 * 10 = 6134.7000

// ROUND 5577 * 10 = 6135

NUMBER PRECO

WHILE [ ~ KEY.ESCAPE]

ACCEPT TELA.1

MOVE (ROUND ((TELA.1 * .1) + TELA.1)) TO PRECO

DISPLAY PRECO TO TELA.2

GOTOXY 20 00

PAUSE 'Tecle ENTER.'

CLEARFORM TELA

CLEARXY 20 0

MOVE 0 TO PRECO
END

ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 10


┌───────────────────┐
│TIPOS DE ARGUMENTOS│
└───────────────────┘

JANELAS : Ascii, data, numérica, inteira, real

VÂRIÂVEL : Ascii, data, numérica, inteira, real, indicadores

CAMPO : Ascii, data, numérica, overlap

┌───────────────────┐
│TIPOS DE OPERADORES│
└───────────────────┘

Operadores Matemáticos

+ : Adição

- : Subtração

* : Multiplicação

/ : Divisão

^ : Exponenciação

Operadores Relacionais

EQ : Igual a

NE : Diferente de

NG : Maior que

GE : Maior ou igual a

LT : Menor que

LE : Menor ou igual a

IN : Está dentro de

MATCH : Igual à parte de

Operadores Lógicos

NOT : Negação (não)

AND : E

OR : Ou um, ou outro

ANY : Qualquer um

ALL : Todos ao mesmo tempo

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 11


┌──────────────────────────────────────┐
│ PALAVRAS RESERVADAS DO DATAFLEX 2.3b │
└──────────────────────────────────────┘

Abaixo segue uma lista dos comandos usado pelo Dataflex em tempo de
compilação. Exemplo para o programado o comando é [NOT FOUND] para
compilador é [ ~ |254]

FLEX$INIT
=========

#REM FLEX$INIT - STANDARD REPLACES


#REM These are the standard symbols that are required for the compiler
#REM This procedure will be automatically executed
#REM when the compiler starts

#COMMAND FLEX$INIT &.

CALC --------------> CALCULATE

LT ----------------> $0 // internal value for the find/indicate modes.


LE ----------------> $1
EQ ----------------> $2
GE ----------------> $3
GT ----------------> $4
NE ----------------> $5
TRUE --------------> $1
FALSE -------------> $0
NOT ---------------> ~
#SET C$ 11
LASTIF ------------> |!C
ENT$PERMISSIVE ----> |10
IN$0 --------------> $4000
IN$1 --------------> $4004
IN$2 --------------> $4008
IN$3 --------------> $400C
IN$4 --------------> $4010
IN$5 --------------> $4014
IN$GLANY ----------> |0
IN$GLALL ----------> |4
IN$GRANY ----------> |0
IN$GRALL ----------> |2
IN$GMOR -----------> |0
IN$GMAND ----------> |1
ERR ---------------> |127
ERRLINE -----------> |VI6
FINDERR -----------> |126
SEQEOF ------------> |125
SEQEOL ------------> |121
MULTIUSER ---------> |120
FIELDINDEX --------> |VI1
WINDOWINDEX -------> |VI2
LASTERR -----------> |VI5
KEYPRESS ----------> |123
TERMCHAR ----------> |VI3
FLEXKEY -----------> |VI4
SCREENEND ---------> |VI17
MEMAVAIL ----------> |VI18
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 12
LASTENTRY ---------> |VI19

NOKEYCHECK --------> |VI80

CHAIN_DEPTH -------> |VI81


CURSOR_SET --------> |VI82 // THESE ARE USED BY AUTOBACK
CURSOR_RETURN -----> |VI83

KEY.ANY -----------> |100


KEY.RETURN --------> |101
KEY.PRINT ---------> |102

KEY.ESCAPE --------> |103 ou [ |103] ABORT


KEY.LEFT ----------> |104
KEY.RIGHT ---------> |105
KEY.FIELD ---------> |106
KEY.FIND ----------> |107
KEY.SFIND ---------> |108
KEY.SAVE ----------> |109

KEY.DELETE --------> |110


KEY.CALCULATE -----> |111
KEY.USER ----------> |112
KEY.CLEAR ---------> |113
KEY.NEXT ----------> |115
KEY.PREVIOUS ------> |114
KEY.UP ------------> |116
KEY.DOWN ----------> |117
KEY.HELP ----------> |118
KEY.USER2 ---------> |119

NUMPAGE -----------> |VI28


NUMWINDOW ---------> |VI29
#SET F$ 1
NEXT_MENU ---------> |VI127
CURRENT_IMAGE -----> |VI9
CURRENT_WINDOW ----> |VI7
LAST_GOSUB --------> |VI0
FOUND -------------> |254
STRMARK -----------> |VI12
STRLEN ------------> |VI13

ENTER & REPORT DEF'S

====================
LINECOUNT ---------> |VI10
PAGECOUNT ---------> |VI11
PAGEEND -----------> |VI25
PAGEFEED ----------> |VI26
#SET D$ 128 // INTEGERS NOW START HERE.
#SET P$ 0

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 13


FORMATADORES DE CAMPOS

AUTOFIND ----------> $C000


AUTOFIND_GE -------> $C000,$C008
FINDREQ -----------> $C001
NOPUT -------------> $C002
NOENTER -----------> $C003
SKIPFOUND ---------> $C004
RETAINALL ---------> $C005
RETAIN ------------> $C006
FORCEPUT ----------> $C007
DISPLAYONLY -------> $C002,$C003

CAPSLOCK ----------> $C023


SUPPRESS ----------> $C040=''
FLOAT$ ------------> $C026
UPPER -------------> $C023
SIGNRT ------------> $C027
CHECK -------------> $C012
RANGE -------------> $C013
REQUIRED ----------> $C022
AUTORETURN --------> $C028
AUTOBACK ----------> $C029
NO_CALC -----------> $C02B // Disable Calculate (internal)
MODAL_INSERT ------> $C02A // Change insert style (internal)
FILL --------------> $C040
POINTS ------------> $C080

PAGEBREAK ---------> |124


FILENUMBER --------> |VI15
FIELDNUMBER -------> |VI16

INDICES

INDEX.1 -----------> |CI1 // the indexes are just integers.


INDEX.2 -----------> |CI2
INDEX.3 -----------> |CI3
INDEX.4 -----------> |CI4
INDEX.5 -----------> |CI5
INDEX.6 -----------> |CI6
INDEX.7 -----------> |CI7
INDEX.8 -----------> |CI8
INDEX.9 -----------> |CI9
INDEX.10 ----------> |CI10
INDEX.BATCH -------> |CI10
RECNUM ------------> |CI0

EXPORT_FILES ------> 1
EXPORT_ONLY -------> 2
SEQ_EXPORT --------> 4
#SET N$ 2 // save 0,1 stacks for IF/ELSE
#XPUSH !n $INIT
#ENDCOMMAND

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 14


┌──────────────────────────────────────────────┐
│O QUE SÃO IMAGENS E JANELAS NO DATAFLEX 2.3b? │
└──────────────────────────────────────────────┘

Imagens
São lay-outs de relatórios, telas de manutenção de arquivos ou ainda tela de
AJUDA (HELP), constituídas de textos, quadros mensagens, caracteres
gráficos e príncipalmente janelas.

Uma imagem começa com uma barra "/" (Barra) na primeira linha e coluna
seguida de seu respectivo nome e termina o início de outra imagem, ou com
o início do programa que inicia após uma linha contendo os caracteres "/*"
(barra e asterisco).

Uma imagem de AJUDA (HELP) ou tela de manutenção não pode ter mais do que
25 linhas.

Janelas
É um conjunto de caracteres que representam o local da imagem destinado a
receber e manipular dados. Execute o programa

DFSETUP.EXE para identificar e/ou alterar o caractere que representa


uma janela, que normalmente é o caractere ____ (underline :
sublinhado).

/IMAGEM1

┌───────────────────────────────────────────────┐
│ Codigo : __. │
│ │
│ Nome : _________________________________ │
│ │
│ Salario : _________.__ │
└───────────────────────────────────────────────┘

/IMAGEM2

┌───────────────────────────────────────────────┐
│ Fone : _______ │
│ │
│ Fax : _______ │
└───────────────────────────────────────────────┘

/*

NOTA

- /nome_IMAGEM1 : Inicia imagem com nome


- IMAGEM1 : Imagem 1
- IMAGEM1 : Possui três janelas (campos)
- IMAGEM2 : Imagem 2
- IMAGEM2 : Possui duas janelas (campos)
- /* : Termina imagem
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 15
As janelas no Dataflex 2.3b são normalmente representadas pelo sublinhado.

Isto é uma questão de gosto.

- Janela ASCII ou STRING (5 posições) : _____

- Janela NUMÉRICA (2 inteiros e 3 decimais) : __.___

- Janela NUMÉRICA inteira (3 posições) : __.

- Janela NUMÉRICA real (4 posições) : __E_

- Janela DATA : __/__/__


__/__/____

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 16


┌──────────────────┐
│O QUE SÃO LABELS ?│
└──────────────────┘

Labels são rotinas, isto é, um conjunto de instruções que serão executadas


sequêncialmente, mas estes não voltarão para o ponto de onde foram
chamados (se fosse rotina seria o comando GOSUB), continuando a execução
do programa até que seja encontrado o fim do programa ou uma das
instruções for um comando de desvio que redirecionará o fluxo de execução do
programa. Observe o exemplo abaixo:

/TELA

┌───────────────────────────────────────────────┐
│ Codigo : __. │
│ │
│ Nome : _________________________________ │
│ │
│ Salario : _________.__ │
└───────────────────────────────────────────────┘

/*

// PROGRAMA CLIENTES

OPEN CLIENTES

ENTER CLIENTES

AUTOPAGE TELA

ENTRY CLIENTES.COD {AUTOFIND,NOPUT}

label_1:

ENTRY CLIENTES.NOME {CAPSLOCK}

IF_ TELA.2 EQ '' GOTO LABEL_1

label_2:

ENTRY CLIENTES.SALARIO

IF TELA.3 GT 500000 BEGIN


GOTOXY 24 05
PAUSE ' SALARIO NAO PODE SER MAIOR QUE << 500 000 >> '
CLEARXY 24 0
GOTO LABEL_2

END

RETURN

ENTEREND

ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 17


NOTA

- label_1
O digitador forçadamente terá que digitar algo neste campo para poder ir
adiante.

- label_2
Se (IF) no campo (janela) salário for digitado um salário maior que
500.000,00 (quinhentos mil cruzeiros) será exibido a mensagem SALARIO NAO
PODE SER MAIOR QUE <<500 000>> e o programa irá retornar para a
label_2. Assim o digitador terá que digitar um salário inferior a
500.000,00 para passar desta janela.

┌─────────────────────────────┐
│O QUE SÃO ARQUIVOS DE DADOS ?│
└─────────────────────────────┘

São agrupamentos de dados, ordenados ou não, que podem sofrer algum tipo
de processamento gerando informações. Os processamentos que um arquivo de
dados pode sofrer são: inclusões de novos dados, alterações nos dados já
existentes, exclusão dos dados residentes no arquivo, e consultas podem
ser feitas dos dados armazenados.

Arquivos podem também ser vistos como fontes de programas, isto é


programas que são escritos e que depois são compilados para uma linguagem
que o computador entenda.

Como saber diferenciar estes arquivos é simples, basta sabermos suas


terminações (extensões), observe abaixo as terminações dos arquivos em

Dataflex 2.3b.

Um conjunto de registros forma um arquivo de dados.

.FRM
Arquivo-fonte de programas de aplicação, editado no editor de sua
preferência. Este arquivo deve ser compilado para que possa ser
executado. (CLIENTES.FRM)

.FLX
Arquivo-destino do programa-fonte após compilado. Já esta pronto para ser
executado. (CLIENTES.FLX)

.DAT
Arquivo de dados. Este arquivo guarda todos os dados gravados durante
os processos básicos de manipulação de dados (inclusão, alteração,
exclusão). (CLIENTES.DAT)

.Kn
Arquivo de índeces. Este arquivo tem a relação de registros
organizados sequêncialmente de acordo com sua definição. Pode ser criado
até 10 arquivos de índices, isto é, pode-se ter até 10 índices para
cada arquivo de dados. (CLIENTES.K1, CLIENTES.K2, CLIENTES.K3 ...
CLIENTES.K10)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 18


.TAG
Arquivo que guarda os nomes dos campos do arquivo de dados. Cada registro
deste arquivo é um nome de campo do arquivo.

CODIGO
NOME
SALARIO

.FD
Arquivo que guarda os "apelidos" dados aos campos do arquivo
Dataflex. Isto é necessário para a agilização do processo de
compilação e acesso aos nomes de arquivos durante um dos módulos de criação
de aplicações.

.RPT
Arquivo fonte de aplicações de geração de relatórios (DFQUERY). Tem
as mesmas caracteristicas que o de terminação .FRM devendo tambem ser
compilado para que possa ser executado. Sua terminação (extensão)
após ter sido compilado será .FLX

.DEF
Arquivo que é a imagem da definição do arquivo. É usado para a
conferência da estrutura do arquivo de dados e pode ser usado para a geração
de programas de aplicação (.FRM) através de um módulo chamado ENTERDEF,
que a partir da definição de um arquivo gera um programa-fonte (.FRM)
pronto para ser compilado.

┌──────────────────┐
│O QUE SÃO CAMPOS ?│
└──────────────────┘

São pedaços de informação. São itens de dados que se agrupam para formar
conjuntos de dados e formar uma informação. Um conjunto de campos forma um
registro.

/TELA

┌───────────────────────────────────────────────┐
│ Codigo : __. │
│ │
│ Nome : _________________________________ │
│ │
│ Salario : _________.__ │
└───────────────────────────────────────────────┘

/*

NOTA

Codigo, nome e salario são campos.

No Dataflex 2.3b pode-se criar até 255 campos.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 19


┌─────────────────────┐
│O QUE SÃO REGISTROS? │
└─────────────────────┘

São conjuntos de dados agrupados logicamente organizados por um


identificador comum. Este identificador comum normalmente é um número
sequÊncial denominado de RECNUM ou REcord NUMber (número do registro).

Este RECNUM é exclusivo, não pode ser duplicado. Um conjunto de campos


forma um registro.

NOTA

No exemplo abaixo há dois registros gravados no arquivo de dados

CLIENTES.DAT

-------------------------------------------------------------------

CODIGO NOME

SALARIO 1 SALARIO 2 SALARIO 3 SALARIO 4 SALARIO 5

-------------------------------------------------------------------

0000001 MARCELO DOS SANTOS

400.000,00 Cr400000,00 4,00000e5 ****400000,00

0000002 MIKE ALLAN JACKSON

400.000,00 Cr400000,00 4,00000e5 ****400000,00

┌───────────────────┐
│O QUE SÃO INDICES ?│
└───────────────────┘

São chaves pelas quais ordenamos ou acessamos um conjunto de dados de um


arquivo. A formação de índices é sempre feita com relação aos campos dos
arquivos, em qualquer ordem escolhida pelo usuário.

Os índices ordenam os campos em ordem alfabética e em ordem numérica


crescente. Em Dataflex podemos ter índices de múltiplos segmentos, isto é,
uma chave formada por diversos campos.

Os índices podem ser exclusivos (a chave só aparece uma única vez no


arquivo de dados) ou não-exclusivos (a chave pode ser encontrada repetida
"registros duplicados", em diversos registros dentro do arquivo de dados.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 20


INDICE EXCLUSIVO (não pode ter dados repetidos/iguais)

Campo chave "COD"

ABAIXO BASE DE DADOS DO ARQUIVO "CLIENTES" (.DEF)

LISTAGEM DA DEFINICAO DO ARQUIVO #81


***************************************************
NOME BASE DO ARQ = AULA
NOME PARA USUARIO = AULA
NOME PARA DATAFLEX = AULA
***************************************************
TAMANHO DO REGISTRO = 32 (USADO = 31)
NUMERO MAXIMO DE REGISTROS = 9999 (USADO = 5)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
------ ------ ------- ----- --- ------ --- -----
1 1 2 NUMERIC 0 1 0 0 COD
2 3 20 ASCII 0 0 0 NOME
3 23 1 NUMERIC 0 0 0 0 IDADE
4 24 5 NUMERIC 2 0 0 0 SALARIO
5 29 3 DATE 0 0 0 DATA

Indice 1: CAMPOS CHAVE: <1>

No exemplo acima (índice 1) poderá ser listado apenas em ordem de código,


ou seja, de 1 até 99. Isto porque o índice possui apenas um segmento e é
um índice exclusivo, sem o recnum (0).

CLIENTES.K1 - ORDEM DE CODIGO

COD NOME IDADE SALARIO DATA


-------------------------------------------

3 MARCELO 20 3000000,00 10/10/92

5 CATHY 20 540000,00 03/04/92

6 ROBERT 10 600000,00 04/06/92

8 ROBERT 45 30000000,00 10/10/92

9 MIKE 23 304000,00 03/02/92

10 DAVID 34 4000000,00 11/11/92

15 ALEX 16 80000000,00 03/03/92

16 MIKE 16 5000000,00 10/10/92

17 ALEX 18 890000,00 03/04/92

21 ALEX 20 9800000,00 02/02/92

23 ALEX 50 3000000,00 02/02/92


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 21
LISTAGEM DA DEFINICAO DO ARQUIVO #81
***************************************************
NOME BASE DO ARQ = AULA
NOME PARA USUARIO = AULA
NOME PARA DATAFLEX = AULA
***************************************************
TAMANHO DO REGISTRO = 32 (USADO = 31)
NUMERO MAXIMO DE REGISTROS = 9999 (USADO = 11)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
------ ------ ------- ----- --- ------ --- -----
1 1 2 NUMERIC 0 1 0 0 COD
2 3 20 ASCII 1 0 0 NOME
3 23 1 NUMERIC 0 1 0 0 IDADE
4 24 5 NUMERIC 2 4 0 0 SALARIO
5 29 3 DATE 0 0 0 DATA

Indice 1: CAMPOS CHAVE: <1> <2> <3> K1


Indice 2: CAMPOS CHAVE: <3> <2> <1> <0> K2
Indice 3: CAMPOS CHAVE: <2> <0> K3
Indice 4: CAMPOS CHAVE: <4> <0> K4
Indice 5: CAMPOS CHAVE: <3> <2> K5
Indice 6: CAMPOS CHAVE: <1> <2> <3> K6
Indice 7: CAMPOS CHAVE: <3> <0> K7

NOTA

índice 2

Se o não tiver o zero (0 - RECNUM), haverá registros duplicados,


e quando utilizar o DFINDEX para indexar o arquivo estes dados
serão solicitados para serem excluídos. Os registros duplicados
são gravados em um arquivo com a extensão .BAD

CLIENTES.K1 - ORDEM DE CODIGO

COD NOME IDADE SALARIO DATA


-----------------------------------------------
3 MARCELO 20 3000000,00 10/10/92
5 CATHY 20 540000,00 03/04/92
8 ROBERT 10 600000,00 04/06/92
8 ROBERT 45 30000000,00 10/10/92
9 MIKE 23 304000,00 03/02/92
10 DAVID 34 4000000,00 11/11/92
15 ALEX 16 80000000,00 03/03/92
16 MIKE 16 5000000,00 10/10/92
17 ALEX 18 890000,00 03/04/92
21 ALEX 20 9800000,00 02/02/92
23 ALEX 50 3000000,00 02/02/92

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 22


CLIENTES.K2 - ORDEM DE IDADE, NOME E CODIGO

COD NOME IDADE SALARIO DATA


--------------------------------------------
8 ROBERT 10 600000,00 04/06/92
15 ALEX 16 80000000,00 03/03/92
16 MIKE 16 5000000,00 10/10/92
17 ALEX 18 890000,00 03/04/92
21 ALEX 20 9800000,00 02/02/92
5 CATHY 20 540000,00 03/04/92
3 MARCELO 20 3000000,00 10/10/92
9 MIKE 23 304000,00 03/02/92
10 DAVID 34 4000000,00 11/11/92
8 ROBERT 45 30000000,00 10/10/92
23 ALEX 50 3000000,00 02/02/92

CLIENTES.K3 - ORDEM DE NOME

COD NOME IDADE SALARIO DATA


--------------------------------------------
15 ALEX 16 80000000,00 03/03/92
23 ALEX 50 3000000,00 02/02/92
17 ALEX 18 890000,00 03/04/92
21 ALEX 20 9800000,00 02/02/92
5 CATHY 20 540000,00 03/04/92
10 DAVID 34 4000000,00 11/11/92
3 MARCELO 20 3000000,00 10/10/92
16 MIKE 16 5000000,00 10/10/92
9 MIKE 23 304000,00 03/02/92
8 ROBERT 10 600000,00 04/06/92
8 ROBERT 45 30000000,00 10/10/92

CLIENTES.K4 - ORDEM DE SALARIO

COD NOME IDADE SALARIO DATA


--------------------------------------------
9 MIKE 23 304000,00 03/02/92
5 CATHY 20 540000,00 03/04/92
8 ROBERT 10 600000,00 04/06/92
17 ALEX 18 890000,00 03/04/92
3 MARCELO 20 3000000,00 10/10/92
23 ALEX 50 3000000,00 02/02/92
10 DAVID 34 4000000,00 11/11/92
16 MIKE 16 5000000,00 10/10/92
21 ALEX 20 9800000,00 02/02/92
8 ROBERT 45 30000000,00 10/10/92
15 ALEX 16 80000000,00 03/03/92

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 23


CLIENTES.K5 - ORDEM DE IDADE E NOME

COD NOME IDADE SALARIO DATA


-------------------------------------------
8 ROBERT 10 600000,00 04/06/92
15 ALEX 16 80000000,00 03/03/92
16 MIKE 16 5000000,00 10/10/92
17 ALEX 18 890000,00 03/04/92
21 ALEX 20 9800000,00 02/02/92
5 CATHY 20 540000,00 03/04/92
3 MARCELO 20 3000000,00 10/10/92
9 MIKE 23 304000,00 03/02/92
10 DAVID 34 4000000,00 11/11/92
8 ROBERT 45 30000000,00 10/10/92
23 ALEX 50 3000000,00 02/02/92

CLIENTES.K6 - ORDEM DE CODIGO, NOME E IDADE

COD NOME IDADE SALARIO DATA


-------------------------------------------
3 MARCELO 20 3000000,00 10/10/92
5 CATHY 20 540000,00 03/04/92
8 ROBERT 10 600000,00 04/06/92
8 ROBERT 45 30000000,00 10/10/92
9 MIKE 23 304000,00 03/02/92
10 DAVID 34 4000000,00 11/11/92
15 ALEX 16 80000000,00 03/03/92
16 MIKE 16 5000000,00 10/10/92
17 ALEX 18 890000,00 03/04/92
21 ALEX 20 9800000,00 02/02/92
23 ALEX 50 3000000,00 02/02/92

CLIENTES.K7 - ORDEM DE IDADE

COD NOME IDADE SALARIO DATA


--------------------------------------------
8 ROBERT 10 600000,00 04/06/92
15 ALEX 16 80000000,00 03/03/92
16 MIKE 16 5000000,00 10/10/92
17 ALEX 18 890000,00 03/04/92
3 MARCELO 20 3000000,00 10/10/92
5 CATHY 20 540000,00 03/04/92
21 ALEX 20 9800000,00 02/02/92
9 MIKE 23 304000,00 03/02/92
10 DAVID 34 4000000,00 11/11/92
8 ROBERT 45 30000000,00 10/10/92
23 ALEX 50 3000000,00 02/02/92

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 24


┌────────────────┐
│ O QUE É BUFFER?│
└────────────────┘

Se um espaço na memória reservado para um arquivo de dados, no ato de sua


abertura, isto é, quando este arquivo é deixado pronto para ser acessado e
manipulado . O BUFFER de registros de arquivos do Dataflex tem o mesmo
tamanho do registro do arquivo aberto, pois servirá de ponte para as
transações entre a memória e os arquivos em disco.

Como o Dataflex pode gerenciar até 255 arquivos de dados ao mesmo tempo,
temos também possibilidade de abrir 255 BUFFERS de registro, um para cada
arquivo de dados aberto.

No exato momento em que Dataflex abre um arquivo de dados, ele deixa


disponível no BUFFER do arquivo, o primeiro registro encontrado . Um
registro só pode ser lido ou gravado se seus dados estiverem residentes no

BUFFER do registro.

Dentro da programação Dataflex, existem comandos que podem limpar e encher


o BUFFER de registros de dados (tais comandos serão vistos
posteriormente).

┌─────────────────────┐
│ O QUE SÃO VARIÂVEIS?│
└─────────────────────┘

Em Dataflex, como em qualquer outra linguagem existente


utilizamosvariáveis. Variáveis são basicamente locais na memória do
computador reservadas para o armazenamento de informações numéricas, datas e
letras .

Algumas linguagens não fazem questão de identificar suas variáveis


antes delas serem usadas (é o caso do BASIC onde as variáveis vão sendo
criadas à medida que são necessárias), mas em Dataflex necessita desta
declaração pois, para o compilador, é importante saber a quantidade de
espaço da memória que deve ser reservada para a área de trabalho do
programa ou aplicação.

INTEGER CODIGO IDADE CEP // Variável inteira

STRING NOME 20 ENDERECO 20 // Variável string

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 25


┌────────────────────┐
│ O QUE SÃO ROTINAS ?│
└────────────────────┘

São conjuntos delimitados de instruções que serão


executadas seqüencialmente até que seja encontrado um comando que indique o
fim da mesma. Após a execução da rotina, o Dataflex devolverá o fluxo do
programa ao ponto de onde esta foi chamada, isto é, em certo ponto do
programa Dataflex usou um determinado comando e desviou o fluxo de execução
para uma área diferente da que ele estava executando. Nesta área encontram-
se as rotinas e sub-rotinas dos programas, que serão executadas e, ao seu
final, retornarão ao ponto de onde foram chamadas para executar o comando
imediatamente abaixo do comando de desvio.

É obrigatório cada rotina terminar com dois pontos ":", para indicar ao
Dataflex que não se trata de um documento.

Exemplo - 1

/TELA
┌──────────────────────────────┐
│Codigo : ___. │
│Nome : ____________________│
│Idade : _. │
│Salario : _________.__ │
└──────────────────────────────┘
/*

WHILE [ ~ KEY.ESCAPE]
ACCEPT TELA.1

GOSUB ROTINA_1 // desvia para a rotina 1

ACCEPT TELA.2

GOSUB ROTINA_2 // desvia para a rotina 2

ACCEPT TELA.3
ACCEPT TELA.4

END
ABORT

ROTINA_1:
GOTOXY 24 0
PAUSE ' DESVIADO PARA A << ROTINA 1 >> '
CLEARXY 24 0
RETURN

ROTINA_2:
GOTOXY 24 0
PAUSE ' DESVIADO PARA A << ROTINA 2 >> '
CLEARXY 24 0
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 26


Exemplo - 2
===========

/TELA
┌───────────────────────┐
│Informe qq. nr: _. │
│ │
│Salario : ______.│
└───────────────────────┘
/*

REPEAT
ACCEPT TELA.1
ACCEPT TELA.2 {POINTS=4}

GOSUB ROTINA_1

GOTOXY 24 00
PAUSE ' VOLTA DA SUB-ROTINA 1 '
CLEARXY 24 00

UNTIL [KEY.ESCAPE]

SAI:
ABORT

ROTINA_1:
GOTOXY 24 00
PAUSE ' SUB-ROTINA 1 '
CLEARXY 24 00

GOSUB ROTINA_2

GOTOXY 24 00
PAUSE ' VOLTA DA SUB-ROTINA 2 '
CLEARXY 24 00
RETURN

ROTINA_2:
GOTOXY 24 00
PAUSE ' SUB-ROTINA 2 '
CLEARXY 24 00
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 27


Exemplo 3
=========

/TELA
┌─────────────────────┐
│Numero : _. │
│ │
│Cor : ____________│
└─────────────────────┘
/*

WHILE [ ~ KEY.ESCAPE]

INICIO:

ACCEPT TELA.1

IF_ TELA.1 GT 10 BEGIN


GOTOXY 24 0
PAUSE ' NR MAIOR QUE 10 NAO ACEITO '
CLEARXY 24 0
RETURN INICIO
END

ACCEPT TELA.2
END

ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 28


┌──────────────────────────────┐
│ UTILITÂRIOS DO DATAFLEX 2.3b │
└──────────────────────────────┘
A seguir os utilitários que acompanham o sistema Dataflex 2.3b,
desenvolvidos em linguagem Turbo C e executados diretamente do sistema
operacional.

┌───────────┐
│DFSETUP.EXE│
└───────────┘
Configura o software Dataflex 2.3b. No prompt do MS-DOS, ou qualquer que
seja seu sistema operacional digite:

Após tê-lo carregado para memória, escolha um número das opções desejadas
e tecle enter, irá acessar várias telas (menus).

- Teclas de função;
- Retorno automático em campo cheio. Se esta opção for usada o formatador
{AUTORETURN} não será necessário;
- Sistema multiusuário;
- Pré-alocamento de espaço em disco;
- Proteção contra queda de energia, se o seu computador não tiver o
aparelho NO-BREAK;
- Formato de data;
- Formatação numérica;
- Símbolo de unidade monetária;
- Caractere para a definição de janelas;
- Instalação do número da série;
- Instalação do nome da empresa;
- Instalação do código de registro;
- Controle de "flicker" do vídeo;
- Dimensões do vídeo;
- Instalação das cores do sistema;
- Dispositivo gráfico da impressora.

C:\>DFSETUP (enter)

Intercomp-Interamericana de Computação Ltda. Instalação Terminal

==========================================================================

(C) 1987, DATA ACCESS CORPORATION

Bem vindo ao novo mundo do Dataflex 2.3. Este programa tem


que ser executado para instalar o DataFlex em seu computador.

Por favor, escolha uma das opções abaixo:

1 IBM PC: MONOCHROME 2 IBM PC: B/W GRAPHICS

3 IBM PC: COLOR 4 IBM COMPATIBLE

5 PARTIALLY COMPATIBLE 6 T.I. PROFESSIONAL

7 MONROE SYSTEM 2000

8 Meu computador não está na lista

Sua Opcao: 4
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 29
Após ter informado a opção 4 irá acessar o menu abaixo:

Editando: termlist.cfg

Terminal Corrente: IBM COMPATIBLE

Funções de Configuração do DataFlex:

1 Teclas de Função (FLEX-KEYS)

2 Opções de Sistema

3 Instalação de Registro de Acesso

4 Parâmetros do Terminal

5 Mostra configuração Corrente

6 Imprime configuração Corrente

7 CANCELA alterações sem grava-las

8 GRAVA alterações e encerra DFSETUP

9 Altera códigos de cores

10 Define dispositivos gráficos

Sua opção: 1

Opção 1 - Teclas de Função (FLEX-KEYS)

O seu computador possui TECLAS DE FUNÇÃO (S/N)? S

Pressione uma TECLA DE FUNÇÃO e espere 5 segundos

Pressione <RETURN> ou <ENTER>

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 30


A composição atual das TECLAS DE FUNÇÃO será mostrada abaixo.

Pressione <ENTER> para manter ou nova tecla para alterar.

Janela Anterior ^G < ^G <

Procura Registro TAB TAB

Superprocura Relacional ^G = ^G =

Grava Registro ^G D ^G D mesmo que F10

Exclui Registro ^G @ ^G @ mesmo que F6

Registro Anterior ^G I ^G I

Registro Posterior ^G Q ^G Q

Calcula ^G ? ^G ?

Limpa todas as janelas ^G C ^G C

Help ^G ; ^G ;

Usuário Um ^G A ^G A

Usuário Dois ^G B ^G B

Seta para esquerda (Destrutiva) ^H ^H

Seta para Esquerda (Não Destrutiva) ^G K ^G K

Seta para a Direita (Não Destrutiva) ^G M ^G M

Seta para cima ^G H ^G H

Seta para Baixo ^G P ^G P

Insere caractere na janela ^G R ^G R

Exclui caractere na janela ^G S ^G S

Imprime Tela ^G > ^G >

Escape (Sai do Programa) Esc Esc

Esta tudo correto? (s/n) S

Função 2 - Opções de Sistema

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 31


Quando uma janela foi preenchida com dados oriundos do teclado, DataFlex
pode:

(A) Esperar que o operador pressione <RETURN>; ou

(B) Vai automaticamente para a próxima janela (RETURN automático).

O RETURN deve ser automático em campo cheio (S/N)? S

Alguns sistemas operacionais multi-usuários necessitam que o espaço em

disco para cada arquivo seja reservado quando este for definido. Onde isto

não for uma necessidade, é normalmente melhor que os arquivos do banco de

dados comecem pequenos e cresçam a medida que registro forem adicionados a

ele.

Pré-aloca espaço em disco (S/N)? N

Quando o DataFlex for executado sem o uso de NO-BREAK, muitos sistemas

podem perder dados após uma queda de energia, devido a buferização

dos dados. O DataFlex pode proteger seus dados fazendo um fechamento

lógico do arquivo no momento da gravação, ao custo de certa degradação

na velocidade. Se você tem o NO-BREAK esta opção pode ser desprezada.

Se você não tem e não quer correr o risco de restaurar ou reindexar

seus arquivos após uma queda de energia, digite (S)im. Do contrário, você

vai precisar restaurar os dados com frequência após uma queda de energia.

Protege dados por queda de energia (S/N)? N

DataFlex oferece três opções de formatação de data. Aqui estão as três

opções em seus respectivos formatos:

(U)SA: MM/DD/AA; (E)uropeu: DD/MM/AA; (M)ilitar: AA.MM.DD.

Qual FORMATO você quer usar (U/E/M)? E

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 32


DataFlex usa duas formas de pontuação para valores enviados pelo comando
PRINT usando uma vírgula flutuante na formatação de janelas.

Os exemplos a seguir mostram ambos os formatos:

(P)onto: 10,000.00 ou (V)írgula: 10.000,00

Qual formato deve o comando PRINT utilizar para imprimir valores (P/V)? V

DataFlex usa o símbolo $ (Ascii 36) para representar um valor (FLOAT$).

Outro caractere pode ser utilizado para representar a Unidade Monetária


a ser impressa pelo comando PRINT.

Quais caracteres deve o comando PRINT utilizar para representação


monetária ?

(2 Máximo) <Cr> : Cr$

O DataFlex usa normalmente o caractere SUBLINHADO (_) para representar

janelas a serem preenchidas com dados na tela.

Exemplo: (HISTORICO:__________________________).

Um outro caractere pode ser usado.

Qual caractere deve ser usado para definir as JANELAS ? _

Esta tudo correto? (s/n) S

----------------------------------------------------------------------

Função 4 - Configura códigos de contrôle do vídeo

Sua configuração atual para códigos de contrôle de vídeo será mostrada

abaixo. Pressione <RETURN> para manter, ou digite novos números

em decimais e separados por espaços, para alterar. Digite "NENHUM" se

seu vídeo ou seu terminal não tem a função pedida.

Deve as gravações no vídeo serem Genéricas, Interrupção 10,

Memória Mapeada, ou com Supressão de chuviscos (G,I,M,S): S

Qual a LARGURA da sua tela (em caracteres)? 80

Qual a ALTURA da sua tela (em linhas)? 25


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 33
Usa 7 BIT (Standart Only) ou 8 BIT (All) ASCII caracteres ? 8

Está tudo correto? (s/n) S

Opção 5 - Mostra configuração corrente

1 Mostra opções de sistema

2 Mostra as teclas de função

3 Mostra os parâmetros do terminal

4 Retorna para menu de opções

Sua opção: 1

Opções do Sistema:

AUTO-RETURN em campo cheio Sim

Sistema Multi-Usuário Sim

Protege por queda de energia Ligado

Formato para DATA Europeu

Formato do PONTO DECIMAL Vírgula

Caractere para MOEDA Cr

Caractere para JANELAS _ (95)

Pressione qualquer tecla para continuar

Configuração para TECLAS DE FUNÇÃO:

Tecla RETURN ou ENTER RETURN RETURN

Janela Anterior ^G <

Procura Registro TAB

Superprocura Relacional ^G =

Grava Registro ^G D

Exclui Registro ^G @

Registro Anterior ^G I

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 34


Registro Posterior ^G Q

Calcula ^G ?

Limpa todas as janelas ^G C

Help ^G ;

Usuário Um ^G A

Usuário Dois ^G B

Seta para esquerda (Destrutiva) ^H

Seta para Esquerda (Não Destrutiva) ^G K

Seta para a Direita (Não Destrutiva) ^G M

Seta para cima ^G H

Seta para Baixo ^G P

Insere caractere na janela ^G R

Exclui caractere na janela ^G S

Imprime Tela ^G >

Escape (Sai do Programa) Esc

Pressione qualquer tecla para continuar

Código de controle de tela:

Tipo de terminal Memória Mapeada (Chuvisco Suprimido)

LARGURA da tela (Caracteres): 80

ALTURA da tela (em linhas): 25

Usa 7 ou 8 BIT ASCII caracteres: 8

Pressione qualquer tecla para continuar

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 35


Função 9 - Configura códigos de cores

O código de COR para JANELA DE DADOS atual 15

E este é um exemplo desta combinação

O código de COR para o FUNDO atual 5

Estes são os códigos de cores existentes. Cada número representa uma

combinação de cores para CARACTERE e FUNDO:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79

80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111

112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

Você deseja alterar as cores agora (S/N) ? N

10 Define dispositivos gráficos

Sua opção: 10

Nome do dispositivo gráfico para vídeo: haloibmg.dev

Modo de inicialização do vídeo gráfico: 1

Nome do dispositivo gráfico de impressão: haloepsn.prn

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 36


┌──────────┐
│ FLEX.EXE │
└──────────┘
Sistema Dataflex 2.3b. Executa menu príncipal do Dataflex, que permite a
execução de todos os exemplos de aplicações, utilitários .EXE,
utilitários .FLX, comandos do sistema operacional e outros programas.

C:\> FLEX MENU (enter)

C:\> FLEX ENTERDEF (enter)

C:\> FLEX PRINTER (enter)

C:\> FLEX programa.flx

┌───────────┐
│ DFRUN.EXE │
└───────────┘
Runtime Dataflex 2.3b. Módulo de execução RUNTIME Dataflex. Este
utilitário executa programas semicompilados Dataflex, isto é, arquivos
que possuem a extensão .FLX. O módulo DFRUN.EXE é protegido contra
cópias.

C:\> DFRUN CLIENTES (enter)

C:\> DFRUN MENU (enter)

C:\> DFRUN PRINTER (enter)

┌────────────┐
│ DFAUTO.EXE │
└────────────┘
Cria uma aplicação a partir de uma imagem. Para criarmos uma imagem
precisamos de um editor de textos que gera arquivos ASCII puros, isto é,
arquivos somente com caracteres padrão ASCII. O Dataflex fornece
juntamente com outros módulos o editor de textos chamado de DFEDIT.
Você
pode utilizar o editor de textos que quiser, o importante é escrever o
programa fonte puro ASCII .

Após selecionado o editor de textos criaremos a imagem. O primeiro passo


é dar um nome ao arquivo-texto que guardará a imagem, este nome é de
extrema importância, pois será o nome do arquivo de dados a ser criado a
partir da imagem.

Para iniciar o processo de criação da imagem coloca-se a barra normal "/"


na posição na coluna zero e linha 0 (home) do seu monitor seguido do nome
da imagem. (/IMAGEM - /TELA)

SO nome da imagem poderá ter até 80 caracteres. Em seguida desenha-se a


imagem e no final da imagem coloca-se a barra normal seguida de um
asterisco "/*". Quando salvar/gravar este arquivo-texto da imagem use a
terminação ou extensão .SCR .

Para criar as imagens use o caracter sublinhado (underline), por exemplo


a imagem "Nome" possui 27 caracteres sublinhados, isto é, pode ser
digitado qualquer nome até este tamanho.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 37


Os caracteres de < (menor) e > (maior) indicam que entre eles há o campo
chave. Assim para procurar por algum registro pode ser usado as teclas
TAB, F3, Pg Up, Pg Dn .

/TELA
┌───────────────────────────────────────────────────────┐
│ CADASTRO DE CLIENTES │
│ ==================== │
│ │
│ Nome : <___________________________> │
│ Endereco : __________________________________ │
│ Cidade : _____________ Estado : __ Cep: _______. │
│ Bairro : _____________ Contato: ____________ │
│ Telefone : ______ Fax : ______ │
└───────────────────────────────────────────────────────┘
/*

C:\> DFAUTO (enter)

C:\> DFAUTO CADAL.SCR (enter)

Programa de Auto-Definição de Arquivo - DFAUTO

Este programa de auto-definição de arquivo irá criar um arquivo de dados e


um programa fonte de entrada de dados a partir de uma "imagem" do banco de
dados previamente definada. Este arquivo de imagens pode ser criado com
qualquer editor de textos e não deve conter extensões. O DFAUTO irá criar um
programa fonte e a estrutura de dados correspondente.

Entre o nome da sua imagem ou tecle RETURN para sair.

Qual o nome do seu arquivo de IMAGEM? CADAL.SCR (enter)

O Dataflex irá carregar a tela abaixo para memória:

Programa de Auto-Definição de Arquivo - DFAUTO

Sumário dos nomes do arquivo:


Nome da imagem cadal.scr
Nome base Sist.Oper. CADAL
Nome para o DataFlex CADAL
Nome do programa CADAL.FRM

O arquivo "CADAL", número 91 está sendo redefinido


Está correto? (s/n) : S

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 38


ATENCAO, Foi encontrado um programa DataFlex com o mesmo nome.
Deseja sobrepor o programa antigo? S

Qual o número máximo de registros que "CADAL" pode ter?

Entre com um número entre 1 e 16.776.702

Qual o número máximo de registros que "CADAL" pode ter? 9999

--------------------------------------------------------------------------

A janela/campo onde o cursor estiver estará preenchido com asteriscos


esperando para que no pé do vídeo/monitor você informe o nome desta janela,
e assim será para a nomeação de todos os campos.

CADASTRO DE CLIENTES
====================

Nome : <***************************>
Endereco : __________________________________
Cidade : _____________ Estado : __ Cep: _______.
Bairro : _____________ Contato: ____________
Telefone : ______ Fax : ______

Nome : <___________________________>
Endereco : **********************************
Cidade : _____________ Estado : __ Cep: _______.
Bairro : _____________ Contato: ____________
Telefone : ______ Fax : ______

Digite o nome do campo para o campo_1: NOME

Após ter nomeado todas as janelas (que serão o nome dos campos da base de
dados), o Dataflex irá exibir a tela abaixo:

CADASTRO DE CLIENTES
====================

Nome : <___________________________>
Endereco : __________________________________
Cidade : _____________ Estado : __ Cep: ________
Bairro : _____________ Contato: ____________
Telefone : ______ Fax : ______

Tecle "C" para continuar ou "R" para refazer esta pagina C

Pressione na letra "C" . Informe número do campo para seu índice.

1: NOME 2: ENDERECO 3: CIDADE


4: ESTADO 5: CEP 6: BAIRO
7: CONTATO 8: FONE 9: FAX

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 39


Definindo índice #1
Digite os números dos campos para indexar ou RETURN para sair: 1
Os dados deste índice serão exclusivos? S

Seu novo programa deve ser compilado para ser usado.


Compila CADAL.FRM agora? (s/n): S

Abaixo esta o programa fonte que o Dataflex gerou a partir da sua IMAGEM !

/TELA

CADASTRO DE CLIENTES
====================

Nome : <___________________________>
Endereco : __________________________________
Cidade : _____________ Estado : __ Cep: _______.
Bairro : _____________ Contato: ____________
Telefone : ______ Fax : ______

/*

PAGE TELA

OPEN CADAL

ENTER CADAL

AUTOPAGE TELA
ENTRY CADAL.NOME
ENTRY CADAL.ENDERECO
ENTRY CADAL.CIDADE
ENTRY CADAL.ESTADO
ENTRY CADAL.CEP
ENTRY CADAL.BAIRO
ENTRY CADAL.CONTATO
ENTRY CADAL.FONE
ENTRY CADAL.FAX
RETURN
ENTEREND

ABORT

Este programa já tem consistência de inclusão, alteração e deleção.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 40


┌─────────────┐
│ DFQUERY.EXE │
└─────────────┘
Gerador de relatórios Dataflex 2.3b. Possui as seguintes carac-
teristicas.

- Seleção de um banco de dados ou grupo de banco de dados (quando estes


estiverem relacionados).
- Seleção de um formato de relatório gravado anteriormente.
- Estabelece até dez critérios de seleções lógicas de registros por
relatório gerado.
- Escolha um dos índices para a definição da ordem de saída dos
registros.
- Seleção dos campos a serem exibidos.
- Totalização de campos numéricos.
- Definição de um título para o relatório.
- A saída do relatório poderá ser enviada para o vídeo, impressora ou
arquivo.
- Pode-se gerar um programa-fonte Dataflex de emissão de relatório ou
gravar um formato de relatório.

Terminações/extensões:

- .RPT : Programa fonte de relatórios.


- .QRY : Arquivo de formatos de relatório.

C:\> DFQUERY 91 (enter)

Programa de QUERY DataFlex INTERCOMP

Você deseja imprimir TODOS os 13 registros do AULA


ou você deseja selecionar apenas ALGUNS?
"Aponte & Atire" na opção desejada. (Para assistência, pressione <HELP>.)

<S>elecionar (T)odos

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 41


Opção: S (Selecionar)
========

Programa de QUERY DataFlex INTERCOMP


DEFINIÇÃO DE SELEÇÃO
CADAL Página 1 de 1
páginas

QUERY pode selecionar registros deste arquivo de acordo com


o conteúdo dos campos. "Aponte e Atire" no(s) campo(s) pelos
quais você deseja selecionar os registros . (Para ajuda, pressione <HELP>.)

< Num reg > NOME ENDERECO


CIDADE ESTADO CEP
BAIRO CONTATO FONE
FAX

= igual a > maior que < menor que


x diferente de } maior ou igual a { menor ou igual a

Seleções disponíveis: 10

Dica: 1) Marcar o campo NOME "ANTONIO" ENTER F10 ENTER


2) Posicionar cursor sobre o campo NOME "ANTONIO" + + +
3) F10 ENTER ENTER ENTER ENTER

----------------------------------------------------------------------------

Opção: T (Todos)
========

Programa de QUERY DataFlex INTERCOMP


CAMPOS PARA SAIDA
CADAL Página 1 de 1 páginas

Você pode escolher os campos a serem mostrados de acordo com a seleção


feita .
"Aponte & Atire" no(s) campo(s) desejados.
(Para assistência, pressione <HELP>.)

Num reg * NOME * ENDERECO


* CIDADE * ESTADO CEP
BAIRO CONTATO FONE
FAX

Pressione: + para imprimir e totalizar o campo


< para imprimir o campo e começar nova linha de impressão

O largura atual da linha de saída é de 135 caracteres

<RETURN> para "Atirar" <EXCLUI> para desfazer <GRAVA> termina a escolha.

Para excluir um campo marcado tecle "F6"


Apos ter escolhido os campos do seu relatorio tecle "F10".

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 42


Opção: E (Executa Query)
========

Programa de QUERY DataFlex INTERCOMP


Destino da saída
CADAL

Este QUERY pode ser direcionado para um dos destinos abaixo.


"Aponte & Atire" na forma que você deseja ver este QUERY.

<V>ídeo (I)mpressora (D)isco

----------------------------------------------------------------------------

Opção: V (Vídeo)
========

INTERCOMP
CADASTRO DE ALUNOS

NOME ENDERECO CIDADE ESTADO

MARCELO DOS SANTOS RUA BELEM, 333 RIO DOS CEDRO SC


MIKE ALLAN RUA ESTADOS UNIDOS,# 200 TIMBO SC
SANDRA PEREIRA RUA SAO PAULO, 1000 TIMBO SC

Query completo. 3 registros mostrados. Tecle RETURN para continuar

---------------------------------------------------------------------------

Opção: G (Grava Query)


========

Programa de QUERY DataFlex INTERCOMP


COMANDOS DO QUERY
CADAL

Cada seção do programa QUERY é utilizada para definir o tipo de


informação que você precisa que o QUERY prepare. Cada seção pode ser usada
para alterar o critério de seleção, ordem de saída e escolha de campos.
"Aponte e Atire" na seção que você deseja para completar seu relatório.
Grava Query irá gerar um Query ou Programa fonte para futura execução ou
uso .
Para assistência, pressione <HELP>.
Como o programa deve formatar os dados?

<R>elatório (M)ala Direta (L)inha (delimitador) (V)írgula


(delimitador)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 43


Opcao: R (Relatório)
========
Programa de QUERY DataFlex INTERCOMP
COMANDOS DO QUERY
CADAL

Cada seção do programa QUERY é utilizada para definir o tipo de


informação que você precisa que o QUERY prepare. Cada seção pode ser usada
para alterar o critério de seleção, ordem de saída e escolha de campos.
"Aponte e Atire" na seção que você deseja para completar seu relatório.
Grava Query irá gerar um Query ou Programa fonte para futura execução ou
uso.
Para assistência, pressione <HELP>.
Como o programa deve formatar os dados?

<R>elatório (M)ala Direta (L)inha (delimitador) (V)írgula


(delimitador)

Digite o nome de arquivo para seu novo programa (d:nomearq)


< REL01 >

Seu novo programa, rel01.rpt , esta pronto!


Pressione qualquer tecla para continuar.

Programa gerado pelo Dataflex 2.3b - RELATδRIO recebe extensão .RPT

/HEADER
INTERCOMP
CADASTRO DE ALUNOS

NOME ENDERECO CIDADE ESTADO

/BODY RESIDENT
_________________________ __________________________ _____________ __
/TOTAL
Registros impressos = _0___.
/*

OPEN CADAL INDEX.1


OUTFILE
REPORT CADAL BY INDEX.1
SECTION HEADER
OUTPUT HEADER
SECTION BODY
PRINT CADAL.NOME
PRINT CADAL.ENDERECO
PRINT CADAL.CIDADE
PRINT CADAL.ESTADO
OUTPUT BODY
SECTION TOTAL
PRINT RECCOUNT TO TOTAL.1
OUTPUT TOTAL
REPORTEND
FORMFEED
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 44


Opção: M (Mala Direta)
========

Programa de QUERY DataFlex INTERCOMP


COMANDOS DO QUERY
CADAL

Cada seção do programa QUERY é utilizada para definir o tipo de


informação que você precisa que o QUERY prepare. Cada seção pode ser usada
para alterar o critério de seleção, ordem de saída e escolha de campos.
"Aponte e Atire" na seção que você deseja para completar seu relatório.
Grava Query irá gerar um Query ou Programa fonte para futura execução ou
uso.
Para assistência, pressione <HELP>.
Como o programa deve formatar os dados?

(R)elatório < M >ala Direta (L)inha (delimitador) (V)írgula


(delimitador)

Digite o nome de arquivo para seu novo programa (d:nomearq)


< MALA1 >

Seu novo programa, mala1.rpt, esta pronto!


Pressione qualquer tecla para continuar.

Programa gerado pelo Dataflex 2.3b - Mala Direta

/BODY RESIDENT
_@___________________________
_@__________________________________ _@_____________ _@__
/*

OPEN CADAL INDEX.1


OUTFILE
MOVE 0 TO PAGEEND
REPORT CADAL BY INDEX.1
SECTION BODY
PRINT CADAL.NOME
PRINT CADAL.ENDERECO
PRINT CADAL.CIDADE
PRINT CADAL.ESTADO
OUTPUT BODY
REPORTEND
FORMFEED
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 45


Opção: L (Linha como delimitador)
========

Programa de QUERY DataFlex INTERCOMP


COMANDOS DO QUERY
CADAL

Cada seção do programa QUERY é utilizada para definir o tipo de


informação que você precisa que o QUERY prepare. Cada seção pode ser usada
para alterar o critério de seleção, ordem de saída e escolha de campos.
"Aponte e Atire" na seção que você deseja para completar seu relatório.
Grava Query irá gerar um Query ou Programa fonte para futura execução ou
uso.
Para assistência, pressione <HELP>.
Como o programa deve formatar os dados?

(R)elatório (M)ala Direta <L>inha (delimitador) (V)írgula


(delimitador)

Digite o nome de arquivo para seu novo programa (d:nomearq)


< LIN01 >

Seu novo programa, lin01.rpt , esta pronto!


Pressione qualquer tecla para continuar.

Programa gerado pelo Dataflex 2.3b - Linha como delimitador (.RPT)

/BODY RESIDENT
_@___________________________
_@__________________________________
_@_____________
_@__
/*
OPEN CADAL INDEX.1
OUTFILE
MOVE 0 TO PAGEEND
REPORT CADAL BY INDEX.1
SECTION BODY
PRINT CADAL.NOME
PRINT CADAL.ENDERECO
PRINT CADAL.CIDADE
PRINT CADAL.ESTADO
OUTPUT BODY
REPORTEND
FORMFEED
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 46


Renomear o arquivo LIN01.RPT para LIN01.FRM , compilar o programa

(DFCOMP LIN01.FRM) e apos executa-lo DFRUN LIN01 (enter).


O resultado sera o conteudo abaixo.

Relatório gerado pelo programa LIN01

MARCELO DOS SANTOS


RUA BELEM, 333
RIO DOS CEDRO
SC
MIKE ALLAN
RUA ESTADOS UNIDOS,# 200
TIMBO
SC
SANDRA PEREIRA
RUA SAO PAULO, 1000
TIMBO
SC

---------------------------------------------------------------------------

Opcao: V (Vírgula como delimitador)


========

Programa de QUERY DataFlex INTERCOMP


COMANDOS DO QUERY
CADAL

Cada seção do programa QUERY é utilizada para definir o tipo de


informação que você precisa que o QUERY prepare. Cada seção pode ser usada
para alterar o critério de seleção, ordem de saída e escolha de campos.
"Aponte e Atire" na seção que você deseja para completar seu relatório.
Grava Query irá gerar um Query ou Programa fonte para futura execução ou
uso.
Para assistência, pressione <HELP>.
Como o programa deve formatar os dados?

(R)elatório (M)ala Direta (L)inha (delimitador) <V>írgula


(delimitador)

Digite o nome de arquivo para seu novo programa (d:nomearq)


< VREL >

Seu novo programa, vrel.rpt , esta pronto!


Pressione qualquer tecla para continuar.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 47


Programa fonte gerado pelo Dataflex 2.3b - Virgula como delimitador

Renomear este arquivo para a terminacao/extensao .FRM, para o Dataflex


reconhe-la. Compilar o programa e executa-lo.

/BODY RESIDENT
"_@___________________________", "_@__________________________________",
"_@_____________", "_@__"
/*
OPEN CADAL INDEX.1
OUTFILE "CLIENTES.TXT"
MOVE 0 TO PAGEEND
REPORT CADAL BY INDEX.1
SECTION BODY
PRINT CADAL.NOME
PRINT CADAL.ENDERECO
PRINT CADAL.CIDADE
PRINT CADAL.ESTADO
OUTPUT BODY
REPORTEND
FORMFEED
ABORT

Resultado do programa : Arquivo: CLIENTES.TXT

"MARCELO DOS SANTOS", "RUA BELEM, 333", "RIO DOS CEDRO", "SC"
"MIKE ALLAN", "RUA ESTADOS UNIDOS,# 200", "TIMBO", "SC"
"SANDRA PEREIRA", "RUA SAO PAULO, 1000", "TIMBO", "SC"

Os dados acima poderão ser usados por outros programas ou linguagens


de programação. Este recurso é muito importante/útil pois torna os
dados intercambiáveis entre as ferramentas de programação ou outros
programas.

Por exemplo:

Suponhamos que você tivesse um arquivo em Dataflex com 3.000 (três


milclientes), e gostaria de fazer uma mala direta para cada um deles
utilizando o editor de textos Facil 6.0d. Como faria ? Editar todos os três
mil clientes no Fácil novamente, é claro que não !

"Você usa o recurso do Dataflex para converter seus dados em um arquivo texto
e
"depois irá no Fácil definir uma base de dados com os tamanhos dos campos
como
"definido na base de dados no Dataflex. Para carregar o arquivo gerado
no
"Dataflex dentro do Fácil (isto se chama Importar dados) teclar F2
D
"nome_arquivo (enter). F2 I nome_do_arquivo_texto criado no Dataflex.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 48


DATAFLEX 2.3b Linguagem de Quarta Geração

┌────────────┐
│ DFEDIT.EXE │
└────────────┘
Este utilitário é o editor de textos do Dataflex 2.3b, que permite
digitar o seu arquivo fonte. Neste, você poderá criar a imagem do seu
programa, e quando salva deve ter a terminação/extensão .FRM

C:\> DFEDIT (enter)

Da maneira acima quando teclar ESC para sair do programa será


solicitado um nome para o arquivo

C:\> DFEDIT programa.frm

Se o programa existir este será carregado para a memória.

C:\> DFEDIT programa.rpt

TECLAS DE FUNÇÃO DO DFEDIT

F2 - Carrega arquivo para memória ou DFEDIT prog1.Frm (enter).


F3 - Procura por algum argumento.
F4 - Imprime o arquivo que esta na memória.
F5 - Tem a mesma função que o comando HOME.
F6 - Apaga linha.
F7 - Grava arquivo que esta na memória com outro nome.
F8 - Blocos.

----------------------------------------------------------------------

C:\>DFEDIT (enter)

/TELA

Codigo: __.

Nome : ___________________________

Idade : _. Data Nasc.: __/__/__

/*

[ 11] [ 63900] [REB] [dftemp]

----------------------------------------------------------------------

Observe no canto superior direito o nome dftemp , isto quer dizer que o
nome do programa ainda não foi definido, é temporário.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 49


Data Access Corporation (USA) Intercomp (SP) Página: ###

/TELA
┌───────────────────────────────────┐
│Codigo: __. │
│ │
│Nome : ___________________________│
│ │
│Idade : _. Data Nasc.: __/__/__ │
└───────────────────────────────────┘
/*

Digite o NOME do arquivo de saída ou tecle ESC para cancelar


[ CAD.FRM ]

Acima quando foi pressionado ESC foi informado o nome CAD.FRM

----------------------------------------------------------------------

F2 - Carrega arquivo para memória.

/TELA
+--------------------------------------------------------+
| _.:_.:_. - __/__/__ MEN1 |
+--------------------------------------------------------+
| |
| MENU PRINCIPAL |
| ============== |
| |
| |
| <1> Cad. Fornecedores |
| <2> Cad. Conta Corrente |
| <3> Cad. Clientes |
| |
| <9> Deixa menu |
| |
| <_> Qual sua opcao ? |
| |
+--------------------------------------------------------+
/*

STRING XTECLA 1

Tecle ESC para continuar ou digite o NOME do arquivo a editar


[ CAD.FRM ]

Se você carregar o editor para memória sem nenhum arquivo, e quiser


carregar um programa tecle F2 e informe o nome.

F3 - Procura pelo argumento informado.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 50


/TELA
+--------------------------------------------------------+
| _.:_.:_. - __/__/__ MEN1 |
+--------------------------------------------------------+
| |
| MENU PRINCIPAL |
| ============== |
| |
| |
| <1> Cad. Fornecedores |
| <2> Cad. Conta Corrente |
| <3> Cad. Clientes |
| |
| <9> Deixa menu |
| |
| <_> Qual sua opcao ? |
| |
+--------------------------------------------------------+
/*

STRING XTECLA 1

DATE DIA HH MM SS

Procurar por: MENU

A tecla F3 irá procurar pelo argumento informado, neste caso MENU .

F7- Grava o arquivo que esta na memória com outro nome. Assim você
poderá manter dois arquivos com o mesmos conteúdos, porém com
nomes diferentes.

/TELA
+--------------------------------------------------------+
| _.:_.:_. - __/__/__ MEN1 |
+--------------------------------------------------------+
| |
| MENU PRINCIPAL |
| ============== |
| |
| <1> Compras |
| <2> Vendas |
| |
| <_> Qual sua opcao ? |
| |
+--------------------------------------------------------+
/*

STRING XTECLA 1

DATE DIA HH MM SS
SYSDATE DIA HH MM SS

Digite o NOME do arquivo de saída ou tecle ESC para cancelar


men1.frm

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 51


/TELA
+--------------------------------------------------------+
| _.:_.:_. - __/__/__ MEN1 |
+--------------------------------------------------------+
| |
| MENU PRINCIPAL |
| ============== |
| |
| <1> Compras |
| <2> Vendas |
| |
| <_> Qual sua opcao ? |
| |
+--------------------------------------------------------+
/*

STRING XTECLA 1

DATE DIA HH MM SS
SYSDATE DIA HH MM SS

SCREENMODE 112 ON
DISPLAY HH TO TELA.1
BLOCO: <I>nício <F>im <E>sconde <C>opia <D>eleta <M>ove <L>ê
<S>hell <G>rava

COMANDOS DA TECLA F8

<I>nicio : Mara início do bloco. Antes de usar o comando posicionar o


cursor no início do bloco.

<F>im : Marca o fim do bloco.

<E>sconde : Desmarca o bloco marcado.

<C>opia : Copia a linha ou bloco marcado para outra parte do arquivo.

<D>eleta : Deleta a linha ou bloco marcado.

<M>ove : Move a linha ou bloco para alguma parte do arquivo.

<L>ê : Insere outro programa junto com aquele que se encontra na


memória. Ex.: Suponhamos que estivéssemos fazendo o programa
CLIENTES.FRM e quiséssemos incluir/copiar uma parte do
programa VENDAS.FRM dentro do programa CLIENTES.FRM . O Lê
irá inserir outro arquivo dentro daquele que já esta na
memória.

<S>hell : Vai para o MS-DOS, e para retornar ao programa digite EXIT


(enter)

<G>rava : Grava o arquivo que esta na memória e imediatamente sai para


o MS-DOS. Para retornar ao programa digite EXIT (enter)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 52


┌────────────┐
│ DFCOMP.EXE │
└────────────┘

Este utilitário é o compilador dos programas Dataflex 2.3b. Ele


compila programas-fontes de manutenção de bancos de dados (.FRM) ou
programas-fontes de emissão de relatórios (.RPT) gerando um programa
semicompilado com a terminação/extensão .FLX, o qual pode ser
executado através do módulo DFRUN.

1) Criar o programa com a extensão .FRM

2) C:\>DFCOMP programa.frm

Os seguintes parâmetros podem ser especificados na execução do


compilador:

X : Avalia expressões numéricas;

C : Não para em caso de erros;

V : Mostra a listagem da compilação no vídeo;

Q : Não soa a campainha em caso de erro;

F : Grava a listagem da compilação, arquivo será gerado com a extensão


.PRN
L : Envia a listagem da impressora;

D : Gera o programa compilado no acionador (drive) especificado;

M nr : Expande ou contrai a memória para expansão de macros,


dependendo do valor de "nr". O valor de "nr" deve ser um número de 1 à 9,
sendo 6 default (padrão).

O sinal de MENUS (-) deve ser informado antes do(s) parâmetros.

C:\> DFCOMP CLIENTES.FRM -V (enter)

C:\> DFCOMP CLIENTES.FRM -V 99 (enter)

C:\> DFCOMP CLIENTES.FRM -C (enter)

C:\> DFCOMP CLIENTES.FRM -Q (enter)

C:\> DFCOMP CLIENTES.FRM -VQ (enter)

C:\> DFCOMP CLIENTES.FRM -DA: (enter)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 53


A linha acima irá compilar o programa CLIENTES.FRM e irá gerar o programa
CLIENTES.FLX no drive A:

C:\> DFCOMP CLIENTES.FRM -F (enter)

Observe abaixo o que a linha acima gerou.

ind.frm Imagem 1
======================================================================
Memoria disponivel: 434912
PAGE>/TELA
Lendo imagem 1, TELA

<10> - VERDE
<20> - AZUL
<30> - LILAS

<_.> Informe codigo da cores


/*
PAGE>/*
1>
Memoria disponivel: 357088
1>
1>
1>REPEAT
1>
1> ACCEPT TELA.1
2>
2> INDICATE ZERO TRUE
3>
3> INDICATE VERDE AS TELA.1 EQ 10
4> INDICATE AZUL AS TELA.1 EQ 20
5> INDICATE LILAS AS TELA.1 EQ 30
6>
6> INDICATE TODAS_CORES GROUP ANY [VERDE AZUL LILAS]
7>
7> [ VERDE] BEGIN
9> GOTOXY 10 05
10> SCREENMODE 112 ON
12> PAUSE ' Cor VERDE '
14> SCREENMODE 7 ON
16> CLEARXY 10 00
17> END
17>
17> [ AZUL] BEGIN
19> GOTOXY 10 05
20> SCREENMODE 112 ON
22> PAUSE ' Cor AZUL '
24> SCREENMODE 7 ON
26> CLEARXY 10 00
27> END
27>
27> [ LILAS] BEGIN
29> GOTOXY 10 05
30> SCREENMODE 112 ON
32> PAUSE ' Cor LILAS '
34> SCREENMODE 7 ON
36> CLEARXY 10 00
37> END
37>
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 54
ind.frm Imagem 2
======================================================================
37> [ TODAS_CORES] BEGIN
39> GOTOXY 15 05
40> SCREENMODE 112 ON
42> PAUSE ' Foi INDICADO uma cor, e os INDICADORES ;
AZUL - VERDE - LILAS '
44> SCREENMODE 7 ON
46> CLEARXY 10 00
47> END
47>
47> CLEARFORM TELA
48>

48>UNTIL [KEY.ESCAPE]
50>ABORT
51>
MACRO:
Memoria disponivel: 355040
Linhas de comando: 50
Erros: 0
Total de símbolos: 140

RESUMO
Comandos : 50
Constantes : 221
Qt de janelas : 1
Qt de imagens : 1
Total de blocos: 12

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 55


┌────────────┐
│ DFPACK.EXE │
└────────────┘
Este utilitário compacta a FMAC. A FMAC é um arquivo texto que contém
as macros e os comandos da linguagem Dataflex , gerando o arquivo
FLEX.CFL que é usado pelo utilitário DFCOMP.EXE durante a compilação
de um programa fonte Dataflex.

Pode-se alterar ou incluir comandos na biblioteca da linguagem


Dataflex através do arquivo FMAC que contém a definição de cada
comando. Macro comando abaixo esta dentro do arquivo FMAC:

#COMMAND COPYFILE &R#LGU "TO" R#LGU .


!A [] $2C5 !1 !3
#ENDCOMMAND

O uso deste utilitário implica um conhecimento profundo sobre os


comandos e macros do Dataflex e os comandos do compilador.

EX:
Você pode criar um arquivo-texto só de macro comandos e com quantas
macros desejar. Suponhamos que você criou este arquivo com o nome de

MACRO1.YOU e dentro deste arquivo tiver várias macros e precisar


usá-las dentro de algum programa. Deverá ncluir a linha " #INCLUDE
MACRO1.YOU" logo após o término da sua imagem.

Criaremos um macro comando chamado de NOVO1 .

#COMMAND NOVO1

CLEARSCREEN

GOTOXY 24 10

SCREENMODE 112 ON

PAUSE ' WELCOME TO DATAFLEX DATABASE VERSION 2.3b '

SCREENMODE 7 ON

CLEARXY 24 0
#ENDCOMMAND

Se você salvar a macro acima dentro do arquivo de macros do Dataflex a


"FMAC" terá que executar o seguinte comando:

C:\> DFPACK FMAC (enter) Compactando FMAC e incluindo NOVO1.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 56


E dentro do seu programa fonte tera que incluir a seguinte linha logo
após o término da imagem do seu programa:

/TELA

Codigo: __.

Nome : _______________

/*

#INCLUDE MACRO1.YOU ----------> Este é o arquivo que contém

REPEAT todas as macros, inclusive NOVO1

ACCEPT TELA.1
ACCEPT TELA.2

UNTIL [KEY.ESCAPE]

ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 57


┌────────────┐
│ DFFILE.EXE │
└────────────┘
É o gerador de Banco de Dados que permite definir ou alterar a
estrutura de um banco de dados Dataflex. Ao executar este utilitário,
será exibida uma lista de bancos de dados ativos com seus respectivos
números, a qual está armazenado no arquivo FILELIST.CFG.

Escolha um banco de dados através do seu número para alterar a sua


estrutura ou digite um número inexistente para definir um novo banco
de dados. Após selecionar o banco de dados a ser alterado, as
seguintes opções estarão disponíveis:

C:\> DFFILE (enter)

DataFlex 2.3 - Programa de Definição de Arquivos 230352


======================================================================
ARQUIVO ARQUIVO
NUMERO NOME NUMERO NOME
------ ---- ------ ----
1 WELCOME TO DATAFLEX 91 CADAL
2 VERBOS 100 CADC - Cad. Ant. Parab.
3 GIRIAS 101 CAD
9 PHONE 102 FC - Cad. Duplicatas
10 PUPIL 133 EU
11 IND 156 CADINST
15 Cad. Clientes 201 AP100 - Cad. Empresas
16 ERRO2
52 Cad. Operacoes
63 Cad. Repres
70 PROD - Cad. Produtos
71 CLI - Cad. Clientes
72 PED - Cad. Pedidos
73 FORN - Cad. Fornecedores
80 DATA
81 AULA

Digite o número do arquivo ou RETURN para mais arquivos: 81

ou

C:\>DFFILE 81 (enter)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 58


DataFlex 2.3 - Programa de Definição de Arquivos 230352
======================================================================

Arquivo atual: AULA (81)

1: Cria/exclui/altera especificações dos campos


2: Cria/exclui/altera especificações dos índices
3: Mostra/imprime/grava definição do arquivo
4: Altera nomes e parâmetros do arquivo
5: Exclui todos os dados do arquivo
6: Coloca o arquivo inativo
7: Cria definição do arquivo a partir de uma imagem
8: Cria definição do arquivo a partir do arquivo .DEF
9: GRAVA definição do arquivo e sai do DFFILE
10: CANCELA qualquer alteração na definição e sai do DFFILE

Escolha uma opção (de 1 a 10):

1: Cria/exclui/altera especificações dos campos

Permite criar, alterar, consultar ou deletar a definição de cada campo


de um banco de dados e estabelecer relação entre bancos de dados.

DataFlex 2.3 - Programa de Definição de Arquivos 230352


======================================================================

CAMPO...........: 1 <COD>
OffSet..........: 1
Tamanho.........: 2 Bytes
Tipo............: Numérico, decimais: 0
Indice principal: 1
Relacionamento com
Arquivo número: 0
Campo número: 0

Opções :
V - Vá para um determinado campo
I - Insere um campo antes deste
E - Exclui este campo
C - Cria novo campo no final
A - Altera este campo
R - Re - ajusta offset do campo
+ - Mostra próximo campo
- - Mostra campo anterior
S - Sai para menu principal

Sua opção:

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 59


2: Cria/exclui/altera especificações dos índices

Permite criar, alterar, consultar ou deletar a definição de cada índice


do banco de dados do tipo on-line ou batch.

DataFlex 2.3 - Programa de Definição de Arquivos 230352


======================================================================

Definições de Indice

Indice Campos Status Tamanho Níveis


------ -------------------------- ------ ------ ------
1 1 2 3 Online 23 4
2 3 2 1 Online 23 4
3 2 0 Online 23 4
4 4 0 Online 8 3
5 3 2 Online 21 4
6 1 2 3 Online 23 4
7 3 0 Online 4 3
8
9
10

Inclui, Altera, Exclui, Online, Batch, Sair S

3: Mostra/imprime/grava definição do arquivo

Exibe definição atual da estrutura do banco de dados incluindo a defi-


nição dos arquivos de índice. A imagem da definição da estrutura poderá
ser enviada para o vídeo, impressora ou arquivo. Se for enviada para o
arquivo, será gerado um arquivo-texto com a extensão .DEF.

LISTAGEM DA DEFINICAO DO ARQUIVO #81


***************************************************
NOME BASE DO ARQ = AULA
NOME PARA USUARIO = AULA
NOME PARA DATAFLEX = AULA
***************************************************
TAMANHO DO REGISTRO = 32 (USADO = 31)
NUMERO MAXIMO DE REGISTROS = 9999 (USADO = 13)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
------ ------ ------- ----- --- ------ --- -----
1 1 2 NUMERIC 0 1 0 0 COD
2 3 20 ASCII 1 0 0 NOME
3 23 1 NUMERIC 0 1 0 0 IDADE
4 24 5 NUMERIC 2 4 0 0 SALARIO
5 29 3 DATE 0 0 0 DATA

Indice 1: CAMPOS CHAVE: <1> <2> <3>


Indice 2: CAMPOS CHAVE: <3> <2> <1>
Indice 3: CAMPOS CHAVE: <2> <0>
Indice 4: CAMPOS CHAVE: <4> <0>
Tecle RETURN para continuar:

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 60


4: Altera nomes e parâmetros do arquivo

Permite alterar alguns parâmetros do bancos de dados como:

- Nome do banco de dados para o usuário


- Nome do banco de dados para a linguagem Dataflex
- Tamanho máximo do registro
- Quantidade máxima de registros
- Espaço excluído reutilizado (S/N)
- O Arquivo multiusuário com RE-READ ativo (S/N)

DataFlex 2.3 - Programa de Definição de Arquivos 230352


======================================================================

Nomes do Arquivo
---------------- --------------------------------------
Nome base <AULA >
Nome p/ usuário <AULA >
Nome p/ DataFlex <AULA >

Parâmetros do arquivo
-------------------------------- ----------
Tamanho do registro <32 >
Número máximo de registros <9999 >
Re-utiliza espaços excluídos <S>
Re-leitura em modo Multi-Usuário <S>

Deseja alterar alguma das informações acima? N

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 61


5: Exclui todos os dados do arquivo

Deleta todos os registros do banco de dados, mantendo a sua estrutura


ativa.

DataFlex 2.3 - Programa de Definição de Arquivos 230352


======================================================================

Arquivo atual: AULA (81)

1: Cria/exclui/altera especificações dos campos


2: Cria/exclui/altera especificações dos índices
3: Mostra/imprime/grava definição do arquivo
4: Altera nomes e parâmetros do arquivo
5: Exclui todos os dados do arquivo
6: Coloca o arquivo inativo
7: Cria definição do arquivo a partir de uma imagem
8: Cria definição do arquivo a partir do arquivo .DEF
9: GRAVA definição do arquivo e sai do DFFILE
10: CANCELA qualquer alteração na definição e sai do DFFILE

Deseja EXCLUIR TODOS os dados deste arquivo? N

6: Coloca o arquivo inativo

Retira o banco de dados da lista de banco de dados ativos que está ar


mazenada no arquivo FILELIST.CFG e opcionalmente elimina-o do disco
(inclusive os arquivos de índice).

DataFlex 2.3 - Programa de Definição de Arquivos 435888


======================================================================

Arquivo atual: AULA (81)

1: Cria/exclui/altera especificações dos campos


2: Cria/exclui/altera especificações dos índices
3: Mostra/imprime/grava definição do arquivo
4: Altera nomes e parâmetros do arquivo
5: Exclui todos os dados do arquivo
6: Coloca o arquivo inativo
7: Cria definição do arquivo a partir de uma imagem
8: Cria definição do arquivo a partir do arquivo .DEF
9: GRAVA definição do arquivo e sai do DFFILE
10: CANCELA qualquer alteração na definição e sai do DFFILE

Coloca arquivo INATIVO? (s/n) S

Exclui o arquivo de dados e seus indices? (s/n) S

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 62


7: Cria definição do arquivo a partir de uma imagem

Define uma estrutura de banco de dados, bem como um programa-fonte de


manutenção deste através de um arquivo-texto que contém uma imagem da
tela de manutenção. Tem uma função semelhante ao utilitário DFAUTO ex-
ceto que as etapas da definição são individuais permitindo ao usuário
interrompê-lo a qualquer instante.

Primeiramente crie a imagem do programa, observe modelo abaixo:

/TELA

CADASTRO DE VENDEDORES
======================

Codigo : __.

Nome : ____________________________

Endereco : __________________________________

Cidade : _____________ Estado: __

Salario : ________.__ Idade : _.

Data Nasc: __/__/____

/*

Após ter criado a imagem de seu programa informe um número para sua no
va base de dados, e informe os seguintes itens:

NOME BASE DO ARQ = CADV


NOME PARA USUARIO = CADV
NOME PARA DATAFLEX = CADV

Observe na página seguinte

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 63


7: Cria definição do arquivo a partir de uma imagem

DataFlex 2.3 - Programa de Definição de Arquivo 435888


======================================================================

Arquivo atual: CADV (210)

1: Cria/exclui/altera especificações dos campos


2: Cria/exclui/altera especificações dos índices
3: Mostra/imprime/grava definição do arquivo
4: Altera nomes e parâmetros do arquivo
5: Exclui todos os dados do arquivo
6: Coloca o arquivo inativo
7: Cria definição do arquivo a partir de uma imagem
8: Cria definição do arquivo a partir do arquivo .DEF
9: GRAVA definição do arquivo e sai do DFFILE
10: CANCELA qualquer alteração na definição e sai do DFFILE

Digite o nome do arquivo de imagem ou RETURN para sair:

C:\FL\PR\VENDER.SCR ]

Cria programa "MACRO ENTER" de entrada de dados? (s/n) S

Após procedimentos acima, o Dataflex irá solicitar que informe os cam


pos para a nova base de dados. A medida que for nomeado os campos, o
Dataflex irá mostrar asteríscos (************) no campo em que você es
tiver nomeando.

CADASTRO DE VENDEDORES
======================

Codigo : ___

Nome : ____________________________

Endereco : **********************************

Cidade : _____________ Estado: __

Salario : ________.__ Idade : _.

Data Nasc: __/__/____

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 64


Digite o nome do campo para o Campo 3: ENDER

CADASTRO DE VENDEDORES
======================

Codigo : ___

Nome : ____________________________

Endereco : __________________________________

Cidade : ************* Estado: __

Salario : ________.__ Idade : _.

Data Nasc: __/__/____

Digite o nome do campo para o Campo 3: CIDADE

CADASTRO DE VENDEDORES
======================

Codigo : ___

Nome : ____________________________

Endereco : __________________________________

Cidade : _____________ Estado: __

Salario : ___________ Idade : __

Data Nasc: __________

Pressione "C" para continuar ou "R" para refazer esta imagem

Use a opcao 9 para gravar arquivo.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 65


Abaixo o programa fonte que foi gerado pelo Dataflex, basta apenas com
pilar o programa e esta tudo pronto.

/TELA

CADASTRO DE VENDEDORES
======================

Codigo : __.

Nome : ____________________________

Endereco : __________________________________

Cidade : _____________ Estado: __

Salario : ________.__ Idade : _.

Data Nasc: __/__/____

/*
PAGE TELA
OPEN CADV
ENTER CADV
AUTOPAGE TELA
ENTRY CADV.COD
ENTRY CADV.NOME
ENTRY CADV.ENDER
ENTRY CADV.CIDADE
ENTRY CADV.EST
ENTRY CADV.SALARIO
ENTRY CADV.IDADE
ENTRY CADV.DTA_NASC
RETURN
ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 66


8: Cria definição do arquivo a partir do arquivo .DEF

Recupera toda a definição de um banco de dados anteriormente gravado em


um arquivo-texto com a extensão .DEF, a partir de uma imagem da sua de-
finição.

Suponhamos que você precisa criar um novo arquivo com a mesma Base de
Dados de um arquivo que já existente. Para não definir os nomes dos
campos todos novamente o Dataflex oferece a opção 8.

Tenho uma Base de Dados de nome TESTE1.DEF e preciso montar outra base
de dados com o nome de CADTEST com os mesmos campos. Utilize a opção 8
e informe um novo nome para a Base de Dados e utilize a definição do
arquivo TESTE1.DEF.

DataFlex 2.3 - Programa de Definição de Arquivos


=================================================================

Arquivo atual: CADTEST (103)

1: Cria/exclui/altera especificações dos campos


2: Cria/exclui/altera especificações dos índices
3: Mostra/imprime/grava definição do arquivo
4: Altera nomes e parâmetros do arquivo
5: Exclui todos os dados do arquivo
6: Coloca o arquivo inativo
7: Cria definição do arquivo a partir de uma imagem
8: Cria definição do arquivo a partir do arquivo .DEF

Nome do arquivo: TESTE1.DEF


Definição de arquivo criada

Tecle RETURN para continuar:

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 67


A tela abaixo será mostrada automaticamente, caso precisar alterar algo
então poderá ser feito.

DataFlex 2.3 - Programa de Definição de Arquivos 435888


=======================================================================

Nomes do Arquivo
---------------- --------------------------------------
Nome base <CADTEST >
Nome p/ usuário <CADTEST >
Nome p/ DataFlex <CADTEST >

Parâmetros do arquivo
-------------------------------- ----------
Tamanho do registro <256 >
Número máximo de registros <9999 >
Re-utiliza espaços excluídos <S>
Re-leitura em modo Multi-Usuário <S>

Deseja alterar alguma das informações acima? N

A tela abaixo será automaticamente mostrada pelo Dataflex.

DataFlex 2.3 - Programa de Definição de Arquivos 435888


=======================================================================

Definições de Indice

Indice Campos Status Tamanho Níveis


------ -------------------------- ------ ------ ------
1 1 2 3 Online 17 3
2 3 1 2 0 Online 20 3
3
4
5
6
7
8
9
10

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 68


Inclui, Altera, Exclui, Online, Batch, Sair S

LISTAGEM DA DEFINICAO DO ARQUIVO #103


***************************************************
NOME BASE DO ARQ = CADTEST
NOME PARA USUARIO = CADTEST
NOME PARA DATAFLEX = CADTEST
***************************************************
TAMANHO DO REGISTRO = 256 (USADO = 195)
NUMERO MAXIMO DE REGISTROS = 9999 (USADO = 0)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
------ ------ ------- ----- --- ------ --- -----
1 1 15 ASCII 1 0 0 MES_INSTALA
2 16 1 ASCII 1 0 0 SEMANA
3 17 1 ASCII 1 0 0 GRUPO_INSTALA
4 18 40 ASCII 0 0 0 NOME
5 58 40 ASCII 0 0 0 ENDER
6 98 15 ASCII 0 0 0 CIDADE
7 113 2 ASCII 0 0 0 ESTADO
8 115 15 ASCII 0 0 0 BAIRRO
9 130 16 ASCII 0 0 0 FONE
10 146 30 ASCII 0 0 0 MARCA_ANTENA
11 176 20 ASCII 0 0 0 COND_PAGTO

Indice 1: CAMPOS CHAVE: <1> <2> <3>


Indice 2: CAMPOS CHAVE: <3> <1> <2> <0>

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 69


9: GRAVA definição do arquivo e sai do DFFILE

Grava todas as alterações efetuadas no banco de dados selecionado,


atualizando também o arquivo FILELIST.CFG, e encerra a execução do
utilitário.

10: CANCELA qualquer alteração na definição e sai do DFFILE

Cancela todas as alterações efetuadas, não altera a definição da es-


trutura do banco de dados e encerra a execução do utilitário.

┌─────────────┐
│ DFINDEX.EXE │
└─────────────┘
O utilitário DFINDEX.EXE é um reorganizador de arquivos de índices de
um banco de dados. Ao executar este utilitário, será exibida uma lista
de banco de dados ativos com seus respectivos números, a qual está ar-
mazenada no arquivo FILELIST.CFG. Escolha um banco de dados através de
seu número para ser reindexado, e as seguintes opções estarão disponí-
veis:

1) C:\> DFINDEX (enter)

2) Informe o número de um arquivo e tecle enter.


3 C:\> DFINDEX 10 (indexará o arquivo 10)
3
3
DataFlex 2.3 - DFINDEX
Utilitário de reindexação e checagem de dados - DFINDEX
VERBOS

1- Recria todos os índices e checa a base de dados

2- Recria todos os índices Batch

3- Recria apenas um índice

4- Define e cria índice "AD HOC" (índice 10)

5- Exclui índice "AD HOC" (índice 10)

Entre com sua opção:

1 - Recria todos os índices e confere a base de dados

Reorganiza ou reindexa todos os arquivos de índice ON-LINE do ban-


co de dados selecionado, eliminando os registros danificados ou
duplicados.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 70


2 - Recria todos os índices Batch

Reorganiza ou reindexa todos os arquivos de índice BATCH do banco


de dados selecionado, eliminando os registros danificados ou du
plicados.

3 - Recria apenas um índice

Permite escolher um dos arquivos de índice do banco de dados sele-


cionando e, em seguida, reindexá-lo, eliminando registros danifica-
dos ou duplicados.

4 - Define e cria índice "AD HOC" (índice 10)

Permite definir um índice AD HOC que é semelhante a um índice


BATCH . Um índice AD HOC será sempre um arquivo de índice com a ex-
tensão .K10 ele não pode ser alterado para índice ON-
LINE como
acontece com os arquivos de índice do tipo BATCH .

5 - Exclui índice "AD HOC" (índice 10)

Remove o índice AD HOC da definição da estrutura do banco de dados


e também apaga o arquivo AH HOC do disco.
Pode-se definir até 9 (nove) arquivos de índice ON-LINE ou BATCH
para cada banco de dados, os quais possuirão as extensões .K1, .K2,
.K3, .K4, .K5, .K6, .K7, .K8, .K9. Um décimo arquivo de índice do
tipo AD HOC poderá ser definido, tendo a extensão .K10
Tradução literal de AD HOC significa ESPECIAL.

Quando houver registros duplicados o utilitário DFINDEX oferece 3


(três) opções para utilizar:

1 - Deixar o arquivo como está.


2 - Listar os registros na impressora.
3 - Enviar os registros para um arquivo-texto com a extensão .BAD
(ruim).

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 71


┌────────────┐
│ DBCONV.FLX │
└────────────┘
Converte toda a estrutura, ou parte, de um banco de dados do dBASE III
(formato .DBF) em um banco de dados do Dataflex (formato .DAT).
Se o banco de dados Dataflex não existir, será criada toda a definição
de sua estrutura automaticamente.

C:\> DFRUN DBCONV (enter)

DBASE II / DBASE III (R) UTILITARIO DE CONVERSAO DE ARQUIVOS DBASE


──────────────────────────────────────────────────────────────────────
NUMERO NOME DO
ARQUIVO ARQUIVO
═══════ ═══════════════════════════════════════
1 WELCOME TO DATAFLEX - 29 - INTER dBase II,
2 VERBS dBase III, e
3 SLANGS Ashton-Tate
9 PHONE sao marcas registradas
10 PUPIL da
11 IND Ashton-Tate.
15 Cad. Clientes
16 ER2
52 Cad. Operacoes DataFlex
63 Cad. Repres. e marca registrada
70 PROD - Cad. Produtos da
71 CLI - Cad. Clientes Data Access Corpo-
72 PED - Cad. Pedidos ratio
73 FORN - Cad. Fornecedores
80 DATA
250
NRO DO ARQUIVO DATAFLEX QUE RECEBERA OS DADOS OU RETURN PARA MAIS: ___
Pressione a tecla <HELP> para ajuda

O Dataflex irá mostrar a tela abaixo, e você deverá informar o arquivo


com a extensão .DBF . No exemplo abaixo, foi criado uma base de dados no
Facil 6.0d (poderia ser criado também no DBASE III PLUS ou no CLIPPER)
com os três campos:

No Fácil 6.0d

NOME 20 posições (caracteres)


ENDERECO 25 posições (caracteres)
CIDADE 15 posições (caracteres)

No Dataflex 2.3b

NOME 20 posições (ASCII)


ENDERECO 25 posições (ASCII)
CIDADE 15 posições (ASCII)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 72


Crie o seu programa Dataflex, compíle-o e os dados que estavam no ar-
quivo no Facil 6.0d foram estruturados para o uso no arquivo Dataflex.
Este é um recurso que torna flexível a movimentação de dados, de soft-
ware para software.

FACIL 6.0d - dBASE III PLUS - CLIPPER -------> DATAFLEX

Após ter mostrado o número do arquivo o Dataflex irá exibir a tela


abaixo:

UTILITARIO DE CONVERSAO DE ARQUIVOS DBASE


───────────────────────────────────────────────────────────────────────
(ESC para encerrar o programa)

Entre o nome do arquivo


dBase (.DBF) que deve ser lido: C:\FACIL6\FLIII.DBF _________________

O arquivo dBase e DataFlex possuem a mesma definicao: (S ou N) S

Pressione a Flex-Key <HELP> para ajuda

Apareceu a tela acima porque a base de dados Dataflex já existe, caso


esta não existisse o Dataflex iria solicitar para criar o programa fonte.

Após a tela da página anterior acima o Dataflex irá exibir a tela abaixo:

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 73


UTILITARIO DE CONVERSAO DE ARQUIVOS DBASE
───────────────────────────────────────────────────────────────────────
MOVIMENTACAO DOS DADOS

Pronto para iniciar a transferencia

Deseja copiar os registros excluidos: N

Pressione <RETURN> para iniciar o processo:

REGISTRO CORRENTE: 5 = 100.00 % PRONTO.

PROSCESSO COMPLETO. QUALQUER TECLA PARA TERMINAR.

Pressione <HELP> para ajuda

Dados que estavam no arquivo do FLIII.DBF feito no Editor de Textos Fácil,


agora estão disponíveis também no Banco de Dados Dataflex.

CATHY DAVIS,RUA FRANCA,RIO DOS CEDROS


DENVER HOUDSON,RUA BELGICA,TIMBO
ROBERTO SANTOS,RUA ESTADOS UNIDOS,TIMBO
MIKE ALLAN SANTOS,RUA ESTADOS UNIDOS,TIMBO
SIMON NEVES SANTOS,RUA ALEMANHA,TIMBO

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 74


┌──────────────┐
│ DIFGRAVA.FLX │
└──────────────┘
Grava registros em um arquivo-texto de formato DIF (Data Interchange
Format), com todos os campos, ou alguns, do banco de dados Dataflex
selecionados.

C:\> DFRUN DIFGRAVA (enter)

╔════════════════════════════════════════════════════════════╦═══════╗
║ LEITURA DE ARQUIVO DIF - SELECAO DE ARQUIVOS ║ DIFLE ║
╠════════════════════════════════════════════════════════════╩═══════╣
║ No.Arquivo Nome do Arquivo (Usuario) Memoria: 37200 ║
║ ══════════ ════════════════════════════════════ ║
║ 81 AULA ║
║ 91 CADAL ║
║ 100 CADC - Cad. Ant. Parab. ║
║ 101 CAD ║
║ 102 FC - Cad. Duplicatas ║
║ 103 CADTEST ║
║ 133 EU ║
║ 156 CADINST ║
║ 201 AP100 - Cad. Empresas ║
║ 210 CADV ║
║ 250 DBFL ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ Numero do arquivo que recebera os dados ou ║
║ <RETURN> para mais arquivos: ║
║ ║
╚════════════════════════════════════════════════════════════════════╝

O Dataflex irá exibir a tela abaixo:

╔════════════════════════════════════════════════════════╦══════════╗
║ GRAVACAO DE ARQUIVO DIF - ARQUIVO DE SAIDA ║ DIFGRAVA ║
╠════════════════════════════════════════════════════════╩══════════╣
║ Memoria: 356544 ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ Entre o nome do arquivo de saida: C:\DIFSARQ.TX T ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
╚═══════════════════════════════════════════════════════════════════╝

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 75


O Dataflex irá exibir a tela abaixo:

╔══════════════════════════════════════════════════════════╦══════════╗
║ GRAVACAO DE ARQUIVO DIF - SELECAO DOS CAMPOS DATAFLEX ║ DIFGRAVA ║
╠══════════════════════════════════════════════════════════╩══════════╣
║ Memoria: 355520 ║
║ ║
║ No. Nome No. Nome No. Nome No. Nome ║
║ 1 NOME 2 ENDERECO 3 CIDADE ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ Entre o campo para saida ou <RETURN> para terminar: ___ ║
╚═════════════════════════════════════════════════════════════════════╝

A linha acima informe os campos que deseja criar o arquivo-texto DIF.

O Dataflex irá exibir a tela abaixo:

╔══════════════════════════════════════════════════════════╦══════════╗
║ GRAVACAO DE ARQUIVO DIF - VISUALIZACAO DO PROCESSO ║ DIFGRAVA ║
╠══════════════════════════════════════════════════════════╩══════════╣
║ Memoria: 355520 ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ PRONTO PARA COMECAR A GRAVACAO ║
║ ║
║ Tecle <RETURN> para comecar o processo ║
║ ║
║ Registro atual: 5 = 100.00 % pronto ║
║ ║
║ ║
║ ║
║ ║
║ O arquivo DIF esta' pronto. Pressione qualquer tecla para Sair ... ║
║ ║
╟───────────────────────────────────────────┐ ║
║ Lendo de : DBFL │ ║
╟───────────────────────────────────────────┤ ║
║ Gravando para: C:\ DIFARQ.TXT │ ║
╚═══════════════════════════════════════════╧═════════════════════════╝

Dados advindos do arquivo DBFL


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 76
Conteúdo do arquivo DIFARQ.TXT

TABLE
0,1
"DATA FOR: DBFL"
VECTORS
0,4
""
TUPLES
0,5
""
LABEL
1,0
"NOME"
LABEL
2,0
"ENDERECO"
LABEL
3,0
"CIDADE"
DATA
0,0
""
-1,0 -1,0
BOT BOT
0, CATHY DAVIS 0, MIKE ALLAN SANTOS
V V
0, RUA FRANCA 0, RUA ESTADOS UNIDOS
V V
0, RIO DOS CEDROS 0, TIMBO
V V
-1,0 -1,0
BOT BOT
0, DENVER HOUDSON 0, SIMON NEVES SANTOS
V V
0, RUA BELGICA 0, RUA ALEMANHA
V V
0, TIMBO 0, TIMBO
V V
-1,0 -1,0
BOT EOD
0, ROBERTO SANTOS
V
0, RUA ESTADOS UNIDOS
V
0, TIMBO
V

┌───────────┐
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 77
│ DIFLE.FLX │
└───────────┘
Grava registros em um banco de dados Dataflex com todos os campos, ou
alguns deles, do arquivo-texto de formato DIF (Data Interchange Format)
especificado.

C:\> DFRUN DIFLE (enter)

╔══════════════════════════════════════════════════════════╦═══════╗
║ LEITURA DE ARQUIVO DIF - SELECAO DE ARQUIVOS ║ DIFLE ║
╠══════════════════════════════════════════════════════════╩═══════╣
║ No.Arquivo Nome do Arquivo (Usuario) Memoria: 37200 ║
║ ══════════ ═════════════════════════════════ ║
║ 81 AULA ║
║ 91 CADAL ║
║ 100 CADC - Cad. Ant. Parab. ║
║ 101 CAD ║
║ 102 FC - Cad. Duplicatas ║
║ 103 CADTEST ║
║ 133 EU ║
║ 156 CADINST ║
║ 201 AP100 - Cad. Empresas ║
║ 210 CADV ║
║ 250 DBFL ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ Numero do arquivo que recebera os dados ou ║
║ <RETURN> para mais arquivos: ║
║ ║
╚══════════════════════════════════════════════════════════════════╝

O Dataflex irá exibir a tela abaixo:

╔═══════════════════════════════════════════════════════════╦═══════╗
║ LEITURA DE ARQUIVO DIF - ARQUIVO DE ENTRADA ║ DIFLE ║
╠═══════════════════════════════════════════════════════════╩═══════╣
║ Memoria: 357568 ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ Qual o nome do arquivo .DIF que sera lido: DIFARQ.TXT ║
║ ║
║ ║
║ ║
╚═══════════════════════════════════════════════════════════════════╝

O Dataflex irá exibir a tela abaixo:


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 78
╔════════════════════════════════════════════════════════════╦═══════╗
║ LEITURA DE ARQUIVO DIF - CAMPOS DO ARQUIVO DATAFLEX ║ DIFLE ║
╠════════════════════════════════════════════════════════════╩═══════╣
║ Memoria: 356544 ║
║ ║
║ No. Nome No. Nome No. Nome No. Nome ║
║ 1 NOME 2 ENDERECO 3 CIDADE ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ Campo 1 do arquivo DIF vai para o campo do arquivo Dataflex ║
╚════════════════════════════════════════════════════════════════════╝

O Dataflex irá exibir a tela abaixo:


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 79
╔═══════════════════════════════════════════════════════════════╦═══════╗
║ LEITURA DE ARQUIVO DIF - VISUALIZACAO DO PROCESSO ║ DIFLE ║
╠═══════════════════════════════════════════════════════════════╩═══════╣
║ Memoria: 356544 ║
║ ║
║ ║
║ ║
║ PRONTO PARA COMECAR A LEITURA ║
║ ║
║ Tecle <RETURN> para comecar o processo ║
║ ║
║ Registro atual: 5 = 100.00 % pronto ║
║ ║
║ ║
║ ║
║ ║
║ LEITURA DO ARQUIVO .DIF BEM SUCEDIDA. PRESSIONE QUALQUER TECLA ║
╟───────────────────────────────────────────┐ ║
║ Lendo de : DIFARQ.TXT │ ║
╟───────────────────────────────────────────┤ ║
║ Gravando para: DBFL │ ║
╚═══════════════════════════════════════════╧═══════════════════════════╝

No exemplo acima foi movido dados de um arquivo-texto DIF para uma base de
dados Dataflex.

┌──────────────┐
│ ENTERDEF.FLX │
└──────────────┘
Gera um programa-fonte de manutenção do banco de dados através de um
arquivo que contém a imagem da estrutura de um banco de dados. Esta
imagem normalmente é gravada em um arquivo com a extensão/terminação
.DEF através da opção DFFILE.EXE.

C:\> DFRUN ENTERDEF (enter)

LISTAGEM DA DEFINICAO DO ARQUIVO #250


***************************************************
NOME BASE DO ARQ = DBFL
NOME PARA USUARIO = DBFL
NOME PARA DATAFLEX = DBFL
***************************************************
TAMANHO DO REGISTRO = 512 (USADO = 60)
NUMERO MAXIMO DE REGISTROS = 999 (USADO = 5)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
------ ------ ------- ----- --- ------ --- -----
1 1 20 ASCII 1 0 0 NOME
2 21 25 ASCII 0 0 0 ENDERECO
3 46 15 ASCII 0 0 0 CIDADE

Indice 1: CAMPOS CHAVE: <1>

O Dataflex irá exibir a tela abaixo:


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 80
INTERCOMP Interamericana de Computacao Ltda ENTERDEF
───────────────────────────────────────────────────────────────────────

ESTE UTILITARIO GERA UMA CONFIGURACAO


COM MACRO 'ENTER' A PARTIR DE UM ARQUIVO '.DEF'

Entre o nome do arquivo .DEF : DBFL.DEF

Entre o nome da configuracao a ser criada : DBFL1.FRM

Programa-fonte gerado pelo ENTERDEF. Basta compilar o programa e executá-lo,


e esta pronto.

/TELA
Programa:DBFL1.FRM, Macro ENTER gerada pelo 'ENTERDEF' (c)INTERCOMP
Arquivo: DBFL, Usuario: INTERCOMP, No.Serie: 29
REGISTRO No. <_______.>
NOME |____________________|
ENDERECO |_________________________|
CIDADE |_______________|
/* // indica final da imagens (telas)

OPEN DBFL // abre arquivo

ENTER DBFL // macro ENTER

AUTOPAGE TELA // enderecamento automatico das


ENTRY DBFL.RECNUM {AUTOFIND} // janelas, se existe, mostra
ENTRY DBFL.NOME
ENTRY DBFL.ENDERECO
ENTRY DBFL.CIDADE
RETURN // final da seccao ENTRY
ENTEREND // finaliza macro ENTER
ABORT // abandona esta configuracao

┌───────────┐
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 81
│ FDTAG.FLX │
└───────────┘

Gera um arquivo do tipo .TAG com os campos de um banco de dados a partir da


estrutura de um banco de dados armazenada em um arquivo do tipo.FD

C:\> DFRUN FDTAG (enter)

╔═══════════╦═════════════════════════════════════════════╦════════════════╗
║ INTERCOMP ║ Interamericana de Computacao Ltda ║ FDTAG ║
╠═══════════╩═════════════════════════════════════════════╩════════════════╣
║ Conversor de .FD para .TAG ║
║ ║
║ ║
║ ║
║ ╔═════════════════════════╗ ║
║ ║Nome Base do Arquivo .FD:╟──────────────────────────────┐ ║
║ ╚═════════════════════════╝ ┌──┼───────────┐ ║
║ ┌─┴──┴─────────┐ │ ║
║ │ BDFL ├─┘ ║
║ └──────────────┘ ║
║ ║
║ ╔═════════════════════════════════════════════════╗ ║
║ ║Verifique se o Nome do Arquivo .TAG esta correto:╟──────┐ ║
║ ╚═════════════════════════════════════════════════╝ ┌──┼───────────┐ ║
║ ┌─┴──┴─────────┐ │ ║
║ │ BDFL.TAG ├─┘ ║
║ └──────────────┘ ║
║ ║
║ Esta' correto ? <S/N>: S ║
║ ║
╚══════════════════════════════════════════════════════════════════════════╝

┌──────────────┐
│ FLEXERRS.FLX │
└──────────────┘
Permite incluir, atualizar, excluir ou pesquizar mensagens de erro de
operação que são gravadas no arquivo FLEXERRS.DAT. As mensagens de er■
ro cujo status varia de 1 a 100 são reservadas para o Dataflex. Por■
tanto, outras mensagens de erro poderão ser cadastradas (inseridas).

C:\> DFRUN FLEXERRS (enter)

╔═══════════════════════════════════════════════════════════╦══════════╗
║ MANUTENCAO DO ARQUIVO DE ERROS DATAFLEX ║ FLEXERRS ║
╠═══════════════════════════════════════════════════════════╩══════════╣
║ ║
║ ║
║ ║
║ ERRO Descricao do Erro Notas ║
║ ════════ ══════════════════════════════════════════════════════════ ║
║ ║
║ [ 10] +++ MEMORIA INSUFICIENTE +++ FLEX PROGRAM ║
║ ║
║ ║
║ Pressione <HELP> para sair ║
╚══════════════════════════════════════════════════════════════════════╝

Exemplos:
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 82
[NOT FOUND] ERROR 10

[NOT FOUND] ERROR 71

ou

[NOT FOUND] ERROR 999 ' HOUVE ALGUM ERRO '

[NOT FOUND] ERROR 999 ' ERRO '

Quando aparecer no pé do vídeo o erro cadastrado o Dataflex irá mostrar a


mensagem do erro e o número da linha onde se encontra o erro.

Ex: CODIGO INVALIDO <<ERRO 120>> #76

┌──────────┐
│ MAIL.FLX │
└──────────┘
Gera um programa-fonte Dataflex de emissão de Etiquetas a partir das
seguintes informações:

- Nome de um banco de dados armazenado na lista existente no arquivo


FILELIST.CFG
- τndice que estabelecerá a ordem de saída dos registros.
- Largura da etiqueta em caracteres.
- Número de caracteres entre as etiquetas, caso seja selecionada mais
de uma carreira de etiquetas.
- Quantidade de carreiras ou colunas de etiquetas.
- Altura da etiqueta em linhas.
- Número de linha entre as etiquetas.
- Número de repetições de cada etiqueta.
- Campos a serem exebidos.

OBS: Este utilitário exige a presença de um arquivo .DEF contendo a


imagem de definição do banco de dados escolhido.

C:\> DFRUN MAIL (enter)

╔════════════════════════════════════════════════════════╦══════════════════╗
║ SISTEMA DE EMISSAO DE ETIQUETAS ║ MAIL ║
╠════════════════════════════════════════════════════════╩══════════════════╣
║ ║
║ ┌──────────────────────┐ ┌───────┐ ┌──────┐ ║
║ │Arquivos Disponiveis :├────────────┤ Numero├───────────┤ Nome │ ║
║ └──────────────────────┘ └───┬───┘ └───┬──┘ ║
║ ┌──────────────────────────────┐ ┌──────┴──────┬────────────┴───────────┐ ║
║ │ │ │ 210 │ CADV │ ║
║ │ Primeiro selecione um arquivo│ │ 249 │ TAG01 │ ║
║ │ de dados DATAFLEX o qual sera│ │ 250 │ DBFL │ ║
║ │ Aponte e Atire no arquivo de-│ │ │ <<< Final Arquivos >> │ ║
║ │ sejado. │ │ │ │ ║
║ ╞══════════════════════════════╡ │ │ │ ║
║ │ <POSTERIOR> Mais arquivos │ │ │ │ ║
║ │ <ANTERIOR > Reinicia │ │ │ │ ║
║ └──────────────────────────────┘ └─────────────┴────────────────────────┘ ║
║ ║
╚═══════════════════════════════════════════════════════════════════════════╝

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 83


O Dataflex irá exibir a tela abaixo:

╔════════════════════════════════════════════════════════╦════════════════╗
║ SISTEMA DE EMISSAO DE ETIQUETAS ║ MAIL ║
╠════════════════════════════════════════════════════════╬════════════════╣
║ ║ Arq: DBFL ║
║ ╚════════════════╣
║ ║
║ Agora voce deve informar a ordem pela qual as etiquetas devem ser ║
║ emitidas. Aponte e Atire no indice desejado. ║
║ ║
║┌───────────────────────────────────────────────────────────────────────┐║
║│ 0 <RECNUM> │║
║│ 1 <CODIGO> │║
║│ 0 │║
║│ │║
║│ │║
║│ │║
║│ │║
║│ │║
║│ │║
║│ │║
║│ │║
║└───────────────────────────────────────────────────────────────────────┘║
╚═════════════════════════════════════════════════════════════════════════╝

O Dataflex irá exibir a tela abaixo:

╔════════════════════════════════════════════════════════╦═════════════════╗
║ SISTEMA DE EMISSAO DE ETIQUETAS ║ MAIL ║
╠════════════════════════════════════════════════════════╩═════════════════╣
║ ║
║ Nesta secao voce deve informar os dados solicitados abaixo: ║
║ ║
║ ║
║ ║
║ ┌────────────────────────────────────┬───┐ ║
║ │ Numero de caracteres por etiqueta: │ 30│ ║
║ ├────────────────────────────────────┼───┤ ║
║ │ Numero de caracteres entre 2 etiq: │ 2│ ║
║ ├────────────────────────────────────┼───┤ ║
║ │ Numero de etiquetas na horizontal: │ 2│ ║
║ ├────────────────────────────────────┼───┤ ║
║ │ Numero de linhas por etiqueta : │ 4│ ║
║ ├────────────────────────────────────┼───┤ ║
║ │ Numero de linhas entre etiquetas : │ 1│ ║
║ ├────────────────────────────────────┼───┤ ║
║ │ Numero de repeticoes de cada etiq: │ 1│ ║
║ └────────────────────────────────────┴───┘ ║
║ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════╝

O Dataflex irá exibir a tela abaixo:


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 84
Arq: DBFL ═╗
╔══════════════════════════════╗E ETIQUETAS ║ MAIL

║ 999. XXXXXXXXXXXXXXXXXXXX ║
══╣
║ XXXXXXXXXXXXXXXXXXXXXXXXX ║

║ XXXXXXXXXXXXXXX ║

║ ║

╚══════════════════════════════╝


║ │ Numero de caracteres por etiqueta: │ 30│

║ │Campo Nome Campo Nome Campo Nome
│║
║ │ 0 RECNUM 1 CODIGO 2 NOME
│║
║ │ 3 ENDERECO 4 CIDADE
│║
║ │
│║
║ │
│║
║ │
│║
║ │
│║
║ │
│║

└─────────────────────────────────────────────────────────────────────────┘║
║ APONTE e ATIRE no campo corresponde ao item 1 da linha 4 na etiqueta

║ <POSTERIOR> Mais campos <ANTERIOR> Reinicia campos <SAVE> Fim da elecao║
║ <L> Fim da linha <CLEAR> Reinicia a Etiqueta <EXCLUI> Retira o campo║
╚═══════════════════════════════════════════════════════════════════════════╝

Qual o nome do Arquivo de Configuracao? ETIQ01.FRM

Para inserir outro campo pressione a tecla de função F8 e quando tiver


tudo pronto tecle F10.

Programa-fonte gerado pelo MAIL.FLX


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 85
/BODY RESIDENT Sistema de Emissao de Etiquetas INTERCOMP
___. ____________________ ___. ____________________
_________________________ _________________________
_______________ _______________

/TELA
INTERCOMP - Interamericana de Computacao Ltda.
Sistema de Emissao de Etiquetas

Prepare a impressora e tecle <RETURN> para continuar


ou <USER> para teste _
/*
//programa : ETIQ01.FRM ==> EMISSAO DE ETIQUETAS DO ARQ.: DBFL
STRING TECLA 1
INTEGER ETIQCORRENTE
MOVE 1 TO ETIQCORRENTE
MOVE 0 TO PAGEEND
OPEN DBFL INDEX.1
OUTFILE "LST:"
PAGE TELA
ACCEPT TELA.1
BLANKFORM BODY

REPORT DBFL BY INDEX.1


//COLOQUE AQUI A SUA SELECAO
SECTION BODY
MOVE ((ETIQCORRENTE-1)*2) TO WINDOWINDEX
PRINT DBFL.CODIGO TO BODY.1&
PRINT DBFL.NOME TO BODY.2&
MOVE (ETIQCORRENTE-1) TO WINDOWINDEX
PRINT DBFL.ENDERECO TO BODY.5&
PRINT DBFL.CIDADE TO BODY.7&

INCREMENT ETIQCORRENTE //proxima etiqueta


IF ETIQCORRENTE GT 2 BEGIN //acabou as etiquetas da linha?
MOVE 1 TO ETIQCORRENTE //posiciona na primeira etiqueta
OUTPUT BODY //imprime
BLANKFORM BODY // coloca branco nas etiquetas
END

REPORTEND
IF ETIQCORRENTE NE 1 OUTPUT BODY //sobrou alguma etiqueta ? - imprime
FORMFEED

ABORT
KEYPROC KEY.ESCAPE
ABORT
KEYPROC KEY.USER

CLEARSCREEN
CLEARFORM BODY

REPEAT
OUTPUT BODY
INPUT "A etiqueta esta posicionada ? (S/N) " TECLA
IFNOT TECLA IN "sS" LOOP
RETURN

┌──────────┐
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 86
│ MENU.FLX │
└──────────┘
Carrega todos os registros de menus gravados no arquivo MENU.DAT, exi■
bindo inicialmente o registro (menu) número 1. Os menus, as opções
exibidas, as senhas de acesso, os programas e outros submenus a serem
executados podem ser alterados através do utilitário MENUDEF .
O utilitário MENU.FLX só será executado se o arquivo MENU.DAT estiver
no diretório corrente.

C:\> DFRUN MENU (enter)

╔════════════════════════════════════════════════════════════════╗
║ INTERCOMP Serie # : 29 ║
╚════════════════════════════════════════════════════════════════╝
┌────────────────────────────────┐
│ ---- DataFlex ---- │
│ MENU PRINCIPAL │
└────────────────────────────────┘
┌──────────────────────────────────┐
│ 1 Exemplos de Aplicacoes │
│ 2 Desenvolvimento de Programas │
│ 3 Manutencao do Sistema │
│ 4 Operacao com Arquivos │
│ 5 Executa um Programa DataFlex │
│ 6 Executa um Comando do Sistema │
│ 7 Sai para o Sistema Operacional │
│ │
│ │
└──────────────────────────────────┘

Entre sua opcao: 1

Use setas para selecionar a opcao


Pressione Escape para retornar ao menu anterior

╔════════════════════════════════════════════════════════════════════╗
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 87
║ INTERCOMP Serie # : 29 ║
╚════════════════════════════════════════════════════════════════════╝
┌────────────────────────────────┐
│ ---- DataFlex ---- │
│ Exemplos de Aplicacoes │
└────────────────────────────────┘
┌──────────────────────────────────┐
│ 1 Cadastros │
│ 2 Emissao de Pedidos │
│ 3 Relatorio de Cliente/Credito │
│ 4 Listagem de Produtos │
│ 5 Consulta Rapida Prod X Preco │
│ 6 Estatisticas │
│ 7 Query Banco de Dados │
│ │
│ │
└──────────────────────────────────┘

Entre sua opcao: 1


Use setas para selecionar a opcao
Pressione Escape para retornar ao menu anterior

┌─────────────┐
│ MENUDEF.FLX │
└─────────────┘
Permite incluir, alterar, excluir ou pesquisar menus cadastrados no
arquivo MENU.DAT. Ao executar esta opção será exibida um lista de me■
nus cadastrados com seus respectivos números, os quais estão armazena■
dos no arquivo MENU.DAT. Escolha um menu existente através de seu nú■
mero para alterar o seu conteúdo, ou pressione ENTER para gerar u novo
menu.

(N)ovo menu : Retorna a tela anterior para um nova seleção de me■


nu a ser modificado.

(C)abeçalho : Permite alterar os títulos do menu selecionado a


definir qual será o MENU DEFAULT (padrão).

(Q)uestões : Permite definir até seis questões para serem utili■


zadas por uma das opções do menu.

(G)ravar : Grava alterações no arquivo MENU.DAT

Im(P)rimir : Imprime o menu, inclusive as questões.

(E)xcluir : Exclui a opção do menu da linha especificada.

(A)lterar : Altera a opção do menu da linha especificada.

Comple(T)ar : Insere outra opção na próxima linha vazia.

(S)aída : Encerra o programa MENUDEF gravando as alterações


no arquivo MENU.DAT

{HELP DISPONτVEL}: Pressione a tecla -E -eF1 para vizualizar as teclas de


ajuda de operação deste utilitário.

{ESC} : Abandona o menu e pede confirmação para gravar al■


terações.

C:\>FLEX (enter)
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 88
╔═══════════════════════════════════════════════════════════════════════╗
║ INTERCOMP Serie # : 29 ║
╚═══════════════════════════════════════════════════════════════════════╝
┌────────────────────────────────┐
│ ---- DataFlex ---- │
│ MENU PRINCIPAL │
└────────────────────────────────┘
┌──────────────────────────────────┐
│ 1 Exemplos de Aplicacoes │
│ 2 Desenvolvimento de Programas │
│ 3 Manutencao do Sistema │
│ 4 Operacao com Arquivos │
│ 5 Executa um Programa DataFlex │
│ 6 Executa um Comando do Sistema │
│ 7 Sai para o Sistema Operacional │
│ │
│ │
└──────────────────────────────────┘

Entre sua opcao: 1

Use setas para selecionar a opcao


Pressione Escape para retornar ao menu anterior

C:\> DFRUN MENUDEF (enter)

SISTEMA DE MENUS DATAFLEX SELECAO MENU


───────────────────────────────────────────────────────────────────────

NUMERO TITULO

1 ---- Dataflex ---- ╒═════════════════════════■


MENU PRINCIPAL │ Use PROXIMO REGISTRO │
│ e REGISTRO ANTERIOR │
2 ---- DataFlex ---- │ Teclas de comando para ■
Exemplos de Aplicacoes │ mais menus │
│ │
3 ---- DataFlex ---- │ - ou - ■
Desenvolvimento de Programas │ │
│ Pressione <RETURN> para │
4 ---- DataFlex ---- │ comecar um novo menu. ■
Operacoes com Arquivos ╘═════════════════════════╛

5 ---- DataFlex ---- ╒═════════════════■


Manutencao do Sistema │ Help esta │
│ Disponivel │
╘═════════════════╛
ENTRE O NUMERO DO MENU A SER EDITADO:

Foi acessado o número 1 , o Dataflex mostrará a tela abaixo:

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 89


SISTEMA DE MENUS DATAFLEX CONFIGURACAO
───────────────────────────────────────────────────────────────────────
MENU: 1 CABEC1: DATAFLEX
CABEC2: MODULO PRINCIPAL

MENU DEFAULT: 1 (on escape)

DESCRICAO ACAO SENHA


1. Exemplos de Aplicacoes MENU 2
2. Desenvolvimento de Programas MENU 3
3. Manutencao do Sistema MENU 5
4. Operacao com Arquivos MENU 4
5. Executa um Programa DataFlex CHAIN $1
6. Executa um Comando do Sistema $2
7. Sai para o Sistema Operacional SYSTEM
8.
9.

(N)ovo Menu (C)abecalho (Q)uestoes (G)ravar Im(P)rimir {HELP%


(I)nserir (E)xcluir (A)terar Comple(T)ar (S)aida S DISPO
) NIVEL})

ANTES DE SAIR, GRAVA SUAS ALTERACOES? S

----------------------------------------------------------------------

SISTEMA DE MENUS DATAFLEX CONFIGURACAO


───────────────────────────────────────────────────────────────────────
MENU: 1 CABEC1: DATAFLEX
CABEC2: MODULO PRINCIPAL

MENU DEFAULT: 1 (on escape)

DESCRICAO ACAO SENHA


1. Exemplos de Aplicacoes MENU 2
2. Desenvolvimento de Programas MENU 3
3. Manutencao do Sistema MENU 5
4. Operacao com Arquivos MENU 4
5. Executa um Programa DataFlex CHAIN $1
6. Executa um Comando do Sistema $2
7. Sai para o Sistema Operacional SYSTEM
8. CALL PASSWORD SYSTEM CHAIN CADS
JUSTME
9.

(N)ovo Menu (C)abecalho (Q)uestoes (G)ravar Im(P)rimir {HELP


(I)nserir (E)xcluir (A)terar Comple(T)ar (S)aida S DISPONIVEL}

ANTES DE SAIR, GRAVA SUAS ALTERACOES? S

Para acessar a opção 8 (oito) você antes terá que informar a senha que
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 90
é "JUSTME", caso contrário não terá acesso.
Observe que quando chamar novamente o MENU príncipal do Dataflex o tí■
tulo central já é outro pois anteriormente este foi alterado.

de: ---- DataFlex ----


MENU PRINCIPAL

para: DATAFLEX
MODULO PRINCIPAL
╔═══════════════════════════════════════════════════════════════════╗
║ INTERCOMP Serie # : 29 ║
╚═══════════════════════════════════════════════════════════════════╝
┌────────────────────────────────┐
│ DATAFLEX │
│ MODULO PRINCIPAL │
└────────────────────────────────┘
┌──────────────────────────────────┐
│ 1 Exemplos de Aplicacoes │
│ 2 Desenvolvimento de Programas │
│ 3 Manutencao do Sistema │
│ 4 Operacao com Arquivos │
│ 5 Executa um Programa DataFlex │
│ 6 Executa um Comando do Sistema │
│ 7 Sai para o Sistema Operacional │
│ 8 CALL PASSWORD SYSTEM │
└──────────────────────────────────┘
Entre sua opcao: 8

Digite a senha para esta opcao

Observe que a opção 8 foi incluída, antes não existia (verefique nos
menus anteriores)
-----------------------------------------------------------------------
SISTEMA DE MENUS DATAFLEX CONFIGURACAO
───────────────────────────────────────────────────────────────────────
MENU: 2 CABEC1: ---- DataFlex ----
CABEC2: Exemplos de Aplicacoes

MENU DEFAULT: 1 (on escape)

DESCRICAO ACAO SENHA


1. Cadastros CHAIN EXPMENU
2. Emissao de Pedidos CHAIN EXRPED
3. Relatorio de Cliente/Credito CHAIN EXRCRED
4. Listagem de Produtos CHAIN EXRPROD
5. Consulta Rapida Prod X Preco CHAIN EXRCORA
6. Estatisticas CHAIN EXPSTAT
7. Query Banco de Dados DFQUERY
8.
9.
(N)ovo Menu (C)abecalho (Q)uestoes (G)ravar Im(P)rimir {HELP
(I)nserir (E)xcluir (A)terar Comple(T)ar (S)aida _ DISPONIVEL}

SISTEMA DE MENUS DATAFLEX CONFIGURACAO


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 91
───────────────────────────────────────────────────────────────────────
MENU: 3 CABEC1: ---- DataFlex ----
CABEC2: Desenvolvimento de Programas

MENU DEFAULT: 1 (on escape)

DESCRICAO ACAO SENHA


1. Editar um Arquivo Texto DFEDIT $1
2. Criar uma Aplicacao DFAUTO
3. Compilar um Programa DataFlex DFCOMP $3 -$4
4. Executar um Programa DataFlex CHAIN $2
5. Manutencao de Bancos de Dados DFFILE
6. Manutencao de Menus CHAIN MENUDEF
7. Reindexar um Banco de Dados DFINDEX
8. Query Banco de Dados DFQUERY
9.

(N)ovo Menu (C)abecalho (Q)uestoes (G)ravar Im(P)rimir {HELP


(I)nserir (E)xcluir (A)terar Comple(T)ar (S)aida _ DISPO■
NIVEL}

SISTEMA DE MENUS DATAFLEX CONFIGURACAO


───────────────────────────────────────────────────────────────────────
MENU: 4 CABEC1: ---- DataFlex ----
CABEC2: Operacoes com Arquivos

MENU DEFAULT: 1 (on escape)

DESCRICAO ACAO SENHA


1. Copiar Arquivo(s) COPYFILE $1 $2
2. Mostrar Arquivo(s) TYPE $3
3. Renomear Arquivo(s) RENAMEFILE $1 $2
4. Excluir Arquivo(s) ERASEFILE $4
5. Editar Arquivo Texto DFEDIT $5
6. Mostrar Diretorio DIRECTORY $6
7. ACCESSING DFFILE DFFILE JUSTME
8.
9.

(N)ovo Menu (C)abecalho (Q)uestoes (G)ravar Im(P)rimir {HELP


(I)nserir (E)xcluir (A)terar Comple(T)ar (S)aida S DISPONIVEL}

ANTES DE SAIR, GRAVA SUAS ALTERACOES? S

╔════════════════════════════════════════════════════════════════════╗
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 92
║ INTERCOMP Serie # : 29 ║
╚════════════════════════════════════════════════════════════════════╝
┌────────────────────────────────┐
│ ---- DataFlex ---- │
│ Operacoes com Arquivos │
└────────────────────────────────┘
┌──────────────────────────────────┐
│ 1 Copiar Arquivo(s) │
│ 2 Mostrar Arquivo(s) │
│ 3 Renomear Arquivo(s) │
│ 4 Excluir Arquivo(s) │
│ 5 Editar Arquivo Texto │
│ 6 Mostrar Diretorio │
│ 7 ACCESSING DFFILE │
│ │
│ │
└──────────────────────────────────┘

Entre sua opcao: 7

Digite a senha para esta opcao

A opção 7 foi incluída, e para acessá-la você terá informar a senha


"JUSTME"

-----------------------------------------------------------------------

SISTEMA DE MENUS DATAFLEX CONFIGURACAO


───────────────────────────────────────────────────────────────────────
MENU: 5 CABEC1: //// DATAFLEX \\\\
CABEC2: SYSTEM MAINTENANCE

MENU DEFAULT: 1 (on escape)

DESCRICAO ACAO SENHA


1. Reindexar um Banco de Dados DFINDEX
2. Reindexar Todos Banco de Dados DFINDEX ALL$1
3. Excluir Registros Duplicados CHAIN CLEANUP
4. Excluir Formatos Query CHAIN DELQRY
5. Manutencao de Menus CHAIN MENUDEF
6. Cadastro de Mensagens de Erro CHAIN FLEXERRS
7. Importar Arquivos Texto CHAIN READ
8. Converter Arquivo dBASE CHAIN DBCONV
9.

(N)ovo Menu (C)abecalho (Q)uestoes (G)ravar Im(P)rimir {HELP


(I)nserir (E)xcluir (A)terar Comple(T)ar (S)aida S DISPONIVEL}

ANTES DE SAIR, GRAVA SUAS ALTERACOES? S

C:\>DFRUN MENUDEF (enter)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 93


SISTEMA DE MENUS DATAFLEX SELECAO MENU
───────────────────────────────────────────────────────────────────────
NUMERO TITULO

1 DATAFLEX
╒═════════════════════════╕
MODULO PRINCIPAL │ Use PROXIMO REGISTRO

│ e REGISTRO ANTERIOR

2 ---- DataFlex ---- │ Teclas de comando para

Exemplos de Aplicacoes │ mais menus



3 ---- DataFlex ---- │ - ou -

Desenvolvimento de Programas │

│ Pressione <RETURN> para

4 ---- DataFlex ---- │ comecar um novo menu.

Operacoes com Arquivos
╘═════════════════════════╛

5 //// DATAFLEX \\\\ ╒═════════════════╕


SYSTEM MAINTENANCE │ Help esta │
│ Disponivel │
╘═════════════════╛

ENTRE O NUMERO DO MENU A SER EDITADO:

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 94


╔═══════════════════════════════════════════════════════════════════╗
║ INTERCOMP Serie # : 29 ║
╚═══════════════════════════════════════════════════════════════════╝
┌────────────────────────────────┐
│ ---- DataFlex ---- │
│ Desenvolvimento de Programas │
└────────────────────────────────┘
┌──────────────────────────────────┐
│ 1 Editar um Arquivo Texto │
│ 2 Criar uma Aplicacao │
│ 3 Compilar um Programa DataFlex │
│ 4 Executar um Programa DataFlex │
│ 5 Manutencao de Bancos de Dados │
│ 6 Manutencao de Menus │
│ 7 Reindexar um Banco de Dados │
│ 8 Query Banco de Dados │
│ │
└──────────────────────────────────┘

Entre sua opcao: 3

Vove escolheu compilar um programa DataFlex,


digite o nome completo do arquivo a ser compilado ..

DFRUN MENUDEF (enter)

Pressione na letra "Q" de Questões para acessar menu abaixo:

SISTEMA DE MENU DATAFLEX QUESTOES


───────────────────────────────────────────────────────────────────────
EXPLANACAO: Voce escolheu editar um arquivo,
QUESTAO 1 : digite o nome completo do arquivo ..................

EXPLANACAO:
QUESTAO 2 : Digite o nome do programa a ser executado ..........

EXPLANACAO: Vove escolheu compilar um programa DataFlex,


QUESTAO 3 : digite o nome completo do arquivo a ser compilado ..

EXPLANACAO: Se voce deseja listar seu programa na impressora,


QUESTAO 4 : digite "L"; caso contrario <RETURN> ................

EXPLANACAO:
QUESTAO 5 :

EXPLANACAO:
QUESTAO 6 :

Entre com a descricao de cada questao referenciada nos campos ACAO


da outra tela, ou ESCAPE para retornar. QUAL QUESTAO A EDITAR 0

Para gravar alterações pressione duas vezes a tecla ESC e um ENTER.

Tela abaixo refere-se ao Help (ajuda) da tela acima.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 95


SISTEMA DE MENUS DATAFLEX QUESTOES
──────────────────────────────────────────────────────────────────────

╔════════════════════════════════════════════════════════════════════════╗
║O sistema de menus pode jogar questoes ao usuario quando uma opcao do║
║menu for selecionada. A resposta para a questao sera inserida na linha║
║ACAO. ║
║ ║
║Um comando requer que uma questao seja feita quando possuir um simbolo║
║"$" seguido de um numero de um a seis ($2) como parte da ACAO. A questao║
║correspondente (Ex: QUESTAO 2) sera mostrada e a resposta inserida na║
║linha de ACAO no lugar do simbolo $ utilizado. ║
║ ║
║Esta tela permite a voce criar e alterar ate seis questoes que poderao║
║ser feitas. Cada questao pode ter ate duas linhas de texto. As linhas║
║sao chamadas de EXPLANACAO e QUESTAO, com a ideia de que a primeira ira ║
║explicar as necessidades desejadas e a segunda ira na verdade fazer a ║
║pergunta. ║
║ ║
╚════════════════════════════════════════════════════════════════════════╝

SISTEMA DE MENUS DATAFLEX CONFIGURACAO


───────────────────────────────────────────────────────────────────────
MENU: 1 CABEC1: DATAFLEX
CABEC2: MODULO PRINCIPAL

MENU DEFAULT: 1 (on escape)

DESCRICAO ACAO SENHA


1. Exemplos de Aplicacoes MENU 2
2. Desenvolvimento de Programas MENU 3
3. Manutencao do Sistema MENU 5
4. Operacao com Arquivos MENU 4
5. Executa um Programa DataFlex CHAIN $1
6. Executa um Comando do Sistema $2
7. Sai para o Sistema Operacional SYSTEM
8. CALL PASSWORD SYSTEM CHAIN CADS
JUSTME
9.

(N)ovo Menu (C)abecalho (Q)uestoes (G)ravar Im(P)rimir {HELP


(I)nserir (E)xcluir (A)terar Comple(T)ar (S)aida DISPONIVEL}

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 96


SISTEMA DE MENUS DATAFLEX CONFIGURACAO
───────────────────────────────────────────────────────────────────────
MENU: 2 CABEC1: ---- DataFlex ----
CABEC2: Exemplos de Aplicacoes

MENU DEFAULT: 1 (on escape)

DESCRICAO ACAO SENHA


1. Cadastros CHAIN EXPMENU
2. Emissao de Pedidos CHAIN EXRPED
3. Relatorio de Cliente/Credito CHAIN EXRCRED
4. Listagem de Produtos CHAIN EXRPROD
5. Consulta Rapida Prod X Preco CHAIN EXRCORA
6. Estatisticas CHAIN EXPSTAT
7. Query Banco de Dados DFQUERY
8.
9.

(N)ovo Menu (C)abecalho (Q)uestoes (G)ravar Im(P)rimir {HELP


(I)nserir (E)xcluir (A)terar Comple(T)ar (S)aida DISPONIVEL}

SISTEMA DE MENUS DATAFLEX CONFIGURACAO


───────────────────────────────────────────────────────────────────────
MENU: 3 CABEC1: ---- DataFlex ----
CABEC2: Desenvolvimento de Programas

MENU DEFAULT: 1 (on escape)

DESCRICAO ACAO SENHA


1. Editar um Arquivo Texto DFEDIT $1
2. Criar uma Aplicacao DFAUTO
3. Compilar um Programa DataFlex DFCOMP $3 -$4
4. Executar um Programa DataFlex CHAIN $2
5. Manutencao de Bancos de Dados DFFILE
6. Manutencao de Menus CHAIN MENUDEF
7. Reindexar um Banco de Dados DFINDEX
8. Query Banco de Dados DFQUERY
9.

(N)ovo Menu (C)abecalho (Q)uestoes (G)ravar Im(P)rimir {HELP


(I)nserir (E)xcluir (A)terar Comple(T)ar (S)aida DISPONIVEL}

SISTEMA DE MENUS DATAFLEX CONFIGURACAO


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 97
───────────────────────────────────────────────────────────────────────
MENU: 4 CABEC1: ---- DataFlex ----
CABEC2: Operacoes com Arquivos

MENU DEFAULT: 1 (on escape)

DESCRICAO ACAO SENHA


1. Copiar Arquivo(s) COPYFILE $1 $2
2. Mostrar Arquivo(s) TYPE $3
3. Renomear Arquivo(s) RENAMEFILE $1 $2
4. Excluir Arquivo(s) ERASEFILE $4
5. Editar Arquivo Texto DFEDIT $5
6. Mostrar Diretorio DIRECTORY $6
7. ACCESSING DFFILE DFFILE
JUSTME
8.
9.

(N)ovo Menu (C)abecalho (Q)uestoes (G)ravar Im(P)rimir {HELP


(I)nserir (E)xcluir (A)terar Comple(T)ar (S)aida DISPONIVEL}

SISTEMA DE MENUS DATAFLEX CONFIGURACAO


───────────────────────────────────────────────────────────────────────
MENU: 5 CABEC1: //// DATAFLEX \\\\
CABEC2: SYSTEM MAINTENANCE

MENU DEFAULT: 1 (on escape)

DESCRICAO ACAO SENHA


1. Reindexar um Banco de Dados DFINDEX
2. Reindexar Todos Banco de Dados DFINDEX ALL$1
3. Excluir Registros Duplicados CHAIN CLEANUP
4. Excluir Formatos Query CHAIN DELQRY
5. Manutencao de Menus CHAIN MENUDEF
6. Cadastro de Mensagens de Erro CHAIN FLEXERRS
7. Importar Arquivos Texto CHAIN READ
8. Converter Arquivo dBASE CHAIN DBCONV
9.

(N)ovo Menu (C)abecalho (Q)uestoes (G)ravar Im(P)rimir {HELP


(I)nserir (E)xcluir (A)terar Comple(T)ar (S)aida DISPONIVEL

────────────────────────────────────────────────────────────────────────────
DATAFLEX 2.3b Linguagem de Quarta Geração
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 98
────────────────────────────────────────────────────────────────────────────

┌────────────┐
│MENULIST.FLX│
└────────────┘
Lista no dispositivo de saída especificado, todos os menus grava■
dos no arquivo MENU.DAT para documentação do sistema. O dispositi■
vo de saída pode ser um nome de arquivo, vídeo (CON:) ou impres■
sora (LST:)

C:\> DFRUN MENULIST (enter)

A linha de comandos acima irá imprimir todos os menus existentes


direto na IMPRESSORA.

C:\> DFRUN MENULIST CON: (enter)

A linha de comandos acima irá imprimir todos os menus existentes


no VτDEO.

┌────────────┐
│MOVEDADO.FLX│
└────────────┘
Gera um programa-fonte para movimentar registros entre dois bancos
de dados Dataflex. Ambos devem estar definidos, mas não precisam
ter a mesma estrutura.

C:\> DFRUN MOVEDADO (enter)

╔════════════════════════════════════════════════════════════════╦══════════╗
║ MOVE DADOS DE UM ARQUIVO DATAFLEX PARA OUTRO ║ MOVEDADO ║
╠════════════════════════════════════════════════════════════════╩══════════╣
║ ║
║ ESTE UTILITARIO IRA' GERAR UMA CONFIGURACAO QUE LE DADOS ║
║ DE UM ARQUIVO DATAFLEX E COPIA-OS EM OUTRO ARQUIVO DATAFLEX. ║
║ ╔══════════════════════════════════╗ ║
║ ║ Nome do Arquivo fonte DATAFLEX : ╟────────────────────┐ ║
║ ╟──────────────────────────────────╢ ┌──┼─────────┐ ║
║ ║ Verifique nome do Arquivo .TAG ╟───────────┐ ┌─┴──┴───────┐ │ ║
║ ╚══════════════════════════════════╝ │ │ MOVEX. ├─┘ ║
║ │ ├────────────┤ ║
║ └───┤MOVEX.TAG │ ║
║ └────────────┘ ║
║ ╔═══════════════════════════════════╗ ║
║ ║ Nome do Arquivo destino DATAFLEX :╟────────────────────┐ ║
║ ╟───────────────────────────────────╢ ┌──┼─────────┐ ║
║ ║ Verifique nome do Arquivo .TAG ╟───────────┐ ┌─┴──┴───────┐ │ ║
║ ╚═══════════════════════════════════╝ │ │ DBFL ├─┘ ║
║ │ ├────────────┤ ║
║ └───┤DBFL.TAG │ ║
║ └────────────┘ ║
║ Entre o nome da configuracao a ser criada: MOVEFL.FRM ║
║ Esta' correto ?: S ║
╚═══════════════════════════════════════════════════════════════════════════╝

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 99


────────────────────────────────────────────────────────────────────────────
Data Access Corporation (USA) Intercomp (SP)
────────────────────────────────────────────────────────────────────────────
O Dataflex irá mostrar a tela abaixo:

╔═════════════════════════════════════════════════════════════════════════╗
║ NOMES DOS CAMPOS DO ARQUIVO FONTE ║
║ 1 CODIGO 2 NOME 3 ENDERECO 4 CIDADE ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ Campo 1 do arquivo fonte vai para o campo do arquivo destino. ║
║ (A tecla USUARIO1 ira' alternar as telas FONTE <--> DESTINO) ║
╚═════════════════════════════════════════════════════════════════════════╝

O Dataflex irá mostrar a tela abaixo:

╔═══════════════════════════════════════════════════════════════╦══════════╗
║ MOVE DADOS DE UM ARQUIVO DATAFLEX PARA OUTRO ║ MOVEDADO ║
╠═══════════════════════════════════════════════════════════════╩══════════╣
║ ║
║ A configuracao MOVEFL.FRM100100100100100 foi criada. ║
║ ║
║ ║
║ ║
║ Este programa tem que ser compilado para ser usado ║
║ ║
║ ║
║ Voce quer compila-lo agora (S/N): S ║
╚══════════════════════════════════════════════════════════════════════════╝

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 100


Programa gerado pelo utilitário MOVEDADO usando o comando MOVE .

/* (Gerado pelo utilitario MOVEDADO (c) INTERCOMP)


// Abre arquivos: MOVEX and DBFL.
OPEN MOVEX
OPEN DBFL
CLEAR MOVEX
CLEAR DBFL

// Continua copiando ate' o fim do arquivo (EOF).


REPEAT
FIND GT MOVEX.RECNUM
// Se EOF, processo terminado.
[NOT FOUND] ABORT
MOVE MOVEX.CODIGO TO DBFL.CODIGO
MOVE MOVEX.NOME TO DBFL.NOME
MOVE MOVEX.ENDERECO TO DBFL.ENDERECO
MOVE MOVEX.CIDADE TO DBFL.CIDADE
SAVERECORD DBFL
CLEAR DBFL
SHOW "*"
// Copia outro registro.
UNTIL [FINDERR]
ABORT

══════════════════════════════════════════════════════════════════

Observe abaixo outra forma de fazer o mesmo programa usando FIELDINDEX :

/*

GOTOXY 05 10
SHOW ' Movendo dados - Aguarde ... '

INTEGER RECS

OPEN MOVEX
OPEN DBFL

REPEAT
FIND_ GT MOVEX BY INDEX.1
KEYCHECK ABORT
SHOW '>'

FOR FIELDINDEX FROM 0 TO 2


MOVE MOVEX.CODIGO& TO DBFL.CODIGO&
LOOP

[ ~ FINDERR] BEGIN
SAVERECORD DBFL
CLEAR DBFL
SHOW RECS
END
UNTIL [ FINDERR]
ABORT

┌───────────────┐
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 101
│ PRINTER.FLX │
└───────────────┘
Permite selecionar um padrão de impressão. Por exemplo suponhamos
que você queira configurar a impressora para imprimir todos os
seus relatórios com o modo de impressão -Iitálico .

C:\> DFRUN PRINTER (enter)

╔═══════════════════════════════════════════════════════════════════════╗
║ ║
║ INTERCOMP ║
║ CONTROLE CARACTERES IMPRESSAO ║
║ ║
║ ║
║ OPCOES: ║
║ 1- COMPRIMIDA 10- 10 CPP ║
║ 2- NORMAL 11- 12 CPP ║
║ 3- DUPLA 12- 15 CPP ║
║ 4- ITALICO 13- 17.1 CPP ║
║ 5- NAO ITALICO 14- 20 CPP ║
║ 6- SUBLINHADO 15- RESETA QUALQUER MODO ║
║ 7- NAO SUBLINHADO 16- MAXIMO 80 COLUNAS ║
║ 8- CARTA ║
║ 9- NAO CARTA ║
║ ║
║ ENTRE COM SUA OPCAO: [15] ║
║ ║
║ ║
║ Para sair pressione a tecla ESCAPE ║
╚═══════════════════════════════════════════════════════════════════════╝

O Dataflex irá exibir a tela abaixo:

╔══════════════════════════════════════════════════════════════════════╗
║ INTERCOMP ║
║ ║
║ CONTROLE CARACTERES IMPRESSAO ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ SUA IMPRESSORA ESTA AGORA CONFIGURADA ║
║ NAO ESQUECA DE VOLTAR A IMPRESSORA AO ║
║ SEU STATUS NORMAL ASSIM QUE TERMINAR ║
║ SEU RELATORIO. ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ ║
║ <ENTER> Retorna ao MENU <ESCAPE> Retorna ao Sistema Operacional _ ║
╚══════════════════════════════════════════════════════════════════════╝

┌──────────┐
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 102
│ READ.FLX │
└──────────┘
Este utilitário é um gerador de programas-fontes de importação de
dados de arquivos sequênciais, ou seja, arquivos-textos ou de for■
mato ASCII.

Este utilitário deve ser utilizado sempre que existir a necessida■


de de importar dados de um arquivo sequencial para um banco de da■
dos Dataflex.

Antes de executar este utilitário, deve-se definir a estrutura de


banco de dados Dataflex que receberá os dados do arquivo que será
importado. O arquivo sequencial a ser importado deve ter seu cam■
pos delimitados por vírgula , caso contrário o programa gerado de■
verá ser bastante alterado para funcionar.

Este utilitário apenas gera um programa-fonte Dataflex IMPORTADOR


de dados, que poderá ser executado após a compilação.

C:\> DFRUN READ (enter)

Arquivo texto TEXTO1.TXT

100,"CATHY DAVIS" , "RUA FRANCA, 120","RIO DOS CEDROS"


120,"DENVER HOUDSON", "RUA BELGICA, 340","TIMBO"
200,"JURANDIR A SANTOS", "RUA ESTADOS UNIDOS, 2002","TIMBO"
340,"MIKE ALLAN SANTOS", "RUA ESTADOS UNIDOS","TIMBO"
400,"SIMONE NOLLI SANTOS"," RUA ALEMANHA, 500" ,"TIMBO"

──────────────────────── Utilitario READ ───────────────────────────

Primeiramente, selecione o arquivo DataFlex que recebera os dados.


Digite o numero pedido antes de continuar.

NUMERO NOME DATAFLEX NOME BASE


══════ ══════════════════════ ═══════════════════════════════════
210 CADV CADV
249 MOVEX Movendo Dados
250 DBFL Cadastro de Clientes

<<< Fim dos Arquivos >

250
Por favor, digite o numero do arquivo que recebera os dados: ___
(PgDn para mais, PgUp para recomecar. Help Disponivel)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 103


────────────────────────── Utilitario READ ───────────────────────────

Este utilitario ira auxilia-lo na criacao de programas para a carga


de dados oriundos de um arquivo ASCII para um arquivo DataFlex

ARQUIVO DATAFLEX QUE RECEBERA OS DADOS: DBFL

Agora digite o nome do arquivo ASCII de onde os dados serao lidos:

ARQUIVO ASCII: C:\FL\PR\TEXTO1.TXT

O programa fonte que sera gerado deve possuir um nome. Digite o


nome do arquivo que contera o programa fonte. CUIDADO... caso
o nome do arquivo dado seja de um arquivo ja existente, este
sera destruido.

NOME DO PROGRAMA: TXTF.FRM _______________________________

O Dataflex irá exibir a tela abaixo:

─────────────────────────── Utilitario READ ───────────────────────────

Alguns arquivos ASCII cada elemento em uma linha, ou seja, cada


registro contem multiplas linhas. Este seria um arquivo delimitado
por linha.

Outros arquivos tem seus elementos contidos em uma unica linha


separados por virgula. Este seria um arquivo delimitado por virgula.

DIGITE "L" PARA UM ARQUIVO DELIMITADO POR LINHA;


OU "V" PARA UM ARQUIVO DELIMITADO POR VIRGULA: V

Voce pode selecionar quais elementos do arquivo ASCII irao para o


arquivo DataFlex, ou dizer ainda que o arquivo ASCII possue os mesmos
elementos do arquivo DataFlex.

Para que o arquivo ASCII seja lido para um arquivo DataFlex com definição
identica, o arquivo ASCII deve possuir o mesmo numero de elementos,
os mesmos tipos de campos e a mesma ordem que o arquivo DataFlex.

O ARQUIVO ASCII E' IDENTICO AO ARQUIVO DATAFLEX ? (S/N): S

O Dataflex irá exibir a tela abaixo:


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 104
──────────────────────── Utilitario READ ─────────────────────────────

Seu programa

TXTF.FRM

esta completo !

Voce pode compila-lo agora ou edita-lo primeiro.

Compila ? (S/N) S

Programa-fonte gerado pelo utilitário READ.FLX

/*
CLEARSCREEN
STRING TEMSTR
NUMBER RECS

DIRECT_INPUT "C:\FL\PR\TEXTO1.TXT"
[SEQEOF] ERROR 75 "C:\FL\PR\TEXTO1.TXT"
[SEQEOF] ABORT

OPEN DBFL
REPEAT
READ DBFL.CODIGO
READ DBFL.NOME
READ DBFL.ENDERECO
READ DBFL.CIDADE
READLN
[NOT SEQEOF] BEGIN
SAVERECORD DBFL
CLEAR DBFL
SHOW "*"
MOVE (RECS + 1) TO RECS
END
KEYCHECK BEGIN // Se uma tecla for pressionada
SHOWLN // verifica se o operador quer desistir
SHOWLN "UMA TECLA FOI PRESSIONADA COM " RECS " REGISTROS GRAVADOS"
SHOW "PRESSIONE QUALQUER TECLA PARA CONTINUAR OU ESCAPE PARA CANCELAR"
INKEY TEMSTR
[KEY.ESCAPE] ABORT
END
UNTIL [SEQEOF]
SHOWLN
SHOWLN RECS " REGISTROS FORAM ADICIONADOS NO ARQUIVO DBFL"
SHOW "PRESSIONE QUALQUER TECLA PARA CONTINUAR "
INKEY TEMSTR
ABORT

┌─────────────┐
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 105
│ CLEANUP.FLX │
└─────────────┘
Recupera um arquivo .BAD gerado pelo utilitário DFINDEX, permitin■
do a seleção de um dos registros duplicados ou danificados para
recolocá-lo no banco de dados.

C:\> DFRUN CLEANUP (enter)

EXCLUSAO DE REGSITROS DUPLICADOS INTERCOMP


ARQUIVOS DISPONIVEIS
Serie # 29

Estes são os arquivos disponíveis. "Aponte e Atire" naquele que


você deseja pesquisar. Pressione <HELP> para assistência.

WELCOME TO DATAFLEX - 29 - INT VERBS


SLANGS PHONE
PUPIL IND
Cad. Clientes ER2
Cad. Operacoes (Tonolli) Cad. Repres. (Kummrow)....CR00
PROD - Cad. Produtos CLI - Cad. Clientes
PED - Cad. Pedidos FORN - Cad. Fornecedores
DATA AULA
CADAL CADC - Cad. Ant. Parab. (Erlon
CAD FC - Cad. Duplicatas (Erlo
CADTEST EU
CADINST AP100 - Cad. Empresas (kummrow
CADV MOVEX
DBFL

Pressione <RETURN> para completar a selecao

Na tela abaixo escolha um dos registros duplicados para ser gravado.

Não pode haver registros duplicados, escolha um e tecle enter para


gravar o selecionado.

║ EXCLUSAO DE REGISTROS DUPLICADOS IDENTIFICACAO DO REGISTRO ║


╠══════════════════════════════════════════════════════════════════════════╣
║ Exclusao de Duplicados do DBFL ║
║ Nome DF DBFL Nome Base DBFL Excluido 0 ║
╠══════════════════════════════════════════════════════════════════════════╣
║ 1 6 ║
║ ║
╠══════════════════════════════════════════════════════════════════════════╣
║ RECNUM: 6 ║
║ CODIGO: 100 ║
║ NOME: PEDRO DOS SANTOS ║
║ ENDERECO: RUA BRASIL, 30 ║
║ CIDADE: RIO DOS CEDROS ║
║ ║
╠══════════════════════════════════════════════════════════════════════════╣
║ Aponte & Atire no registro que deseja gravar RECORD: 6 ║
║ Todos os outros serao excluidos. PRESSIONE <HELP> PARA AJUDA ║
╚══════════════════════════════════════════════════════════════════════════╝

┌────────────┐
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 106
│ DELQRY.FLX │
└────────────┘
Permite selecionar e excluir um formato de relatório gravado atra■
vés do utilitário QUERY.

C:\> DFRUN DELQRY (enter)

┌─────────────┐
│ MACRO ENTER │
└─────────────┘
Macros são um conjunto de comandos integrados que realizam várias
operações em um único programa, utilizando uma das grandes vanta■
gens do Dataflex que são os recursos de Imagens e Janelas para a
manipulação de dados.

Para realizar operações tradicionais de manutenção de banco de da■


dos de UM µNICO registro por arquivo, podendo manipular até 250
arquivos diferentes em um único programa.

OPEN banco1
OPEN banco2
OPEN banco3

ENTER banco1 banco2 banco3 ...

ENTRY banco1.campo1 janela.1 {mascara}


ENTRY banco1.campo2 janela.2 {mascara}

ENTRY banco2.campo3 janela.3 {mascara}


ENTRY banco2.campo4 janela.4 {mascara}
RETURN

ENTER.CLEAR:
:
:
RETURN

ENTER.DELETE:
:
:
RETURN

ENTER.EDIT:
:
:
RETURN

ENTER.EXIT:
:
:
RETURN

ENTER.SAVE:
:
:
RETURN

ENTEREND

MACRO ENTER

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 107


ENTER
Tem como finalidade a manutenção de banco de dados através de uma imagem de
JANELA de manutenção. Pode-se usar mais de um banco de dados, sendo que o
de primeiro banco de dados especificado deverá ser o mais baixo nível, e
todos deverão estar abertos.

ENTRY
Exibe e permite uma entrada de dados para um campo de um banco de dados
através da janela ativa no momento, ou, opcionalmente, através da
janela especificada no comando. Máscaras de entrada podem ser usadas
opcionalmente para formatar, filtrar ou criticar uma entrada de dados.
Utilize uma série de ENTRY para programar uma entrada de dados através de
uma imagem de manutenção, somente dentro de uma Macro ENTER ou ENTERGROUP.

ENTDISPLAY
Exibe o conteúdo de todos os campos utilizados nos comandos ENTRY em uma
Macro ENTER do banco de dados especificado.

RETURN
Para retorna para rotina ENTRYSEC ou ENT$LP.

ENTER.CLEAR
Permite a programação da sub-rotina que será executada automaticamente
antes que os buffers dos arquivos da linha do ENTER sejam limpos . Defina
esta rotina dentro da Macro Enter antes do comando ENTEREND.

ENTER.DELETE
Permite a programação de uma sub-rotina que será executada
automaticamente antes que um registro seja deletado . Defina esta rotina
dentro da Macro Enter antes do comandos ENTEREND.

ENTER.EDIT
Permite a programação de uma sub-rotina que será executada
automaticamente toda vez que um registro for deletado ou alterado . Defina
esta rotina dentro da Macro Enter antes do comando ENTEREND.

ENTER.EXIT
Permite a programação de uma sub-rotina que será executada
automaticamente toda vez que o programa for encerrado . Defina esta
rotina dentro da Macro Enter antes do comando ENTEREND.

ENTER.SAVE
Permite a programação de uma sub-rotina que será executada
automaticamente toda vez que um registro for incluído ou alterado . Defina
esta rotina dentro da Macro Enter antes do comando ENTEREND.

ENTEREND
Finaliza Macro ENTER

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 108


INCLUSÃO

No ato da inclusão de um registro a Macro Enter executará a sub-


rotina ENTER.SAVE. Ela irá limpar o buffer de registro do arquivo de dados e
em seguida moverá o conteúdo das janelas para o buffer, gravando-o em
seguida.

ALTERAÇÃO

Ao alterar um registro a Macro Enter executará as seguintes sub-rotinas:


ENTER.EDIT e ENTER.SAVE. A operação de alteração deve ser
precedida de uma operação de procura, para colocar o registro a ser
modificado no buffer de registro do arquivo de dados. O registro a
ser modificado no buffer de registro do arquivo de dados. A execução
da ENTER.EDIT servirá para um pré-processamento, antes dos dados das
janelas serem movidos para o buffer para serem gravados. Após isto execu
ta-se a ENTER.SAVE para gravar os dados alterados das janelas para
o arquivo de dados.

EXCLUSÃO

Para se deletar um registro é necessário que ele esteja disponível no


buffer de registro, após uma operação de procura realizada com sucesso. A
operação de exclusão é realizada com a teclagem da flex-key de lete (F6). A
Macro Enter executará então as sub-rotinas ENTER.DELETE e ENTER.EDIT na
ordem. Haverá a exclusão do registro no buffer de registro juntamente com
a atualização do arquivo de índices. O fluxo do programa passará então
para a sub-rotina Enter. Delete que fará um após-processamento nos dados.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 109


PROGRAMA-FONTE FEITO COM "MACRO ENTER"

/TELA
┌─────────────────────────────────────┐
│ │
│ CADASTRO DE CLIENTES │
│ ==================== │
│ │
│Bairro [_______________] │
│Cep [_____.] │
│Cidade [_______________] │
│Codigo [_____.] │
│Contato [_______________] │
│Endereco [____________________]│
│Fax [__________________] │
│Fone [__________________] │
│Idade [_.] │
│Nome [____________________]│
│Salario [________.__] │
│Telex [__________________] │
└─────────────────────────────────────┘
/*
OPEN CLIENTES

FORMAT TELA.1 THRU TELA.12 {AUTORETURN,AUTOBACK}


ENTER CLIENTES
AUTOPAGE TELA 1
CLIENTES.CODIGO TELA.1 {AUTOFIND,NOPUT}
IF TELA.1 EQ 0 GOTO ENTRYSEC
// ou IF TELA.1 EQ 0 GOTO ENT$LP
ENTRY CLIENTES.NOME TELA.2 {CAPSLOCK,REQUIRED}
ENTRY CLIENTES.ENDER TELA.3 {CAPSLOCK}
ENTRY CLIENTES.BAIRRO TELA.4 {CAPSLOCK} // Estados
ENTRY CLIENTES.CIDADE TELA.5 {CAPSLOCK,CHECK='SPRR'} // SP-PR-RR
ENTRY CLIENTES.CEP TELA.6
ENTRY CLIENTES.CONTATO TELA.7 {CAPSLOCK}
ENTRY CLIENTES.SALARIO TELA.8 {RANGE=1,20}
ENTRY CLIENTES.IDADE TELA.9 {RANGE=1,20}
ENTRY CLIENTES.FONE TELA.10
ENTRY CLIENTES.FAX TELA.11
ENTRY CLIENTES.TLX TELA.12

RETURN // <--- OBRIGATORIO

ENTER.SAVE: // INCLUIR (SAVE - SAVE)


GOTOXY 20 00
PAUSE ' Passando pela rotina ENTER.SAVE - SALVA '
CLEARXY 20 00
RETURN

ENTER.DELETE: // DELETAR - F6
GOTOXY 20 00
PAUSE ' Passando pela rotina ENTER.DELETE - DELETA '
CLEARXY 20 00
RETURN

ENTER.EDIT: // ALTERAR (SAVE - EDIT - SAVE)


GOTOXY 20 00
PAUSE ' Passando p/ rotina ENTER.EDIT - ALTERA E SALVA'
CLEARXY 20 00
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 110


ENTER.CLEAR: // LIMPAR - F9
GOTOXY 20 00

PAUSE ' Passando p/ rotina ENTER.CLEAR - LIMPA CAMPOS '


CLEARXY 20 00
RETURN

ENTER.EXIT: // ABORTAR - ESC


GOTOXY 20 00

PAUSE ' Passando p/ rotina ENTER.EXIT - SAI DO PROGRAMA '


CLEARXY 20 00
RETURN

ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 111


/IMAGEM
CADASTRO DE CLIENTES
====================
Codigo [_____.]
Nome [____________________]
Endereco [____________________]
Bairro [_______________]
Cidade [_______________]
Cep [_____.]
Contato [_______________]
Salario [________.__]
Idade [_.]
Fone [__________________]
Fax [__________________]
Tlx [__________________]
/*

STRING XTECLA 1
OPEN CLIENTES
FORMAT IMAGEM.1 THRU IMAGEM.12 {AUTORETURN,AUTOBACK}
ENTER CLIENTES
AUTOPAGE IMAGEM 1
ENTRY CLIENTES.CODIGO IMAGEM.1 {AUTOFIND,NOPUT}
IF IMAGEM.1 EQ 0 GOTO ENTRYSEC
ENTRY CLIENTES.NOME IMAGEM.2 {CAPSLOCK,REQUIRED}
ENTRY CLIENTES.ENDER IMAGEM.3 {CAPSLOCK}
ENTRY CLIENTES.BAIRRO IMAGEM.4 CAPSLOCK}
ENTRY CLIENTES.CIDADE IMAGEM.5 {CAPSLOCK}
ENTRY CLIENTES.CEP IMAGEM.6
ENTRY CLIENTES.CONTATO IMAGEM.7 {CAPSLOCK}
ENTRY CLIENTES.SALARIO IMAGEM.8 {RANGE=1,2000}
ENTRY CLIENTES.IDADE IMAGEM.9 {RANGE=1,20}
ENTRY CLIENTES.FONE IMAGEM.10
ENTRY CLIENTES.FAX IMAGEM.11
ENTRY CLIENTES.TLX IMAGEM.12
RETURN
ENTEREND
ABORT

KEYPROC KEY.ESCAPE
GOTOXY 24 0
PAUSE ' Saindo do programa - Tecle ENTER '
CLEARXY 24 0
ABORT
RETURN
KEYPROC KEY.USER
GOTOXY 24 0
PAUSE ' A tecla de fucao F7 foi pressionada '
ENTAGAIN
CLEARXY 24 0
RETURN
KEYPROC KEY.DELETE
GOTOXY 24 0
PASUE ' Apagar registro (S/N) ? ' WAIT XTECLA
CLEARXY 24 0
IF_ XTECLA IN 'Ss' GOTO ENTER$.DELETE
IF_ XTECLA IN 'Nn' GOTO ENT$LP
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 112


Para ver o conteúdo da Macro Enter liste o arquivo FMAC, pois
é a partir dele que você vai realmente descobrir como o Data■
flex funciona. Dizemos que o arquivo FMAC é o semi úcleo do
Dataflex, uma vez que é neste arquivo onde estão todos os co■
mandos da linguagem, com suas respectivas chamadas ao núcleo.
O Dataflex nada mais é do que uma biblioteca de rotinas escri■
tas em Linguagem "C". Contudo o Dataflex possui uma linguagem
própria, esta linguagem trata-se de uma meta-linguagem, cujo
objetivo é dar aos usuários um acesso mais fácil a estas roti■
nas em "C"

MACRO REPORT DENTRO DO ARQUIVO FMAC

MACRO ENTER
===========
#COMMAND ENTER CVWSRL#
INDICATE CONTINUE TRUE
INDICATE ENT$QUERY FALSE
ENT$LP:
GOSUB ENTRYSEC
[KEY.ESCAPE] GOTO END_ENTER
INDICATE ERR FALSE
REREAD
[ENT$QUERY] GOSUB ENTER.EDIT
[NOT ERR] ENTUPDATE
[NOT ERR] GOSUB ENTER.SAVE
[NOT ERR] MULTIBACK$ SAVE !1 !2 !3 !4 !5 !6 !7 !8 !9
UNLOCK
[NOT ERR] GOSUB ENT$CLEAR
[CONTINUE] GOTO ENT$LP
GOTO END_ENTER

ENT$CLEAR:
MULTIBACK$ CLEAR !1 !2 !3 !4 !5 !6 !7 !8 !9
INDICATE ENT$QUERY FALSE
ENTCLEAR
RETURN

KEYPROC KEY.SAVE
ENTER$.SAVE:
!A [] $285 // ENTSKIP
RETURN

KEYPROC KEY.DELETE
ENTER$.DELETE
INDICATE ERR FALSE
REREAD
[NOT ENT$QUERY] ERROR 71
[NOT ERR] GOSUB ENTER.DELETE
[NOT ERR] GOSUB ENTER.EDIT
[NOT ERR] DELETE !1
[NOT ERR] MULTIBACK$ SAVE !2 !3 !4 !5 !6 !7 !8 !9
UNLOCK
[NOT ERR] GOSUB ENT$CLEAR
RETURN ENTRYSEC

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 113


KEYPROC KEY.FIND
KEYPROC KEY.SFIND
KEYPROC KEY.NEXT
KEYPROC KEY.PREVIOUS
ENTER$.FIND
INDICATE WAS$QUERY GROUP ANY [ENT$QUERY]
[KEY.SFIND] INDICATE ENT$QUERY TRUE
[NOT ENT$QUERY] INDICATE ENT$QUERY AS |CI!x EQ |VI15
[KEY.SFIND] ENTSFIND GE
[KEY.FIND][ENT$QUERY][ENT$PERMISSIVE] ENTFIND GE
[KEY.FIND][ENT$QUERY][NOT ENT$PERMISSIVE] ENTSFIND GE
[KEY.FIND][NOT ENT$QUERY] ENTFIND GE
[KEY.NEXT][ENT$QUERY] ENTSFIND GT
[KEY.NEXT][NOT ENT$QUERY] ENTFIND GT
[KEY.PREVIOUS][ENT$QUERY] ENTSFIND LT
[KEY.PREVIOUS][NOT ENT$QUERY] ENTFIND LT
[FINDERR] INDCT$GROUP ENT$QUERY GROUP ANY [WAS$QUERY]
!A [FOUND] $283
ENTAGAIN
RETURN
KEYPROC KEY.UP
KEYRPOC KEY.FIELD
ENTER$.FIELD:
BACKFIELD
ENTXRET:
RETURN

KEYPROC KEY.CLEAR
ENTER$.CLEAR:
INDICATE ERR FALSE
GOSUB ENTER.CLEAR
[NOT ERR] GOSUB ENT$CLEAR
RETURN ENTRYSEC

KEYPROC ESCAPE
ENTER$.ESCAPE:
INDICATE ERR FALSE
GOSUB ENTER.EXIT
[NOT ERR] RETURN ENTXRET
RETURN

KEYPROC KEY.HELP
ENTER$.HELP:
HELP
ENTAGAIN
RETURN

KEYPROC KEY.PRINT
ENTER$.PRINT:
OUTPUT
ENTAGAIN
RETURN
ENTRYSEC:
ENTERMODE
!A [] $286
#ENDCOMMAND

#COMMAND ENTEREND
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 114
MAKEDEF$ ENTER.SAVE ENTER.EDIT ENTER.DELETE ENTER.CLEAR ENTER.EXIT
RETURN
END_ENTER:
CLEARSCREEN
#ENDCOMMAND

ANALIZANDO A MACRO ENTER

1) #COMMAND ENTER CVWSRL#


As letras CVWSRL# do macro comando são utilizadas em tempo de
compilação do programa, para evitar que o argumento colocado
pelo programador não esteja errado. Lembre-se que o macro EXIGE
que seus argumentos sejam nomes de arquivos. Imagine o que
aconteceria se ao invés de colocar um nome de arquivo, o pro■
gramador colocasse como primeiro argumento uma variável string
ou inteira etc...

Desta forma o compilador utiliza estas letras para saber o que


NÃO pode ser colocado como argumento do comando:

C - Não pode ser Constante.


V - Não pode ser Variável.
W - Não pode ser Window (janela).
S - Não pode ser String.
R - É um argumento Requerido (Required).
L - Não pode ser um Label.
# - Não pode ser um Indicador (Indicator).

ENT$KEY
=======

#COMMAND ENT$KEY
ENT$DISP:
!A [FOUND] $283
ENTAGAIN
RETURN

KEYPROC KEY.FIND
ENTER$.FIND:
ENTFIND GE
GOTO ENT$DISP

KEYPROC KEY.NEXT
ENTER$.NEXT:
ENTFIND GT
GOTO ENT$DISP

KEYPROC KEY.PREVIOUS
ENTER$.PREVIOUS:
ENTFIND LT
GOTO ENT$DISP

KEYPROC KEY.UP
KEYPROC KEY.FIELD
ENTER$.FIELD:
BACKFIELD
RETURN

KEYPROC KEY.CLEAR
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 115
ENTER$.CLEAR:
INDICATE ERR FALSE
ENTCLEAR
RETURN

KEYPROC KEY.SAVE
ENTER$.SAVE:
!A [] $285 // ENTSKIP
RETURN

KEYPROC KEY.HELP
ENTER$.HELP:
HELP
ENTAGAIN
RETURN

KEYPROC KEY.PRINT
ENTER$.PRINT:
OUTPUT
ENTAGAIN
RETURN
#ENDCOMMAND

Exemplo de Macro Enter


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 116
/TELA
┌───────────────────────────────┐
│ CADASTRO DE TESTES │
│ ================== │
│ │
│Codigo :___. │
│Nome :____________________│
│Idade :_. │
│Salario :________.__ │
│Data :__/__/__ │
└───────────────────────────────┘
/*

AUTOPAGE TELA
NAME XCOD XNOME XID XSAL XDTA

OPEN CADAL

ENTER CADAL

AUTOPAGE TELA

ENTRY CADAL.COD XCOD {AUTOFIND,NOPUT}

IF XCOD EQ 0 GOTO ENTRYSEC

NOME:
ENTRY CADAL.NOME XNOME {CAPSLOCK}

IF XNOME EQ '' GOTO NOME

ENTRY CADAL.IDADE XID

IF XID GT 20 GOTO ENT$LP

ENTRY CADAL.SALARIO XSAL {RANGE=1000,4000}

ENTRY CADAL.DATA XDTA {RANGE=01/01/91,31/12/92}

RETURN

ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 117


/TELA

CADASTRO DE TESTES
==================

Data: __/__/__ Hora: _.:_.:_.


,---------------------------------,
: Codigo :___. :
: Nome :____________________ :
: Idade :_. :
: Salario :________.__ :
: Data :__/__/__ :
'---------------------------------'
/*

DATE HORA MINUTO SEGUNDO


SYSDATE TELA.1 HORA MINUTO SEGUNDO
STRING TECLA 1

DISPLAY HORA TO TELA.2


DISPLAY MINUTO TO TELA.3
DISPLAY SEGUNDO TO TELA.4

AUTOPAGE TELA 5
NAME XCOD XNOME XID XSAL XDTA

OPEN CADAL

ENTER CADAL

AUTOPAGE TELA 5

ENTRY CADAL.COD XCOD {AUTOFIND,NOPUT}


IF COD EQ 0 GOTO ENTRYSEC

NOME:
ENTRY CADAL.NOME XNOME {CAPSLOCK}
IF XNOME EQ '' GOTO NOME

ENTRY CADAL.IDADE XID


IF XID GT 20 GOTO ENT$LP

ENTRY CADAL.SALARIO XSAL {RANGE=1000,4000}


ENTRY CADAL.DATA XDTA {RANGE=01/01/94,31/12/96}

RETURN

ENTEREND
ABORT

KEYPROC KEY.DOWN // Seta para baixo


GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' Voce esta usando a seta para BAIXO '
SCREENMODE 7 ON
CLEARXY 24 0
RETURN
KEYPROC KEY.UP // Seta para cima
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 118
GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' Voce esta usando a seta para CIMA '
SCREENMODE 7 ON
CLEARXY 24 0
RETURN

KEYPROC KEY.DELETE // F6 - Apaga registro


GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' Deseja APAGAR registro (S/N) ? ' WAIT TECLA
SCREENMODE 7 ON
CLEARXY 24 0
IF_ TECLA IN 'Ss' GOTO ENTER$.DELETE
IF_ TECLA IN 'nN' RETURN ENT$LP
RETURN

KEYPROC KEY.CLEAR // F9 - Limpa campos


GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' Limpar JANELAS/CAMPOS (S/N) ? ' WAIT TECLA
SCREENMODE 7 ON
CLEARXY 24 0
IF_ TECLA IN 'Ss' BEGIN
CLEARFORM TELA.5 THRU TELA.9
GOTO ENT$LP
END
IF_ TECLA IN 'nN' RETURN ENTRYSEC
RETURN

KEYPROC KEY.ESCAPE // ESC - Sai do programa


GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' Deseja sair (S/N) ? ' WAIT TECLA
SCREENMODE 7 ON
CLEARXY 24 0
IF_ TECLA IN 'Ss' ABORT
IF_ TECLA IN 'nN' RETURN ENTRYSEC
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 119


Exemplo de Macro Enter

/TELA

CADASTRO DE TESTES
==================

Data: __/__/__ Hora: _.:_.:_.


,---------------------------------,
: Codigo :___. :
: Nome :____________________ :
: Idade :_. :
: Salario :________.__ :
: Data :__/__/__ :
'---------------------------------'
/*

DATE HORA MINUTO SEGUNDO


SYSDATE TELA.1 HORA MINUTO SEGUNDO
STRING TECLA 1

DISPLAY HORA TO TELA.2


DISPLAY MINUTO TO TELA.3
DISPLAY SEGUNDO TO TELA.4

AUTOPAGE TELA 5

NAME XCOD XNOME XID XSAL XDTA

OPEN CADAL

ENTER CADAL

AUTOPAGE TELA 5

ENTRY CADAL.COD XCOD {AUTOFIND,NOPUT}


IF XCOD EQ 0 GOTO ENTRYSEC

ENTRY CADAL.NOME XNOME {CAPSLOCK}


IF XNOME EQ ''

ENTRY CADAL.IDADE XID


IF XID GT 20 GOTO ENT$LP

ENTRY CADAL.SALARIO XSAL {RANGE=1000,400000}


ENTRY CADAL.DATA XDTA {RANGE=01/01/91,31/12/92}

RETURN

ENTER.SAVE:
GOTOXY 24 0
PAUSE 'ENTER.SAVE - Inclusao - Consulta - Alteracao '
CLEARXY 24 0
RETURN

ENTER.EDIT:
GOTOXY 24 0
PAUSE ' ENTER.EDIT - Consulta - Alteracao - Delecao '
CLEARXY 24 0
RETURN
ENTER.DELETE:
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 120
GOTOXY 24 0
PAUSE ' ENTER.DELETE - Apaga <F6> '
CLEARXY 24 0
RETURN

ENTER.CLEAR:
GOTOXY 24 0
PAUSE ' ENTER.CLEAR - Limpa as janelas - <F9> '
CLEARXY 24 0
RETURN

ENTER.EXIT:
GOTOXY 24 0
PAUSE ' ENTER.EXIT - <ESC - ESC> '
CLEARXY 24 0
RETURN

ENTEREND
ABORT

Exemplo "sem" Macro Enter

/TELA
---------------------------------------------------
Cadastro de Maquinas
====================

Maquina : <__.>
Nome da Maquina : ______________________________
Valor da Maquina: _______.__
---------------------------------------------------
/*
STRING SIGLA
OPEN MAQUINA

REPEAT
INICIO:
CLEARFORM TELA.1 THRU TELA.3
ACCEPT TELA.1 TO MAQUINA.CODIGO
IF_ TELA.1 EQ 0 GOTO INICIO
[KEY.ESCAPE] SYSTEM
MOVE TELA.1 TO MAQUINA.CODIGO
FIND EQ MAQUINA BY INDEX.1
[ FOUND] DISPLAY MAQUINA.CODIGO TO TELA.1
[ FOUND] DISPLAY MAQUINA.NOME TO TELA.2
[ FOUND] DISPLAY MAQUINA.VALOR TO TELA.3
ACCEPT TELA.2 TO MAQUINA.NOME
ACCEPT TELA.3 TO MAQUINA.VALOR
SAVERECORD MAQUINA
CLEAR MAQUINA
UNTIL [KEY.ESCAPE]
ABORT

KEYPROC KEY.FIELD // F2
KEYPROC ON
BACKFIELD
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 121


KEYPROC KEY.DELETE // F6
KEYPROC ON
DELETE MAQUINA
CLEARFORM TELA.1 THRU TELA.3
GOTO INICIO
RETURN

KEYPROC KEY.CLEAR // F9
KEYPROC ON
CLEARFORM TELA.1 THRU TELA.3
CLEAR MAQUINA
GOTO INICIO
RETURN

KEYPROC KEY.ESCAPE // ESC


KEYPROC ON
ABORT
RETURN

┌──────────────────┐
│ MACRO ENTERGROUP │
└──────────────────┘
Para realizar as operações tradicionais de manutenção de banco de
dados de UM ou MAIS registros por arquivo, podendo manipular até
250 arquivos diferentes em um único programa.

OPEN banco1
OPEN bacno2

ENTERGROUP

ENTRY banco1.campo1 janela1 {mascara}

ENTRY banco1.campo2 janela2 {mascara}

ENTRY banco1.campo3 janela3 {mascara}


ENDGROUP

ENTERGROUP
ENTRY banco2.campo4 janela4 {mascara}
ENTRY banco2.campo5 janela5 {mascara}
ENTRY banco2.campo6 janela6 {mascara}
ENDGROUP

ENTERGROUP : Inicializa a ENTERGROUP, de forma semelhante à Macro

ENTER, que tem como finalidade a manutenção parcial

de um banco de dados através de uma imagem de manu■

tenção, permitindo uma flexibilidade de programação

maior do que a Macro ENTER.

ENDGROUP : Finaliza a ENTERGROUP.

ENTDISPLAY : Tem a mesma finalidade que quando utilizada na Macro ENTER.

Analize com atenção o exemplo na página seguinte:


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 122
(ENTERGROUP / ENDGROUP)

/IMAGEM1
------------------------------------------------
CLIENTES
========

Codigo : <__.>
Razao Social: ____________________________
Endereco : ____________________________
------------------------------------------------
/IMAGEM2
------------------------------------------------
ESTADOS
=======

Estado: __

Nome : _____________________________
-----------------------------------------------
/*
OPEN CLIENTES
OPEN ESTADOS

INICIO:
CLEAR CLIENTES
CLEAR ESTADOS

ENTERGROUP
PAGE IMAGEM1 AT 01 01
ENTRY CLIENTES.CODIGO IMAGEM1.1 {AUTOFIND,FINDREQ,NOPUT}
ENTRY CLIENTES.RAZAO_SOCIAL IMAGEM1.2 {DISPLAYONLY}
ENTRY CLIENTES.ENDERECO IMAGEM1.3 {DISPLAYONLY}
ENDGROUP

ENTERGROUP
PAGE IMAGEM2 AT 10 01
ENTRY ESTADOS.SIGLA IMAGEM2.1 {AUTOFIND,FINDREQ,NOPUT}
ENTRY ESTADOS.NOME IMAGEM2.2 {DISPLAYONLY}
ENDGROUP

GOTOXY 24 10
PAUSE ' Tecle ENTER '

CLEARFORM IMAGEM1.1 THRU IMAGEM1.3


CLEARFORM IMAGEM2.1 THRU IMAGEM2.2
CLEARSCREEN
GOTO INICIO

KEYPROC KEY.CLEAR
KEYPROC ON
CLEARFORM IMAGEM1.1 THRU IMAGEM1.3
CLEARFORM IMAGEM2.1 THRU IMAGEM1.2
GOTO INICIO
RETURN

KEYPROC KEY.USER // F7
KEYPROC ON
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 123
ABORT
RETURN

KEYPROC KEY.ESCAPE // ESC


KEYPROC ON
ABORT
RETURN

═══════════════════════════════════════════════════════════════

MACRO ENTERGROUP
================

#COMMAND ENTERGROUP .
#IFDEF ENT$DISP
#ELSE
INTEGER ENT$START
INTEGER ENT$END
GOTO ENTK$END
ENT$KEY
ENTK$END:
#ENDIF
ENTRYSEC!X:
ENTERMODE
!A [] $286
INDICATE ENT$QUERY FALSE
#ENDCOMMAND

#COMMAND ENDGROUP
ENTUPDATE
GOTO ENT$END!x
RETURN
ENT$END!x:
#ENDCOMMAND

┌──────────────┐
│ MACRO REPORT │
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 124
└──────────────┘
A macro Report consiste em um conjunto integrado de imagens prede■
finidas e comandos que podem ser selecionados conforme a necessi■
dade para a geração de relatórios ou arquivos-textos sequenciais
(ASCII). Só pode haver uma linha com o comando REPORT em cada pro■
grama.

REPORT arquivo BY INDEX.x [BREAK arquivo.campo arquivo.campo]

/HEADER RESIDENT
Contém a imagem que será impressa no cabeçalho .

/SUBHEADER 1 RESIDENT
/SUBHEADER 2 RESIDENT

/SUBHEADER9 RESIDENT
Contém imagem que será impressa a cada quebra do nível selecio■
nado.

/BODY RESIDENT
Contém a imagem que será impressa para cada registro seleciona■
do.

/SECTION SUBTOTAL 1 RESIDENT


/SECTION SUBTOTAL 2 RESIDENT

/SECTION SUBTOTAL 9 RESIDENT

Contém os subtotais de cada nível.

/SECTION TOTAL RESIDENT

Contém o total.

REPORTEND
FORMFEED // alimentar folha
ABORT

Exemplo de um programa feito com a MACRO REPORT .

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 125


/SELECTION

OPERACõES EM ORDEM MÂQUINA

┌─────────────────────────────────────┐
│ │
│ (V)ideo │
│ │
│ (I)mpressora │
│ │
│ (A)rquivo NOME ARQ: _______ .REL │
│ │
│ (_) Qual sua opcão ? │
│ │
└─────────────────────────────────────┘

/HEADER
USSR LTDA *** OPERACOES P/ MAQUINA. *** Data:__/__/__ Pag: __. OPREL05
+-------------------------------------------------------------------------+
: COD. DESCRICAO DA OPERACAO MAQUINA :
+-------------------------------------------------------------------------+
/SUBHEADER1
/BODY
: __. ____________________________________________ . ___________________ :
/SUBTOTAL1
: =================== :
: Total de operacoes por maquina => __. :
+-------------------------------------------------------------------------+
/*

CLEARSCREEN
PAGE SET SELECTION AT 00 00

STRING HTECLA 1 SAIDA_DADOS 8


DATE HOJE
SYSDATE HOJE

MOVE "" TO SAIDA_DADOS

OPEN OPERACAO INDEX.2


PAGE SELECTION

ACCEPT SELECTION.2
{AUTORETURN,CAPSLOCK,CHECK="VIA"}

IF SELECTION.2 EQ "V" BEGIN


MOVE -1 TO PAGEFEED
MOVE 24 TO PAGEEND
MOVE "CON:" TO SAIDA_DADOS
END

IF SELECTION.2 EQ "I" BEGIN


MOVE 0 TO PAGEFEED
MOVE 60 TO PAGEEND
MOVE "" TO SAIDA_DADOS
END

IF SELECTION.2 EQ "A" BEGIN


ACCEPT SELECTION.1 {CAPSLOCK}
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 126
MOVE 0 TO PAGEFEED
MOVE 60 TO PAGEEND
APPEND SAIDA_DADOS SELECTION.1 ".REL"
END
OUTFILE SAIDA_DADOS
CLEARSCREEN

REPORT OPERACAO BY INDEX.2 BREAK OPERACAO.MAQUINA

SECTION HEADER
CLEARSCREEN
PRINT HOJE TO HEADER.1
PRINT PAGECOUNT TO HEADER.2
OUTPUT HEADER

SECTION SUBHEADER1
OUTPUT SUBHEADER1
SECTION BODY
PRINT OPERACAO.CODIGO TO BODY.1
PRINT OPERACAO.DESCR_OPER TO BODY.2
PRINT OPERACAO.MAQUINA TO BODY.3
OUTPUT BODY
SECTION SUBTOTAL1
PRINT RECCOUNT TO SUBTOTAL1.1
OUTPUT SUBTOTAL1
MOVE 0 TO RECCOUNT
RETURN
RPT.KEYPRESS:
SCREENMODE 143 ON
SHOWXY 24 18 " I N T E R R O M P E R (S/N) ? "
SCREENMODE 7 ON
INKEY HTECLA
CLEARXY 23 00
IF HTECLA IN "Ss" RETURN END$OF$REPORT
RETURN RPT.LOOP
REPORTEND
FORMFEED
CLEARSCREEN
KEYPROC KEY.ESCAPE
ABORT

Resultado do programa da página anterior:


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 127
USRR LTDA *** OPERACOES P/ MAQUINA. *** Data:18/11/92 Pag: 1 OPREL05
+-------------------------------------------------------------------------+
: COD. DESCRICAO DA OPERACAO MAQUINA :
+-------------------------------------------------------------------------+
: 29 BORDAR 24 . BORDADEIRA :
: =================== :
: Total de operacoes por maquina => 1 :
+-------------------------------------------------------------------------+
: 23 CASEAR 18 . CASEADEIRA :
: =================== :
: Total de operacoes por maquina => 1 :
+-------------------------------------------------------------------------+
: 85 CORTAR 80 . CORTE :
: =================== :
: Total de operacoes por maquina => 1 :
+-------------------------------------------------------------------------+
: 8 FAZER PREGA 4 . COST RETA :
: 9 FIX BOLSO 4 . COST RETA :
: 11 PRG BOLSO CHAP COSTAS 6 . COST RETA :
: 14 FAZER ABERTURA 9 . COST RETA :
: 15 FIX PONTA ELASTICO LATERAL 10 . COST RETA :
: 18 PRG COS FRENTE E FIX ELASTICO LAT 13 . COST RETA :
: 20 FAZER COS E PRENDER PASSANTES 15 . COST RETA :
: 21 BAINHA PERNAS 16 . COST RETA :

COMO É A MACRO REPORT DENTRO DO ARQUIVO FMAC DO DATAFLEX 2.3b

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 128


REPORT
======
#COMMAND REPORT T "BY""DOWN" VFW%LGR "BREAK"""
INTEGER RECCOUNT
MOVEINT 20000 TO LINECOUNT
BREAKINIT
INDICATE FIRSTREC TRUE
#IFSAME !2 BY
FIND GE !1 BY !3
#ELSE
FIND LE !1 BY !3
#ENDIF
[~FOUND] GOTO END$OF$REPORT
RPT.LOOP:
INDICATE SELECT TRUE
GOSUB RPT.SELECTION
[NOT SELECT] GOTO RPT.CONT
BREAK$ !5 !6 !7 !8 !9
[NOT FIRSTREC] BREAK$DOWN RPT.SUBTOTAL
RELATE !1
BREAK$UP RPT.SUBHEADER
INCREMENT RECCOUNT
GOSUB RPT.BODY
INDICATE FIRSTREC FALSE
RPT.CONT:
#IFSAME !2 BY
FIND GT !1 BY !3
#ELSE
FIND LT !1 BY !3
#ENDIF
KEYCHECK
[FOUND NOT KEYPRESS] GOTO RPT.LOOP
[KEYPRESS] GOSUB RPT.KEYPRESS
END.OF.REPORT:
[~ FIRSTREC] BREAK$DOWN RPT.SUBTOTAL $X
[~ FIRSTREC] GOSUB RPT.TOTAL
GOTO END$OF$REPORT
NEWPAGE:
GOSUB RPT.HEADER
[NOT FIRSTREC] BREAK$PRT SUBHEADER
RETURN
RPT.SELECTION:
#ENDCOMMAND

#COMMAND REPORTEND
MAKEDEF$ RPT.HEADER RPT.SELECTION RPT.BODY RPT.TOTAL
BREAK$T3
RETURN
#IFDEF RPT.KEYPRESS
#ELSE

RPT.KEYPRESS:
STRING AKEY$ 1
SHOWLN 'UMA tecla foi pressionada !'
SHOW 'Voce deseja interromper o relatorio (S/N) ? '
INKEY AKEY$
IF NOT AKEY$ IN 'Ss' RETURN RPT.LOOP
INDCT$AS SELECT AS AKEY$ IN 'Ss'
[~ SELECT] RETURN RPT.LOOP
RETURN END$OF$REPORT
#ENDIF
END$OF$REPORT:
#ENDCOMMAND

EXEMPLOS DE RELATδRIOS COM "MACRO REPORT"

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 129


/SELECTION
---------------------------------------------------------------------------

RELATδRIO DE CLIENTES
======================

(V)ídeo

(I)mpressora

(A)rquivo NOME ARQ: _______ .REL

(_) Qual sua opção ?

---------------------------------------------------------------------------

/HEADER
** CAD. DE PEDIDOS *** Data:__/__/__ Date: _.:_.:_. Prog: R01 Pag: __.
+---------------------------------------------------------------------------+
: PRODUTO CLIENTE QTDE DATA COMPRA :
+---------------------------------------------------------------------------+
/SUBHEADER1
| Codigo:__. :
/BODY
: ____________________ ___________________ _____. __/__/__ :
/SUBTOTAL1
: -------- :
: Total do Pedido => _z,__,__. :
+---------------------------------------------------------------------------+
/TOTAL
: --------- :
: Total de todos os Pedidos => _z,__,__. :
+---------------------------------------------------------------------------+
/*

CLEARSCREEN
PAGE SET SELECTION AT 01 01

STRING HTECLA 1 SAIDA_DADOS 8


DATE HOJE H M S
SYSDATE HOJE H M S

INTEGER XREC

MOVE "" TO SAIDA_DADOS

PAGE SELECTION

OPEN PED
OPEN CLI
OPEN PROD

ACCEPT SELECTION.2 {AUTORETURN,CAPSLOCK,CHECK="VIA"}


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 130
IF SELECTION.2 EQ "V" BEGIN
MOVE -1 TO PAGEFEED
MOVE 24 TO PAGEEND
MOVE "CON:" TO SAIDA_DADOS
END

IF SELECTION.2 EQ "I" BEGIN


MOVE 0 TO PAGEFEED
MOVE 60 TO PAGEEND
MOVE "" TO SAIDA_DADOS
END

IF SELECTION.2 EQ "A" BEGIN


ACCEPT SELECTION.1 {CAPSLOCK}
MOVE 0 TO PAGEFEED
MOVE 60 TO PAGEEND
APPEND SAIDA_DADOS SELECTION.1 ".REL"
END

OUTFILE DADOS
CLEARSCREEN

REPORT PED BY INDEX.1 BREAK PED.COD_PED

[ ~ SELECT] GOTO END$OF$REPORT

SECTION HEADER
CLEARSCREEN
PRINT HOJE TO HEADER.1
PRINT H TO HEADER.2
PRINT M TO HEADER.3
PRINT S TO HEADER.4
PRINT PAGECOUNT TO HEADER.5
OUTPUT HEADER

SECTION SUBHEADER1
PRINT PED.COD_PED TO SUBHEADER1.1
OUTPUT SUBHEADER1

SECTION BODY
PRINT PROD.DESCR_PROD TO BODY.1
FIND GT CLI BY INDEX.1
PRINT CLI.CLIENTE TO BODY.2

PRINT PED.QTDE_DO_PEDIDO TO BODY.3


PRINT PED.DTA_PEDIDO TO BODY.4
OUTPUT BODY

SECTION SUBTOTAL1
SUBTOTAL BODY.3 TO SUBTOTAL1.1
OUTPUT SUBTOTAL1

SECTION TOTAL
SUBTOTAL SUBTOTAL1.1 TO TOTAL.1
OUTPUT TOTAL

RETURN

RPT.KEYPRESS:
SCREENMODE 143 ON
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 131
SHOWXY 24 18 " I N T E R R O M P E R (S/N) ? "
SCREENMODE 7 ON
INKEY HTECLA
CLEARXY 23 00
IF HTECLA IN "Ss" RETURN END$OF$REPORT
RETURN RPT.LOOP
REPORTEND
FORMFEED
CLEARSCREEN

KEYPROC KEY.ESCAPE
CLEARSCREEN
CHAIN 'SIS1'
RETURN

Abaixo segue outro exemplo de relatório.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 132


/SELECTION

(V)ideo

(I)mpressora

(A)rquivo NOME ARQ: _______ .REL

(_) Qual sua opcao ?

/HEADER
_ ___________ _ ** CONTA CORRENTE ** DATA: __/__/__ PAG: __.
+----------------------------------------------------------------------------
+
: CONTA CORRENTISTA DATA ABERTURA QTDE LANCTO
:
+----------------------------------------------------------------------------
+
/BODY
_____. _____________________________ __/__/__ __,___.__
/FOOTER_COMPLETE
:
:
/FOOTER
+----------------------------------------------------------------------------
+
/*
CLEARSCREEN
PAGE SET SELECTION AT 01 01
STRING HTECLA 1 DADOS 8
DATE HOJE H M S
SYSDATE HOJE H M S
INTEGER XREC
MOVE "" TO DADOS 8
PAGE SELECTION
OPEN PED
OPEN CLI
OPEN PROD
ACCEPT SELECTION.2 {AUTORETURN,CAPSLOCK,CHECK="VIA"}
IF SELECTION.1 EQ 'V' BEGIN
MOVE -1 TO PAGEFEED
MOVE 24 TO PAGEEND
MOVE "CON:" TO DADOS
END
IF SELECTION.2 EQ "I" BEGIN
STRING EXP NORMAL BEEP
CHARACTER 7 TO BEEP
CHARACTER 14 TO EXP
CHARACTER 20 TO NORMAL
PRINT EXP TO HEADER.1
PRINT 'HERMMANN' TO HEADER.2
PRINT NORMAL TO HEADER.3
MOVE 0 TO PAGEFEED
MOVE 60 TO PAGEEND
MOVE "" TO DADOS
END

IF SELECTION.2 EQ "A" BEGIN


ACCEPT SELECTION.1 {CAPSLOCK}
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 133
MOVE 0 TO PAGEFEED
MOVE 60 TO PAGEEND
APPEND DADOS SELECTION.1 ".REL"
END // Sera criado um arquivo
// com a extensao "REL"
OUTFILE DADOS
CLEARSCREEN
REPORT CONTAS BY INDEX.1 BREAK CONTAS.NR_CONTA
SECTION HEADER
PRINT HOJE TO HEADER.4
PRINT PAGECOUNT TO HEADER.5
OUTPUT HEADER
SECTION BODY
PRINT CONTAS.NR_CONTA
PRINT CONTAS.CORRENTISTA
PRINT CONTAS.DTA_ABERTURA
PRINT CONTAS.QTDE_LANCTO
OUTPUT BODY
SECTION FOOTER_COMPLETE
OUTPUT FOOTER_COMPLETE
SECTION FOOTER
OUTPUT FOOTER
RETURN
RPT.KEYPRESS:
SCREENMODE 143 ON
SHOWXY 24 18 "Deseja interromper RELATORIO (S/N) ?"
SCREENMODE 7 ON
INKEY HTECLA
CLEARXY 23 00
IF HTECLA IN "Ss" RETURN END$OF$REPORT
RETURN RPT.LOOP
REPORTEND
FORMFEED
CLEARSCREEN

/SELECTION
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 134
TEMPOS = OPERACõES / MODELO
===========================

Codigo : <__.> (999) Lista tudo


Maquina: [____________________]

┌─────────────────────────────────────┐
│ │
│ (V)ideo │
│ │
│ (I)mpressora │
│ │
│ (A)arquivo NOME ARQ: _______ .REL │
│ │
│ (_) Qual sua opcão ? │
│ │
└─────────────────────────────────────┘

/HEADER RESIDENT
IND. & COM. FRIDA LTDA * TEMPOS: OPERACAOES / MAQUINAS
*** Data:__/__/__ Pag: __. OPREL04
+------+------+------+------+------+------+------+------+------+------+------
+------+------+------+------+------+------+------+
:MOD-5 :MOD-7 :MOD-8 :MOD-9 :MOD-11:MOD-12:MOD-17:COD-21:COD-23:MOD-27:MOD-
28:MOD-29:MOD-32:MOD-33:MOD-34:MOD-36:MOD-42:MOD-43:
+------+------+------+------+------+------+------+------+------+------+------
+------+------+------+------+------+------+------+
/SUBHEADER1 RESIDENT
OPERACAO : _____________________________________________
*********************************************
/BODY

_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:
_z.___:_z.___:_z.___:_z.___:6_.___:_z.___:_z.___:
/SUBTOTAL1
-----------------------------------------------------------------------------
---------------------------------------------------
_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:
_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:
=============================================================================
=================================================
/TOTAL RESIDENT
*****************************************************************************
**************************************************
:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___
:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:_z.___:
*****************************************************************************
**************************************************
/*

CLEARSCREEN
PAGE SET SELECTION AT 00 00

STRING HTECLA 1 DADOS 8


DATE HOJE
SYSDATE HOJE

STRING COND XD
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 135
INTEGER XC
CHARACTER 15 TO COND

MOVE "" TO DADOS

OPEN OPERACAO

ENTERGROUP
ENT.1:
ENTRY OPERACAO.CODIGO
CLEAR MAQUI
MOVE SELECTION.1 TO MAQUI.CODIGO
FIND EQ MAQUI BY INDEX.1
[ FINDERR] BEGIN
GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' Registro nao existe ... '
SCREENMODE 7 ON
CLEARXY 24 0
GOTO ENT.1
END
[KEY.NEXT ] ENTSFIND GT
[KEY.DOWN ] ENTSFIND GT
[KEY.PREVIOUS] ENTFIND LT
[KEY.UP ] ENTFIND LT

IF_ SELECTION.1 EQ 999 GOTO TUDO


ENTRY OPERACAO.MAQUINA {AUTOFIND,CAPSLOCK}
ENDGROUP

TUDO:
PAGE SELECTION
ACCEPT SELECTION.4
{AUTORETURN,CAPSLOCK,CHECK="VIA"}

IF SELECTION.4 EQ "V" BEGIN


MOVE -1 TO PAGEFEED
MOVE 24 TO PAGEEND
MOVE "CON:" TO DADOS
END

IF SELECTION.4 EQ "I" BEGIN


WRITE COND
MOVE 0 TO PAGEFEED
MOVE 60 TO PAGEEND
MOVE "" TO DADOS
END

IF SELECTION.4 EQ "A" BEGIN


ACCEPT SELECTION.3 {CAPSLOCK}
MOVE 0 TO PAGEFEED
MOVE 60 TO PAGEEND
APPEND DADOS SELECTION.3 ".REL"
END
OUTFILE DADOS
CLEARSCREEN

REPORT OPERACAO BY INDEX.2 BREAK OPERACAO.MAQUINA


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 136
IF_ SELECTION.1 EQ 999 GOTO SKIP

INDICATE SELECT AS OPERACAO.CODIGO EQ SELECTION.1


INDICATE SELECT AS OPERACAO.MAQUINA EQ SELECTION.2
[ ~ SELECT] GOTO END$OF$REPORT
SKIP:
SECTION HEADER
CLEARSCREEN
PRINT HOJE TO HEADER.1
PRINT PAGECOUNT TO HEADER.2
OUTPUT HEADER

SECTION SUBHEADER1
PRINT OPERACAO.DESCR_OPER TO SUBHEADER1.1
OUTPUT SUBHEADER1

SECTION BODY
PRINT OPERACAO.MOD_5 TO BODY.1
PRINT OPERACAO.MOD_7 TO BODY.2
PRINT OPERACAO.MOD_8 TO BODY.3
PRINT OPERACAO.MOD_9 TO BODY.4
PRINT OPERACAO.MOD_11 TO BODY.5
PRINT OPERACAO.MOD_12 TO BODY.6
PRINT OPERACAO.MOD_17 TO BODY.7
PRINT OPERACAO.MOD_21 TO BODY.8
PRINT OPERACAO.MOD_23 TO BODY.9
PRINT OPERACAO.MOD_27 TO BODY.10
PRINT OPERACAO.MOD_28 TO BODY.11
PRINT OPERACAO.MOD_29 TO BODY.12
PRINT OPERACAO.MOD_32 TO BODY.13
PRINT OPERACAO.MOD_33 TO BODY.14
PRINT OPERACAO.MOD_36 TO BODY.15
PRINT OPERACAO.MOD_34 TO BODY.16
PRINT OPERACAO.MOD_42 TO BODY.17
PRINT OPERACAO.MOD_43 TO BODY.18
OUTPUT BODY

SECTION SUBTOTAL1
SUBTOTAL BODY.1 TO SUBTOTAL1.1
SUBTOTAL BODY.2 TO SUBTOTAL1.2
SUBTOTAL BODY.3 TO SUBTOTAL1.3
SUBTOTAL BODY.4 TO SUBTOTAL1.4
SUBTOTAL BODY.5 TO SUBTOTAL1.5
SUBTOTAL BODY.6 TO SUBTOTAL1.6
SUBTOTAL BODY.7 TO SUBTOTAL1.7
SUBTOTAL BODY.8 TO SUBTOTAL1.8
SUBTOTAL BODY.9 TO SUBTOTAL1.9
SUBTOTAL BODY.10 TO SUBTOTAL1.10
SUBTOTAL BODY.11 TO SUBTOTAL1.11
SUBTOTAL BODY.12 TO SUBTOTAL1.12
SUBTOTAL BODY.13 TO SUBTOTAL1.13
SUBTOTAL BODY.14 TO SUBTOTAL1.14
SUBTOTAL BODY.15 TO SUBTOTAL1.15
SUBTOTAL BODY.16 TO SUBTOTAL1.16
SUBTOTAL BODY.17 TO SUBTOTAL1.17
SUBTOTAL BODY.18 TO SUBTOTAL1.18
OUTPUT SUBTOTAL1

SECTION TOTAL
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 137
SUBTOTAL SUBTOTAL1.1 TO TOTAL.1
SUBTOTAL SUBTOTAL1.2 TO TOTAL.2
SUBTOTAL SUBTOTAL1.3 TO TOTAL.3
SUBTOTAL SUBTOTAL1.4 TO TOTAL.4
SUBTOTAL SUBTOTAL1.5 TO TOTAL.5
SUBTOTAL SUBTOTAL1.6 TO TOTAL.6
SUBTOTAL SUBTOTAL1.7 TO TOTAL.7
SUBTOTAL SUBTOTAL1.8 TO TOTAL.8
SUBTOTAL SUBTOTAL1.9 TO TOTAL.9
SUBTOTAL SUBTOTAL1.10 TO TOTAL.10
SUBTOTAL SUBTOTAL1.11 TO TOTAL.11
SUBTOTAL SUBTOTAL1.12 TO TOTAL.12
SUBTOTAL SUBTOTAL1.13 TO TOTAL.13
SUBTOTAL SUBTOTAL1.14 TO TOTAL.14
SUBTOTAL SUBTOTAL1.15 TO TOTAL.15
SUBTOTAL SUBTOTAL1.16 TO TOTAL.16
SUBTOTAL SUBTOTAL1.17 TO TOTAL.17
SUBTOTAL SUBTOTAL1.18 TO TOTAL.18
OUTPUT TOTAL

RETURN

RPT.KEYPRESS:
SCREENMODE 143 ON
SHOWXY 24 18 " I N T E R R O M P E R (S/N) ? "
SCREENMODE 7 ON
INKEY HTECLA
CLEARXY 23 00
IF HTECLA IN "Ss" RETURN END$OF$REPORT
RETURN RPT.LOOP
REPORTEND
FORMFEED
CLEARSCREEN

KEYPROC KEY.ESCAPE
CLEARSCREEN
CHAIN 'MENUX2'
RETURN

/SELECTION

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 138


ONDE VOCE QUER IMPRIMIR O SEU ARQUIVO

╓──────────────────────────────────────────────────────────╖
║ ║
║ (T)ela (I)mpressora (A)rquivo Nome do Arq: _______ .REL ║
║ ║
║ ║
║ (_) Qual e a sua opcao ? ║
║ ║
╙──────────────────────────────────────────────────────────╜

/HEADER
=============================================================================
_ ______________________ _ Data: __/__/__ Hora: _.:_.:_. Pag. #: __.
=============================================================================
/SUBHEADER1
_____________________
=====================
/BODY
______________________________________________________________
______________________________________________________________

/SUBTOTAL1
+--------------------------------------------------------------------------+
: Recs per word : ___.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:
+---------------------------------------------------------------------------+
/TOTAL
+---------------------------------------------------------------------------+
: Total idioms : ___.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:
+---------------------------------------------------------------------------+
/*

CLEARSCREEN
PAGE SET SELECTION AT 10 05

STRING SAIDA 8 HTECLA 1 CON 1 EXP 1 NOR 1


MOVE "" TO SAIDA

DATE DAY H M S
SYSDATE DAY H M S

CHARACTER 15 TO CON
CHARACTER 14 TO EXP
CHARACTER 20 TO NOR

OPEN SLANGS INDEX.1

PAGE SET SELECTION AT 5 04

ACCEPT SELECTION.2
{AUTORETURN,CAPSLOCK,CHECK="TIA"}

IF SELECTION.2 EQ "T" BEGIN


MOVE -1 TO PAGEFEED
MOVE 24 TO PAGEEND
MOVE "CON:" TO SAIDA
END

IF SELECTION.2 EQ "I" BEGIN


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 139
MOVE 0 TO PAGEFEED
MOVE 60 TO PAGEEND
MOVE "" TO SAIDA
END

IF SELECTION.2 EQ "A" BEGIN


ACCEPT SELECTION.1 {CAPSLOCK}
MOVE 0 TO PAGEFEED
MOVE 60 TO PAGEEND
APPEND SAIDA SELECTION.1 ".REL"
END

OUTFILE SAIDA
CLEARSCREEN

REPORT SLANGS BY INDEX.1 BREAK SLANGS.VERBO

SECTION HEADER
PRINT EXP TO HEADER.1
PRINT 'SLANGS ' TO HEADER.2
PRINT NOR TO HEADER.3
WRITE CON
PRINT DAY TO HEADER.4
PRINT H TO HEADER.5
PRINT M TO HEADER.6
PRINT S TO HEADER.7
PRINT PAGECOUNT TO HEADER.8
INCREMENT PAGECOUNT
OUTPUT HEADER

SECTION SUBHEADER1
PRINT SLANGS.VERBO TO SUBHEADER1.1
OUTPUT SUBHEADER1

SECTION BODY
PRINT SLANGS.EXPRECAO TO BODY.1
PRINT SLANGS.TRADUCAO TO BODY.2
OUTPUT BODY

SECTION SUBTOTAL1
PRINT RECCOUNT TO SUBTOTAL1.1
OUTPUT SUBTOTAL1

MOVE 0 TO RECCOUNT

SECTION TOTAL
SUBTOTAL SUBTOTAL1.1 TO TOTAL.1
OUTPUT TOTAL

[ FINDERR] BEGIN
GOTOXY 24 00
SCREENMODE 112 ON
PAUSE ' END OF REPORT - PRESS ENTER '
SCREENMODE 7 ON
CLEARSCREEN
CHAIN 'MENPUP'
END
RETURN
RPT.KEYPRESS:
SCREENMODE 143 ON
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 140
SHOWXY 24 18 "Would you like to leave the report (Y/N) ?"
SCREENMODE 7 ON
INKEY HTECLA
CLEARXY 23 00
IF HTECLA IN "Yy" RETURN END$OF$REPORT
RETURN RPT.LOOP
REPORTEND
FORMFEED
CLEARSCREEN

KEYPROC KEY.ESCAPE
CLEARSCREEN
CHAIN 'MENPUP'
RETURN

Segue abaixo outro exemplo de como criar um relatorio:


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 141
/SELECTION
===================== MOVTO DE ESTOQUE ==========================

Setor:_. Produto:___. Movto:_. (1-Entrada 2-Venda 3-Transf)


Periodo:__/__/__-__/__/__

(V)ideo (I)mpressora (_)


================================================================
/HEADER RESIDENT
EMREPSA XY MOVIMENTO DE ESTOQUE _.:_.:_. __/__/__ Pag: __.
+===========================================================================+
| Movimento Data Nr.Doc Estoque
+===========================================================================+
/SUBHEADER1
| Setor: _.
|
| *********
|
/SUBHEADER2
| _______
|
| *******
|
/SUBHEADER3
| ___. ________
|
| **** ********
|
/SUBHEADER4
| __/__/__
|
| ********
|
/BODY
| ............ ___. ___,___.
|
/SUBTOTAL1
| ========
|
| ___,___.
|
/SUBTOTAL4
| ========
|
| ___,___.
|
/TOTAL
+----------------------------------------------------------------------------
+
| Total de registros MOVIMENTADOS: __.
|
+----------------------------------------------------------------------------
+
| 1-Fabrica 2-Citi 3-Centro 4-Contin 5-Xv Nov 6-Russi 7-Balneario 8-Sorriso
|
+----------------------------------------------------------------------------
+
/*

MENU_REQUIRED
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 142
PAGE SELECTION AT 5 5 COLORS 75 79

STRING HTECLA 1
INTEGER PAG XT1 XT2 XT3
DATE HOJE H M S
SYSDATE HOJE H M S
MOVE 0 TO PAG

OPEN MOVTO INDEX.1


OPEN PRODUTO

ACCEPT SELECTION.1
ACCEPT SELECTION.2
ACCEPT SELECTION.3
ACCEPT SELECTION.4
ACCEPT SELECTION.5

MOVE 'V' TO SELECTION.6


ACCEPT SELECTION.6 {AUTORETURN,CAPSLOCK,CHECK="VIA"}

IF SELECTION.6 EQ "V" BEGIN


MOVE -1 TO PAGEFEED
MOVE 24 TO PAGEEND
OUTFILE "CON:"
END

IF SELECTION.6 EQ "I" BEGIN


MOVE 0 TO PAGEFEED
MOVE 60 TO PAGEEND
OUTFILE 'LST:'
END

CLEAR MOVTO
MOVE SELECTION.1 TO MOVTO.SETOR
MOVE SELECTION.2 TO MOVTO.COD_PROD
MOVE SELECTION.3 TO MOVTO.TIPO_MOVTO
MOVE SELECTION.4 TO MOVTO.DATA

REPORT MOVTO BY INDEX.6 BREAK MOVTO.SETOR MOVTO.COD_PROD


MOVTO.TIPO_MOVTO ;
MOVTO.DATA

IF SELECTION.1 EQ 0 GOTO P1
INDICATE SELECT AS MOVTO.SETOR EQ SELECTION.1
[~SELECT] RETURN END.OF.REPORT

P1:
IF SELECTION.2 EQ 0 GOTO P2
INDICATE SELECT AS MOVTO.COD_PROD EQ SELECTION.2
[~SELECT] RETURN END.OF.REPORT

P2:
IF SELECTION.3 EQ 0 GOTO P3
INDICATE SELECT AS MOVTO.TIPO_MOVTO EQ SELECTION.3
[~SELECT] RETURN END.OF.REPORT

P3:
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 143
IF SELECTION.4 EQ 0 GOTO PULA
INDICATE SELECT AS MOVTO.DATA GE SELECTION.4
[ SELECT] INDICATE SELECT AS MOVTO.DATA LE SELECTION.5
[~SELECT] RETURN END.OF.REPORT

PULA:
SECTION HEADER
CLEARSCREEN
PRINT H TO HEADER.1
PRINT M TO HEADER.2
PRINT S TO HEADER.3
PRINT HOJE TO HEADER.4
INCREMENT PAG
PRINT PAG TO HEADER.5
OUTPUT HEADER

SECTION SUBHEADER1
PRINT MOVTO.SETOR TO SUBHEADER1.1
OUTPUT SUBHEADER1

SECTION SUBHEADER2
IF MOVTO.SETOR EQ 1 PRINT 'Fabrica' TO SUBHEADER2.1
IF MOVTO.SETOR EQ 2 PRINT 'Citi' TO SUBHEADER2.1
IF MOVTO.SETOR EQ 3 PRINT 'Centro' TO SUBHEADER2.1
IF MOVTO.SETOR EQ 4 PRINT 'Contin' TO SUBHEADER2.1
IF MOVTO.SETOR EQ 5 PRINT 'Xv Nov' TO SUBHEADER2.1
IF MOVTO.SETOR EQ 6 PRINT 'Bal Camb' TO SUBHEADER2.1
IF MOVTO.SETOR EQ 7 PRINT 'Sorriso' TO SUBHEADER2.1
OUTPUT SUBHEADER2

SECTION SUBHEADER3
PRINT MOVTO.COD_PROD TO SUBHEADER3.1
IF MOVTO.TIPO_MOVTO EQ 1 PRINT 'Entrada' TO SUBHEADER3.2
IF MOVTO.TIPO_MOVTO EQ 2 PRINT 'Venda' TO SUBHEADER3.2
IF MOVTO.TIPO_MOVTO EQ 3 PRINT 'Transf.' TO SUBHEADER3.2
OUTPUT SUBHEADER3

SECTION SUBHEADER4
PRINT MOVTO.DATA TO SUBHEADER4.1
OUTPUT SUBHEADER4

SECTION BODY
PRINT MOVTO.NR_DOCTO TO BODY.1
PRINT MOVTO.ESTOQUE TO BODY.2
OUTPUT BODY

SECTION SUBTOTAL1
SUBTOTAL SUBTOTAL4.1 TO SUBTOTAL1.1
OUTPUT SUBTOTAL1

SECTION SUBTOTAL4
SUBTOTAL BODY.2 TO SUBTOTAL4.1
OUTPUT SUBTOTAL4

SECTION TOTAL
PRINT RECCOUNT TO TOTAL.1
// SUBTOTAL SUBTOTAL2.1 TO TOTAL.2
OUTPUT TOTAL

RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 144


RPT.KEYPRESS:
SCREENMODE 143 ON
GOTOXY 23 17
SHOW "Deseja interromper RELATORIO (S/N) ?"
SCREENMODE 7 ON
INKEY HTECLA
CLEARXY 23 00
IF HTECLA IN "Ss" RETURN END$OF$REPORT
RETURN RPT.LOOP
REPORTEND
FORMFEED
CLEARSCREEN

CHAIN 'MENUMOV

KEYPROC KEY.ESCAPE
CHAIN 'MENUMOV'
RETURN

Exemplo de relatorio consulta por DATA

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 145


/SELECTION
========================

__/__/__ a __/__/__

(V)ideo (I)mpressora

(_) Qual sua OPÇÃO ?

========================

/HEADER RESIDENT
Relatorio de NOTAS FISCAIS _.:_.:_. __/__/__ Pag: _.
+---------------------------------------------------------------------------+
| Nr Nota Remetente Destinatario Valor Frete Entrega
|
+---------------------------------------------------------------------------+
/SUBHEADER1
| __/__/__
|
| ********
|
/BODY RESIDENT
|_______. ________________ ______________ __,___.__ _______
_________________|
| Notas: ____________________________________________________
|
/SUBTOTAL1
+---------------------------------------------------------------------------+
| Notas: __. A receber -> __,___.__
+---------------------------------------------------------------------------+
/*

MENU_REQUIRED

PAGE SELECTION AT 6 28 COLORS 75 79

STRING HTECLA 1
INTEGER PAG
DATE HOJE H M S
SYSDATE HOJE H M S

MOVE 0 TO PAG

OPEN NOTAF
OPEN REMETE
OPEN DESTINA

ACCEPT SELECTION.1
MOVE SELECTION.1 TO SELECTION.2
ACCEPT SELECTION.2

MOVE 'V' TO SELECTION.3


ACCEPT SELECTION.3 {AUTORETURN,CAPSLOCK,CHECK="VI"}

IF SELECTION.3 EQ "V" BEGIN


MOVE -1 TO PAGEFEED
MOVE 24 TO PAGEEND
OUTFILE "CON:"
END
IF SELECTION.3 EQ "I" BEGIN
MOVE 0 TO PAGEFEED
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 146
MOVE 60 TO PAGEEND
OUTFILE 'LST:'
END

CLEARSCREEN
CLEAR NOTAF
MOVE SELECTION.1 TO NOTAF.DATA_VENCTO
REPORT NOTAF BY INDEX.2 BREAK NOTAF.DATA_VENCTO
IF SELECTION.1 EQ 0 GOTO PULA
INDICATE SELECT AS NOTAF.DATA_VENCTO GE SELECTION.1
[ SELECT] INDICATE SELECT AS NOTAF.DATA_VENCTO LE SELECTION.2
[~SELECT] RETURN END.OF.REPORT

PULA:
SECTION HEADER
PRINT H
PRINT M
PRINT S
PRINT HOJE
INCREMENT PAG
PRINT PAG
OUTPUT HEADER

SECTION SUBHEADER1
PRINT NOTAF.DATA_VENCTO
OUTPUT SUBHEADER1

SECTION BODY
PRINT NOTAF.NR_NOTAF
PRINT REMETE.NOME_REMETE
PRINT DESTINA.NOME_DESTINA
PRINT NOTAF.VALOR
PRINT NOTAF.VALOR_FRETE
PRINT NOTAF.LOCAL_ENTREGA
PRINT NOTAF.NR_TODAS_NOTAS
OUTPUT BODY
SECTION SUBTOTAL1
PRINT RECCOUNT
SUBTOTAL BODY.4 // TO SUBTOTAL1.1
OUTPUT SUBTOTAL1
MOVE 0 TO RECCOUNT
RETURN

RPT.KEYPRESS:
SCREENMODE 143 ON
GOTOXY 23 17
SHOW "Deseja interromper RELATORIO (S/N) ?"
SCREENMODE 7 ON
INKEY HTECLA
CLEARXY 23 00
IF HTECLA IN "Ss" RETURN END$OF$REPORT
RETURN RPT.LOOP
REPORTEND
FORMFEED
CLEARSCREEN

KEYPROC KEY.ESCAPE
CLEARSCREEN
CHAIN 'TELA6'
RETURN

┌────────────────────────────────────┐
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 147
│ COMANDOS DE DEFINIÇÃO DE VARIÂVEIS │
└────────────────────────────────────┘

DATE var1 var2 var3 ...

Define uma ou mais variáveis de memória como do tipo data (variáveis


data).

EX: DATE DATA

INDICATOR var.1 var2 var3 ...

Define uma ou mais variáveis de memória como do tipo indicador (va■


riáveis lógicas)

EX: INDICATOR NUMERO NOME

INTEGER var1 var2 var3 ...

Define uma ou mais variáveis de memória como tipo numérica inteira


(variáveis inteiras). Dataflex reserva um espaço para um total de
256 variáveis inteiras, sendo que elas podem ser transferidas para
outros programas desde que sejam redefinidas. Variáveis inteiras de■
vem conter dados numéricos dentro do limite de mais ou menos
2.174.483.647.

EX: INTEGER COD NR CEP

NUMBER var1 var2 var3 ...

Define uma ou mais variáveis de memória como tipo numérica (variá■


veis numéricas). Dataflex reserva um espaço para um total de 32.767
variáveis numéricas, contendo dados numéricos dentro do limite de
mais ou menos 99.999.999.999.999,99999999.

EX: NUMBER SALARIO

REAL var1 var2 var3 ...

Define uma ou mais variáveis de memória do tipo numérica real (va■


riáveis reais). Variáveis podem conter valores dentro do limite de
mais ou menos 9.99999999999999999

EX: REAL NR COD

STRING var1 tamanho_var1 var2 tamanho_var2 ...

Define uma ou mais variáveis de memória do tipo ASCII ou string (va■


riáveis alfanuméricas). O argumento tamanho especifica o comprimen■
to, em caracteres, da variável que pode ser definido de 1 a 255 ca■
racteres. Se este argumento for omitido a variável terá um compri■
mento padrão (default) de 80 caracteres.

EX: STRING NOME 20 ENDERECO 30

(INDICATOR/INDICATE/DISPLAY/LABELS/INTEGER/STRING/REAL/REAL)
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 148
/TELA
+--------------------------------------+
: CADASTRO TESTE :
+--------------------------------------+
: Codigo : __. :
: :
: Nome : ______________________ :
: :
: Endereco: __________________________ :
: :
: Idade : _. Data: __/__/__ :
: :
: Estado : __ (SP,PR,RR) :
: :
: Salario : ______.__ Nr: __. :
: :
+--------------------------------------+
: Data: __/__/__ Hora: _.:_.:_. :
+--------------------------------------+

/*

INTEGER XCOD XIDADE


STRING XNOME 20 XENDER 26 XEST 2
NUMBER XSALARIO
REAL XNR
MOVE 10 TO XNR

DATE XDATA XHORA XMIN XSEG


SYSDATE XDATA XHORA XMIN XSEG

DISPLAY XDATA TO TELA.9


DISPLAY XHORA TO TELA.10
MOVE XMIN TO TELA.11
MOVE XSEG TO TELA.12

REPEAT
LABEL.INICIO:
ACCEPT TELA.1 XCOD
IF XCOD EQ 0 GOTO LABEL.INICIO

LABEL*NOME:
ACCEPT TELA.2 XNOME {CAPSLOCK}
IF XNOME EQ '' GOTO LABEL*NOME

LABEL-END:
ACCEPT TELA.3 XENDER {CAPSLOCK}
IF_ XENDER EQ '' BEGIN
GOTOXY 24 0
PAUSE ' O ENDERECO PRECISA SER DIGITADO '
CLEARXY 24 0
GOTO LABEL-END
END

LABEL_IDADE:
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 149
ACCEPT TELA.4 XIDADE

INDICATOR IDADE17
INDICATE IDADE17 AS TELA.4 EQ 17

[NOT IDADE17] BEGIN // nao é verdadeiro


GOTOXY 24 0
PAUSE ' IDADE DEVE SER 17 ANOS '
CLEARXY 24 0
GOTO LABEL_IDADE
END

[ IDADE17] SHOW ' Idade igual a 17 anos ' // é falso

ACCEPT TELA.5 {RANGE=01/01/92,31/12/92}


ACCEPT TELA.6 {CAPSLOCK,CHECK='SPRR'}
ACCEPT TELA.7 {RANGE=1000,5000}

DISPLAY XNR TO TELA.8

GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' Tecle ENTER '
SCREENMODE 7 ON
CLEARXY 24 0

CLEARFORM TELA.1 THRU TELA.8


UNTIL [KEY.ESCAPE]
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 150


COMANDOS DE PROCESSAMENTO DE ARGUMENTOS

CALCULATE (expressão) TO arg


CALC (expressão) TO arg

Calcula a expressão matemática e armazena o resultado em campo, ja■


nela ou variável de memória. Cálculos com argumentos numéricos devem
ser armazenados em variáveis, campos ou janelas numéricas. Cálculos
que envolvem operações com datas devem ser armazenadas em variáveis
datas.

EX: CALC (XQTDE * XPRECO) TO XTOTAL

DECREMENT var_inteira

Decrementa 1 do valor atual da variável inteira funcionando como um


contador decrescente.

EX: DECREMENT CONTADOR

INCREMENT var_inteira

Incrementa 1 no valor atual da variável inteira funcionando como um


contador.

EX: INCREMENT CONTADOR

MOD arg_inteiro FROM arg.1 TO arg.2

Armazena em arg.2 o resto da divisão inteira de arg.1 por arg.intei■


ro:

arg.inteiro: Deve ser uma constante, variável ou expressão numérica


inteira.

arg.1 : Pode ser uma constante, campo, janela, variável ou ex■


pressão de qualquer tipo, exceto indicadores.

arg.2 : Pode ser um campo, janela variável de qualquer tipo,


exceto indicadores

EX: MOD VALOR1 FROM VALOR2 TO RESULTADO

MOVE arg TO arg.1 arg.2 arg.3 ...

MOVE (expressão) TO arg.1 arg.2 arg.3 ...


Move uma constante, o conteúdo de um campo, janela ou variável, ou
ainda o resultado de uma expressão, para um ou mais campos, janelas
ou variáveis de memória.

EX: MOVE VAR1 TO VAR2 VAR3

MOVEINT arg TO arg_inteiro

Converte uma constante, o conteúdo de uma janela ou variável, ou


ainda o resultado de uma expressão, em uma janela ou variável de me■
mória do tipo inteiro.

EX: MOVEINT JANELA.1 TO XCOD

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 151


MOVEDATE arg TO arg.data

Converte uma constante, o conteúdo de um campo, janela, ou variável,


ou ainda o resultado de uma expressão, em um campo, janela ou variá■
vel de memória do tipo data.

EX: MOVEDATE DATA TO VAR_DATA

MOVENUM arg TO arg_numérico

Converte uma constante, o conteúdo de um campo, janela ou variável,


ou ainda o resultado de uma expressão, em um campo, janela ou variá■
vel de memória do tipo numérica.

EX: MOVENUM NR TO VAR_NUMBER

MOVESTR arg TO arg_string

Converte uma constante, o conteúdo de um campo, janela ou variável,


ou ainda o resultado de uma expressão, em um campo, janela ou variá■
vel de memória do tipo alfanumérico (string).

EX: MOVESTR VAR_STR TO VAR_STR_DEST

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 152


(MOVEDATE / MOVEINT / MOVESTR / CALC / MOD / INCREMENT)

/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘

/*
PAGE SET TELA AT 01 01 COLORS 32 7

INTEGER TOT_SAL CODIGO MMOD


DATE DATA2
STRING ESTADO

NAME TELA XCOD XNOM XEND XID XDAT XEST XSAL XNR

OPEN SA

ENTER SA
AUTOPAGE TELA 1
MOVE CODIGO TO XCOD
ENTRY SA.CODIGO XCOD {AUTOFIND,NOPUT}
IF XCOD EQ 0 GOTO ENT$LP

ENTRY SA.NOME XNOM {CAPSLOCK}


ENTRY SA.ENDERECO XEND {CAPSLOCK}
ENTRY SA.IDADE XID
ENTRY SA.DATA XDAT {RANGE=01/01/92,31/12/92}
ENTRY SA.ESTADO XEST {CAPSLOCK,CHECK='SPRR'}
ENTRY SA.SALARIO XSAL {RANGE=1000,2000}

MOVEINT XCOD TO CODIGO


GOTOXY 18 0
SHOW ' COMANDO MOVEINT >>> ' CODIGO
PAUSE ' TECLE ENTER '

MOVEDATE XDAT TO DATA2


GOTOXY 19 0
SHOW ' COMANDO MOVEDATE >>> ' DATA2
PAUSE ' TECLE ENTER '

MOVESTR XEST TO ESTADO


GOTOXY 20 0
SHOW ' COMANDO MOVESTR >>> ' ESTADO
PAUSE ' TECLE ENTER '

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 153


CALC ((XSAL * .10) + XSAL) TO TOT_SAL
GOTOXY 21 0
SHOW ' COMANDO CALC >>> ' TOT_SAL
PAUSE ' TECLE ENTER '

MOD 100 FROM XSAL TO MMOD // 100 / 1500 = 0,667


GOTOXY 21 0
SHOW ' COMANDO MOD FROM >>> ' MMOD
PAUSE ' TECLE ENTER '

MOVE XCOD TO CODIGO


INCREMENT CODIGO

ENTRY SA.NR XNR {RANGE=1,90}

GOTOXY 24 0
PAUSE ' Tecle ENTER '
CLEARXY 24 0

CLEARSCREEN 32

RETURN
ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 154


┌─────────────────────┐
│ COMANDOS DE CONSOLE │
└─────────────────────┘

CLEARSCREEN

CLEARSCREEN arg.cor

Limpa todo o vídeo e posiciona o cursor no canto superior esquerdo


na posição "0 0". Opcionalmente, limpa o vídeo com a cor cujo códi■
go é especificado em arg.cor. O arg.cor deve conter um número entre
4 e 254, ou ainda, o número 1 para alta intensidade e 2 para baixa
intensidade

EX: CLEARSCREEN
CLEARSCREEN 122

CLEARXY linha coluna

Limpa o vídeo à direita e abaixo da coluna e linha especificadas no


comando, posicionando o cursor nesta mesma coordenada.

EX: CLEARXY 24 0

GOTOXY linha coluna

Posiciona o cursor no vídeo na linha e coluna especificados no co■


mando. A posição inicial do vídeo corresponde à coordenada "0 0" e
a final depende do seu monitor, mas normalmente corresponde a "23
79".

EX: GOTOXY 24 10

INKEY var

Interrompe a execução do programa até que uma tecla seja pressiona■


da, armazenando-o na variável especificada. A variável pode ser do
tipo string, numérica ou inteira.

EX: STRING TECLA 1


INKEY TECLA

INKEY$ var

Se existir um caracter no buffer do teclado, este comando armaze■


na-o na variável especificada, sem interromper a execução do pro■
grama

INPUT 'mensagem' var

Interrompe a execução do programa, exibindo opcionalmente uma men■


sagem, e permite uma entrada de dados na variável especificada. A
entrada de dados deve ser compatível com o tipo de variável.

EX: INPUT ' Tecle ENTER ' XTECLA


GOTOXY 24 0
INPUT ' Continua (S/N) ? ' XTECLA

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 155


KEYCHECK comando

Executa o comando especificado se uma tecla é pressionada a partir


desta linha do programa, estabelecendo o indicador KEYPRESS como
verdadeiro. Se nenhum comando é especificado em KEYCHECK, apenas o
indicador KEYPRESS será estabelecido como verdadeiro.

EX: KEYCHECK ABORT


KEYCHECK GOTO LABEL_QUIT

PAUSE ''
PAUSE 'mensagem'
PAUSE 'mensagem' WAIT arg.2

Interrompe a execução do programa exibindo a mensagem:


"Pressione qualquer tecla para continuar", ou opcionalmente, a men■
sagem especificada em arg.1, até que uma tecla seja pressionada,
armazenado-a em arg.2

EX: PAUSE ''


PAUSE ' Tecle ENTER '
PASUE ' Continua (S/N) ? ' WAIT XTECLA

SCREENMODE nr_cor ON
SCREENMODE nr_cor OFF

Controla os atributos e cores do terminal de vídeo. A opção ON per■


mite definir uma cor especificada a um determinado trecho do pro■
grama até que outro comando SCREENMODE seja encontrado. A opção OFF
estabelece uma única cor e atributo para todas as janelas, entradas
de dados e mensagem que não possuem um atributo.
Arg.cor deve conter um número entre 4 e 254, ou ainda, o número 1
para alta intensidade e 2 para baixa intensidade.

EX: SCREENMODE 112 ON // ativa cor vídeo reverso


PAUSE ' Mensagem ' WAIT XTECLA
SCREENMODE 7 N // desativa cor

SHOW ' mensagem1' ' mensagem2' ' mensagem 3' ...

Exibe o(s) argumento(s) no vídeo na posição atual do cursor. O ar■


gumento especificado pode ser uma constante, campo, janela ou va■
riável de memória a ser do tipo string, numérica, inteira ou data.
* comando recursivo *

EX: SHOW ' Hello, How are you ? '


SHOW ' Numero de clientes cadastrados ' XNR_CLI
SHOW ' Texto 1 ' ' Texto 2 ' ' Texto 3 ' ' Texto 4 ... '

SHOWLN ' mensagem1' ' mensagem2' ' mensagem 3' ...

Exibe o(s) argumento(s) no vídeo na posição atual do cursor e posi■


ciona o cursor na primeira coluna da próxima linha. O argumento es■
pecificado pode ser uma constante, campo, janela ou variável de me■
mória e ser do tipo string, numérica, inteira ou data.

EX: SHOWLN ' Hello, How are you ? '


SHOWLN ' Numero de clientes cadastrados ' XNR_CLI
SHOWLN ' Texto 1 ' ' Texto 2 ' ' Texto 3 ' ' Texto 4 ... '

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 156


(SHOW / SHOWLN / PAUSE / INKEY / IN)

/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘

/*
PAGE SET TELA AT 01 01 COLORS 32 7
STRING XTECLA 1

NAME TELA XCOD XNOM XEND XID XDAT XEST XSAL XNR

OPEN SA

ENTER SA

AUTOPAGE TELA 1

ENTRY SA.CODIGO XCOD {AUTOFIND,NOPUT}


IF XCOD EQ 0 GOTO ENT$LP

ENTRY SA.NOME XNOM {CAPSLOCK}


ENTRY SA.ENDERECO XEND {CAPSLOCK}
ENTRY SA.IDADE XID
ENTRY SA.DATA XDAT {RANGE=01/01/92,31/12/92}
ENTRY SA.ESTADO XEST {CAPSLOCK,CHECK='SPRR'}
ENTRY SA.SALARIO XSAL {RANGE=1000,2000}
ENTRY SA.NR XNR {RANGE=1,90}

GOTOXY 22 0
SHOWLN ' COMANDO SHOWLN - Ola '

GOTOXY 23 0
PAUSE ''
CLEARXY 23 0

GOTOXY 24 0
PAUSE ' COMANDO PAUSE - Tecle ENTER '
CLEARXY 24 0

GOTOXY 24 0
PAUSE ' COMANDO PAUSE WAIT - SEGUIR (S/N) ? ' WAIT XTECLA
IF XTECLA IN 'Ss' GOTO SALTA
IF XTECLA IN 'Nn' GOTO ENT$LP
CLEARXY 24 0

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 157


SALTA:
GOTOXY 24 0
INKEY$ XTECLA
PAUSE ' PRESSIONE EM ALGUMA TECLA ' WAIT XTECLA
SHOWLN ' Conteudo da variavel XTECLA ' XTECLA
INKEY$ XTECLA
CLEARXY 24 0

GOTOXY 24 0
SHOW ' COMANDO SHOW - INKEY CONFIRMA (S/N) ? '
INKEY XTECLA
IF_ XTECLA IN 'Ss' GOTO LABEL_INPUT
IF_ XTECLA IN 'Nn' SYSTEM
CLEARXY 24 0

LABEL_INPUT:
CLEARXY 22 0
CLEARXY 24 0
INPUT ' COMANDO INPUT - CONTINUA (S/N) ? ' XTECLA
IF XTECLA EQ 'S' GOTO ENTRYSEC
IF XTECLA EQ 'N' ABORT

CLEARSCREEN 32

RETURN
ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 158


┌─────────────────────┐
│ COMANDOS DE IMAGENS │
└─────────────────────┘

ACCEPT janela.1 {mascaras}


ACCEPT janela.1 TO variavel
ACCEPT janela.1 TO banco_dados.campo {mascaras}

Permite a entrada de dados através da janela especificada e, op■


cionalmente, armazena-os no argumento especificado. Pode-se tam■
bém, opcionalmente, utilizar mascaras de formatação de entrada de
dados para formatar, filtrar ou criticar uma entrada de dados.

EX: ACCPET JANELA.1 {CAPSLOCK,REQUIRED}


ACCEPT JANELA.1 TO XNOME {CAPSLOCK}
ACCEPT JANELA.1 TO CLIENTES.NOME {CAPSLOCK}

AUTOPAGE imagem número

Indica vários comandos com uma série de janelas consecutivas na


primeira imagem do programa ou, opcionalmente, na imagem especifi■
cada a partir da primeira janela ou a partir da janela especifica■
da pelo número.

EX: AUTOPAGE IMAGEM


AUTOPAGE IMAGEM 1
AUTOPAGE IMAGEM 5

BLANKFORM
BLANKFORM janela.x THRU ou TRHOUGH janela.n

Apaga os dados e a própria janela especificada em janela.x ou, op■


cionalmente, apaga todos os dados e todas as janelas do intervalo
especificado em janela.x a janela.n

EX: BLANKFORM
BLANKFORM IMAGEM
BLANKFORM JANELA.1 THRU JANELA.10

CLEARFORM
CLEARFORM janela.1 THRU janela.n

Apaga todos os dados de todas as janelas da imagem ativa ou, op■


cionalmente, da imagem especificada no comando, realçando as jane■
las novamente. As janelas são realçadas ou desenhadas através do
caractere em "Opções do Sistema" na configuração do Dataflex (DF■
SETUP.EXE)

EX: CLEARFORM
CLEARFORM JANELA.1 THRU JANELA.8

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 159


DISPLAY arg TO janela

Exibe o conteúdo do argumento na janela atual se o comando AUTOPA■


GE esta ativo ou, opcionalmente, na janela especificada. Pode-se
também, opcionalmente, formatar os dados a serem exibidos através
de mascaras de formatação de saída. O argumento pode ser uma cons■
tante, campo, janela, variável ou expressão matemática, mas deve
ser do mesmo tipo (string, numérico, inteiro ou data) da janela
especificada ou ativa no momento.

EX: DISPLAY VAR_STRING TO JANELA.1


DISPLAY VAR_INTEGER TO JANELA.3
DISPLAY CLIENTES.NOME TO JANELA.5

FORMAT janela.x {mascaras}


FORMAT janela.x THRU janela.n {mascaras}
FORMAT janela.x THRU janela.n {mascaras} STEP número

Formata a janela especificada em janela.x ou, opcionalmente, as


janelas especificadas no intervalo de janela.x à janela.n através
das opções de formatação especificadas em mascaras.
A opção STEP número pode ser usada para especificar apenas as ja■
nelas subsequentes, de acordo com o incremento "número" dentro do
intervalo de janelas.

EX: FORMAT JANELA.1 {REQUIRED}


FORMAT JANELA.1 THRU JANELA.10 {AUTORETURN}
FORMAT JANELA.1 THRU JANELA.12 {CAPSLOCK} STEP 2

IFCHANGE janela comando

Executa o comando especificado se a janela foi alterada após a úl■


tima movimentação de dados efetuada nesta janela.

EX: IFCHANGE JANELA.1 GOTO LABEL_1


IFCHANGE JANELA.10 ABORT

IFCHANGE banco_de_dados comando

Executa o comando especificado se o buffer de registro do banco de


dados foi alterado desde a última movimentação.

EX: IFCHANGE CLIENTES GOTO LABEL_MUDOU


IDCHANGE CLIENTES SYSTEM

NAME janela1 nome_variavel


NAME janela2 nome_variavel
NAME imagem nome_variave1 nome_variave2 ...

Estabelece um nome para a janela indicada.

EX: NAME JANELA.1 XCODIGO


NAME JANELA.2 XNOME
NAME XCOD XNOME XENDERECO XCIDADE XCEP ???
NAME IMAGEM XCOD XNOME XENDERECO XCIDADE XCEP

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 160


OUTPUT imagem

Envia a imagem para o dispositivo de saída ou arquivo sequêncial


especificado no comando OUTFILE. Se não houver o comando OUTFILE
no programa, a imagem será enviada para a impressora.

EX: OUTPUT IMAGEM

PAGE imagem

Exibe e ativa no vídeo uma imagem de manutenção, a partir da posi■


ção inicial "0 0" ou da posição especificada no comando PAGE SET
imagem AT linha coluna.

EX: PAGE IMAGEM


PAGE IMAGEM COLORS 112 7

PAGE SET imagem AT linha coluna COLORS cor.janela cor.imagem


Estabelece os atributos de posição da janela e/ou os atributos de
cor da imagem. Este comando não exibe ou ativa a imagem, apenas
estabelece os atributos da posição ou das cores que serão exibi■
das, ou ainda, ambos ao mesmo tempo.

EX: PAGE SET IMAGEM AT 01 01


PAGE SET IMAGEM 1 AT 01 01 COLORS 112 32

PRINT arg TO janela {mascara}

Move o conteúdo do argumento para a janela atual se o comando AU■


TOPAGE esta ativado ou, opcionalmente, para a janela especificada.
Posteriormente as janelas serão enviadas ao dispositivo de saída
através do comando OUTPUT imagem.
Pode-se também, opcionalmente, formatar os dados que serão movidos
através das máscaras de formatação de saída. O argumento pode ser
um campo, janela, variável ou expressão matemática e deve ser do
mesmo tipo (string, numérico, inteiro ou data) da janela ativa ou
especificada.

EX: PRINT VAR_INT TO JANELA.1


PRINT VAR_STR TO JANELA.3
PRINT CLIENTES.NOME
PRINT CLIENTES.NOME TO JANELA.4 {FLOAT$} // Cr 100,00
PRINT CLIENTES.NOME TO JANELA.4 {FILL='*'} // *** 100,00

SETCHANGE janela

Estabelece um status de alteração na janela especificada para o


sistema poder executar o comando IFCHANGE incondicionalmente.

EX: SETCHANGE JANELA.1

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 161


(BLANKFORM / CLEARFORM / IFCHANGE / SETCHANGE)

/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘
<ESC> Sai <F7> Sai <F9> Limpa Campos

/*
PAGE TELA AT 01 01 COLORS 15 7

FORMAT TELA.1 {REQUIRED}


FORMAT TELA.1 THRU TELA.2 {CAPSLOCK}

OPEN SA
CLEAR SA

REPEAT
INICIO:
ACCEPT TELA.1 TO SA.CODIGO
IF TELA.1 EQ 0 GOTO INICIO
CLEAR SA
MOVE TELA.1 TO SA.CODIGO
FIND EQ SA BY INDEX.1
[ FOUND] BEGIN
DISPLAY SA.NOME TO TELA.2
DISPLAY SA.ENDERECO TO TELA.3
DISPLAY SA.IDADE TO TELA.4
DISPLAY SA.DATA TO TELA.5
DISPLAY SA.ESTADO TO TELA.6
DISPLAY SA.SALARIO TO TELA.7
DISPLAY SA.NR TO TELA.8
END
// [NOT FOUND] ou [ ~ FOUND] ou [ FINDERR]
[ FINDERR] BEGIN
GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' COMANDO FINDERR - REG. NAO ECONCTRADO '
SCREENMODE 7 ON
CLEARXY 24 0
END

ACCEPT TELA.2 TO SA.NOME {CAPSLOCK}


ACCEPT TELA.3 TO SA.ENDERECO {CAPSLOCK}

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 162


BLANKFORM TELA.1 THRU TELA.3
// OU BLANKFORM TELA.1
// BLANKFORM TELA.2
// BLANKFORM TELA.2

ACCEPT TELA.4 TO SA.IDADE


ACCEPT TELA.5 TO SA.DATA {RANGE=01/01/92,31/12/92}

CLEARFORM TELA.4 THRU TELA.5


// OU CLEARFORM TELA.4
// CLEARFORM TELA.4

ACCEPT TELA.6 TO SA.ESTADO {CAPSLOCK,CHECK='SPRR'}


ACCEPT TELA.7 TO SA.SALARIO {RANGE=1000,10000}

IFCHANGE TELA.7 BEGIN


GOTOXY 24 0
PAUSE ' COMANDO IFCHANGE - SALARIO FOI ALTERADO '
CLEARXY 24 0
END

ACCEPT TELA.8 TO SA.NR

SETCHANGE TELA.8

IFCHANGE SA BEGIN
GOTOXY 24 0
PAUSE ' COMANDO IFCHANGE SA '
CLEARXY 24 0
END

SAVERECORD SA
CLEAR SA
CLEARFORM
UNTIL [KEY.ESCAPE]
ABORT

KEYPROC KEY.UP
KEYPROC KEY.FIELD
BACKFIELD
RETURN

KEYPROC KEY.CLEAR
CLEARFORM
GOTO INICIO
RETURN

KEYPROC KEY.USER
ABORT
RETURN

(KEYCHECK / KEYPRESS / REPEAT / INKEY)

/*

STRING TECLA

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 163


REPEAT
SHOWLN ' Pressione qq. tecla p/ continuar ... '

KEYCHECK

SCREENMODE 112 ON

[KEYPRESS] SHOWLN ;
' Pressione <S) p/ sair - qq. tecla p/ prosseguir '

SCREENMODE 7 ON

[KEYPRESS] INKEY TECLA

[KEYPRESS] BEGIN
IF TECLA IN 'Ss' BEGIN
CLEARSCREEN
ABORT
END
END
LOOP

══════════════════════════════════════════════════════════════════

EXEMPLO DE PROGRAMA PARA ZERAR/APAGAR TODAS AS INFORMAÇÕES


DE UM ARQUIVO

/*

CLEARSCREEN
OPEN CLIENTES
SHOW ' Apagando todos os clientes do arquivo - aguarde ... '
REPEAT
FIND GT CLIENTES BY INDEX.1
[ FOUND] ZEROFILE CLIENTES
SAVERECORD CLIENTES
UNTIL [ FINDERR]
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 164


┌───────────────────────────────────┐
│ COMANDOS DE CONTROLE DE FLEX-KEYS │
└───────────────────────────────────┘

BACKFIELD

Em uma rotina de programação de teclas especiais, movimenta o


cursor para a janela anterior se não houver o comando ENTERMODE.
O comando BACKFIELD não pode ser usado fora de uma rotina KEYPROC
flex-key.

EX: KEYPROC KEY.UP


KEYPROC KEY.FIELD
BACKFIELD
RETURN

ENTAGAIN

Em uma rotina de programação de teclas especiais, evita que o


cursor avance para a próxima janela ao retornar para a imagem de
procedência.
O comando ENTAGAIN não pode ser usado fora de uma rotina KEYPROC
flex-key.

EX: KEYPROC KEY.DELETE


ENTAGAIN
RETURN

ENTERMODE

Impede que o comando BACKFIELD retorne o cursor para a janela ou


janelas referenciadas pelo comando ACCEPT anteriormente a este
comando em um programa.
Não use este comando ENTERMODE no meio de uma série de comandos
ENTRY. Use-o normalmente no meio de uma série de comandos ACCEPT
e fora de uma rotina KEYPROC.

EX: ENTERMODE

OPEN SA

ENTRY SA
AUTOPAGE IMAGEM 1
ENTRY SA.CODIGO {AUTOFIND,NOPUT}
ENTERMODE // Evita acesso a janela.1
ENTRY SA.NOME
ENTRY SA.ENDERECO
RETURN
ENTEREND
ABORT
----------------------------------------------------------------
REPEAT
ACCEPT TELA.1 TO SA.CODIGO
ENTERMODE
ACCEPT TELA.2 TO SA.NOME
ACCEPT TELA.3 TO SA.ENDERECO
UNTIL [KEY.ESCAPE]
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 165


HELP imagem.help

Exibe a próxima imagem HELP ou a especificada no comando. Se ne■


nhuma imagem HELP for encontrada no programa ou se qualquer tecla
for pressionada após a exibição de uma tela de HELP, o cursor re■
tornará para a janela original da imagem corrente de aplicação.

EX: HELP

/IMAGEM
┌───────────────────────────┐
│Codigo : __. │
│Nome : ____________ │
│Endereco: _________________│
└───────────────────────────┘
/HELP AJUDA // ou HELP apenas
┌───────────────────────┐
│NÃO HÂ AJUDA DISPONτVEL│
└───────────────────────┘
/*

OPEN SA

ENTER SA
AUTOPAGE IMAGEM 1
ENTRY SA.CODIGO
ENTERMODE
ENTRY SA.NOME
ENTRY SA.ENDERECO
RETURN
ENTEREND
ABORT

HELP

// Tecle F1 e será exibido a tela AJUDA.

KEYPROC flex_key
:
comandos
:
RETURN
Permite a programação de uma tecla de função flex-key sendo que
sua ação será determinada em tempo de compilação.
O comando KEYPROC deve ser usado após o término do programa como
se fosse uma sub-rotina, possuindo inclusive o comando RETURN no
final de sua programação.

EX: KEYPROC KEY.ESCAPE


GOTOXY 24 0
SHOW ' SAINDO DO PROGRAMA ... '
ABORT
RETURN

KEYPROC KEY.DELETE
GOTOXY 24 0
PAUSE ' TECLA DE DELECAO DESATIVA '
ENTAGAIN
CLEARXY 24 0
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 166


KEYPROC KEY.USER
GOTOXY 24 0
PAUSE ' VOCE ACABOU DE PRESSIONAR NA TECLA F7 '
CLEARXY 24 0
RETURN

KEYPROC flex_key GOSUB sub_rotina

Permite a programação de uma tecla de função flex-key através da


sub-rotina especificada no comando, sendo que sua ação será de■
terminada em tempo de execução.
Neste caso, o comando KEYPROC deve ser utilizado quantas vezes
necessário no meio do programa como se fosse um comando GOSUB. A
programação da flex-key propriamente dita só ocorre na sub-rotina
especificada. Observe que uma mesma tecla de função poderá ter
funções diferentes, estabelecidas em sub-rotinas diferentes, que
serão executadas de acordo com o que os comandos KEYPROC defini■
rem em trechos diferentes do programa.

EX: KEYPROC KEY.USER GOSUB ROTINA.1

KEYPROC ON
Ativa teclas de função

EX: KEYPROC ON

KEYPROC OFF
Desativa teclas de função

EX: KEYPROC OFF

KEYPROC KEY.ANY
:
comandos
:
RETURN
Permite definir uma mesma programação para todas as flex-keys
existentes, sendo que sua ação será determinada em tempo de com■
pilação. Este comando deve ser usado após o término do programa
como se fosse uma sub-rotina.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 167


Analize o programa abaixo:

/TELA
┌────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘
/*

PAGE SET TELA AT 01 01 COLORS 32 7


STRING XTECLA 1
NAME XCOD XNOM XEND XID XDAT XEST XSAL XNR

OPEN SA

ENTER SA
AUTOPAGE TELA 1
ENTRY SA.CODIGO XCOD {AUTOFIND,NOPUT}
IF XCOD EQ 0 GOTO ENT$LP

KEYPROC KEY.USER GOSUB SUB-ROTINA-FLEX

ENTRY SA.NOME XNOM {CAPSLOCK}


ENTRY SA.ENDERECO XEND {CAPSLOCK}
ENTRY SA.IDADE XID {CAPSLOCK}
ENTRY SA.DATA XDAT {RANGE=01/01/92,31/12/92}
ENTRY SA.ESTADO XEST {CAPSLOCK,CHECK='SPRR'}
ENTRY SA.SALARIO XSAL {RANGE=1000,2000}
ENTRY SA.NR XNR {RANGE=1,90}
CLEARSCREEN 32
RETURN
ENTEREND
ABORT

SUB-ROTINA-FLEX:
GOTOXY 24 0
PAUSE ' COMANDO KEYPROC KEY.USER GOSUB '
CLEARXY 24 0
RETURN

KEYPROC OFF // OFF Executa somente uma vez sub-rotina


KEYPROC KEY.USER
GOTOXY 24 0
PAUSE ' COMANDO KEY.USER '
CLEARXY 24 0
RETURN
KEYPROC ON // OFF
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 168
Analize o exemplo abaixo:

/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘
/*

PAGE SET TELA AT 01 01 COLORS 32 7


STRING XTECLA 1
NAME XCOD XNOM XEND XID XDAT XEST XSAL XNR

OPEN SA
ENTER SA
AUTOPAGE TELA 1

ENTRY SA.CODIGO XCOD {AUTOFIND,NOPUT}


IF XCOD EQ 0 GOTO ENT$LP

ENTRY SA.NOME XNOM {CAPSLOCK}


ENTRY SA.ENDERECO XEND {CAPSLOCK}
ENTRY SA.IDADE XID {CAPSLOCK}
ENTRY SA.DATA XDAT {RANGE=01/01/92,31/12/92}
ENTRY SA.ESTADO XEST {CAPSLOCK,CHECK='SPRR'}
ENTRY SA.SALARIO XSAL {RANGE=1000,2000}

ENTRY SA.NR XNR {RANGE=1,90}


CLEARSCREEN 32
RETURN
ENTEREND
ABORT

KEYPROC KEY.ANY // Qualquer tecla que for


GOTOXY 24 0 // pressionada será mostrado
PAUSE ' COMANDO KEY.ANY ' // a mensagem COMANDO KEY.ANY
CLEARXY 24 0
RETURN

KEYPROC KEY.USER
GOTOXY 24 0
PAUSE ' COMANDO KEY.USER '
CLEARXY 24 0
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 169


┌───────────────────────────────────┐
│ COMANDOS DE CONTROLE DE PROGRAMAS │
└───────────────────────────────────┘

ABORT
Fecha qualquer banco de dados, arquivo ou dispositivo aberto;
encerra o processamento do programa e retorna ao menu de foi
chamada.

EX: /*

ABORT

CHAIN arg.string string.1 string.2 ...

Executa o programa especificado em arg.string e, opcionalmente,


transfere dados alfanuméricos (strings) para serem recebidos pe■
los comandos CMDLINE ou OUTFILE.

EX: CHAIN "PROGRAMA VAR1 VAR2 VAR3"

CHAIN WAIT arg.string EXPORT_FILES

Causa uma pausa no programa atual executando o primeíro programa


especificado em arg.string e, opcionalmente, se a cláusula EX■
PORT-FILES for especificada, este comando manterá todos os ar■
quivos abertos com seus respectivos dados no buffer de registro.

EX: CHAIN "PROGRAMA" EXPROT_FILES

CLEARSTACK
Cancela o retorno do comandos GOSUB executados. Não execute um
comando RETURN ou POP após este comando.

EX: CLEARSTACK

CLEARWARNING
Apaga qualquer mensagem de erro que eventualmente esteja na úl■
tima linha do vídeo.

EX: CLEARWARNING

DEBUG
Ativa e desativa a visualização do número da linha do programa
compilado após a execução deste comando, facilitando a depuração
de erros.

EX: DEBUG

ERROR arg.numerico mensagem


Exibe na última linha do vídeo, uma mensagem de erro do arquivo
FLEXERRS.DAT corresponde ao número especificado no argumento e
estabelece o indicador predefinido ERR como verdadeiro. Opcio■
nalmente, exibe a mensagem especificada no comando.
Se o arquivo FLEXERRS.DAT não for encontrado, será exibido ape■
nas o número do erro, o número da linha do programa compilado e,
opcionalmente, a mensagem especificada.
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 170
EX: ERROR 999 ' INFORME SUA MENSAGEM DE ERRO '
ERROR 999 ' CODIGO NAO EXISTE '
ERROR 999 ' REGISTRO JA EXISTE '

GOSUB sub_rotina
Executa a sub-rotina especificada até encontrar o comando RETURN
passando então, a executar o comando seguinte ao GOSUB.

EX: GOSUB SUB-ROTINA.1


GOSUB SUB-ROTX

GOTO label
Desvia a execução do programa para o próximo comando situado lo■
go após o procedimento especificado.

EX: GOTO LABEL_1


GOTO ERRO

ON ERROR GOSUB sub_rotina


Executa a sub-rotina especificada se um erro ocorrer. Antes de
finalizar uma sub-rotina de erro, estabeleça o indicador predi■
finido ERR como falso.

EX: ON ERROR GOSUB ROTINA_1

ON ERROR OFF
Cancela ou desativa um comando ON ERROR GOSUB.

EX: ON ERROR OFF

ON var_inteira GOSUB sub_rotina.1 sub_rotina.2 sub_rotina.3 ...


Executa a sub-rotina.1 se o valor da variável inteira for 1, a
sub-rotina.2 se o valor da variável inteira for 2 e assim suces■
sivamente. Após a execução de apenas uma das sub-rotinas especi■
ficadas, o processamento retorna para o próximo comando
após ON...GOSUB.

EX: ON CODIGO GOSUB SUB_ROTINA_1

ON var_inteira GOTO label.1 label.2 label.3


Desvia a execução do programa para o comando subsequente ao la■
bel.1 se o valor da variável inteira for 1, para o comando sub■
sequente ao label.2 se o valor da variável inteira for 2 e assim
sucessivamente.

EX: ON IDADE GOTO LABEL_IDADE

POP
Executa um comando RETURN mas sem retornar a processamento ao
comando seguinte ao que originou a chamada desta sub-rotina.

EX: POP

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 171


RETURN label
Finaliza a execução de uma sub-rotina retornando o processamento
ao comando subsequente ao GOSUB ou ON GOSUB. Também, opcional■
mente, retorna o processamento ao comando subsequente ao proce■
dimento especificado.

EX: RETURN
RETURN ENTRYSEC
RETURN LABEL_X
RETURN RETURN

(CHAIN / CMDLINE)

/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘
<ESC> Sai <F7> Sai <F9> Limpa Campos

/*
PAGE TELA AT 01 01 COLORS 15 7
FORMAT TELA.2 THRU TELA.3 {CAPSLOCK}

INTEGER NUMERO

OPEN SA1

REPEAT
INICIO:
ACCEPT TELA.1 TO SA1.CODIGO
IF TELA.1 EQ 0 GOTO INICIO
KEYCHECK ABORT
CLEAR SA1
MOVE TELA.1 TO SA1.CODIGO
FIND EQ SA1 BY INDEX.1
[ FOUND] BEGIN
DISPLAY SA1.NOME TO TELA.2
DISPLAY SA1.ENDERECO TO TELA.3
DISPLAY SA1.IDADE TO TELA.4
DISPLAY SA1.DATA TO TELA.5
DISPLAY SA1.ESTADO TO TELA.6
DISPLAY SA1.SALARIO TO TELA.7
DISPLAY SA1.NR TO TELA.8
END

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 172


ACCEPT TELA.2 TO SA1.NOME {CAPSLOCK}
ACCEPT TELA.3 TO SA1.ENDERECO {CAPSLOCK}
ACCEPT TELA.4 TO SA1.IDADE {CAPSLOCK}
ACCEPT TELA.5 TO SA1.DATA {RANGE=01/01/92,31/12/92}
ACCEPT TELA.6 TO SA1.ESTADO {CAPSLOCK,CHECK='SPRR'}
ACCEPT TELA.7 TO SA1.SALARIO {RANGE=1000,10000}
ACCEPT TELA.8 TO SA1.NR
MOVE TELA.8 TO NUMERO

SAVERECORD SA1
CLEAR SA1

GOTOXY 24 0
PAUSE ' Tecle ENTER para acessar o programa SA '
CLEARSCREEN
CHAIN "SA NOME_X ENDERECO_Y"

// O comando acima irá acessar o programa "SA" e mover


// as variáveis strings"NOME_X" e "ENDERECO_Y" para um segundo
// programa, ou, para o programa "SA".
// Irá também mover o conteúdo da variável inteira "NUMERO"
// p/ o programa "SA". O programa que irá receber esta
// variável (SA) já deverá ter definido uma variável inteira
// no início do programa, o nome desta variável pode ser
// diferente.

UNTIL [KEY.ESCAPE]
ABORT

KEYPROC KEY.UP
KEYPROC KEY.FIELD
BACKFIELD
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 173


(CMDLINE)

/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ Nome : ______________________ │
│ Endereco: __________________________ │
│ Idade : _. Data: __/__/__ │
│ Estado : __ (SP,PR,RR) │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘
/*

INTEGER NRR // recebe variavel INTEGER do programa SA1

PAGE SET TELA AT 01 01 COLORS 32 7


CLEARSCREEN 32
STRING XTECLA 1
NAME XCOD XNOM XEND XID XDAT XEST XSAL XNR

STRING NOME 20 ENDER 25


CMDLINE NOME
CMDLINE ENDER

OPEN SA

ENTER SA
AUTOPAGE TELA 1
ENTRY SA.CODIGO XCOD {AUTOFIND,NOPUT}
IF XCOD EQ 0 GOTO ENT$LP

MOVE NOME TO TELA.2 // Variaveis vem do programa SA1


MOVE ENDER TO TELA.3 // através do comando CHAIN e neste prog.
// com auxilio do comando CMDLINE
// move dados para tela.2 e tela.3

MOVE NRR TO TELA.8 // a variável INTEGER vem do programa


// SA1

ENTRY SA.NOME XNOM {CAPSLOCK}


ENTRY SA.ENDERECO XEND {CAPSLOCK}
ENTRY SA.IDADE XID {CAPSLOCK}
ENTRY SA.DATA XDAT {RANGE=01/01/92,31/12/92}
ENTRY SA.ESTADO XEST {CAPSLOCK,CHECK='SPRR'}
ENTRY SA.SALARIO XSAL {RANGE=1000,2000}
ENTRY SA.NR XNR
RETURN
ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 174


(CHAIN / CHAIN WAIT / EXPORT_FILES)

/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘
/*
PAGE SET TELA AT 01 01 COLORS 32 7
CLEARSCREEN 32
STRING XTECLA 1

NAME XCOD XNOM XEND XID XDAT XEST XSAL XNR

OPEN SA

ENTER SA
AUTOPAGE TELA 1
ENTRY SA.CODIGO XCOD {AUTOFIND,NOPUT}
IF XCOD EQ 0 GOTO ENT$LP

ENTRY SA.NOME XNOM {CAPSLOCK}


ENTRY SA.ENDERECO XEND {CAPSLOCK}
ENTRY SA.IDADE XID {CAPSLOCK}
ENTRY SA.DATA XDAT {RANGE=01/01/92,31/12/92}
ENTRY SA.ESTADO XEST {CAPSLOCK,CHECK='SPRR'}
ENTRY SA.SALARIO XSAL {RANGE=1000,2000}
ENTRY SA.NR XNR
CLEARSCREEN 32

RETURN
ENTEREND
ABORT

KEYPROC KEY.ESCAPE
CLEARSCREEN
// CHAIN 'SA1' EXPORT_FILES
CHAIN WAIT 'SA1' EXPORT_FILES
RETURN
KEYPROC KEY.USER
SYSTEM
RETURN

(CHAIN / CHAIN WAIT / EXPORT_FILES)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 175


/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘
/*
PAGE SET TELA AT 01 01 COLORS 32 7
CLEARSCREEN 32
STRING XTECLA 1
NAME XCOD XNOM XEND XID XDAT XEST XSAL XNR

OPEN SA1
OPEN SA

ENTER SA1
AUTOPAGE TELA 1
ENTRY SA1.CODIGO XCOD {AUTOFIND,NOPUT}
IF XCOD EQ 0 GOTO ENT$LP

ENTRY SA1.NOME XNOM {CAPSLOCK}


ENTRY SA1.ENDERECO XEND {CAPSLOCK}
ENTRY SA1.IDADE XID {CAPSLOCK}
ENTRY SA1.DATA XDAT {RANGE=01/01/92,31/12/92}
ENTRY SA1.ESTADO XEST {CAPSLOCK,CHECK='SPRR'}
ENTRY SA1.SALARIO XSAL {RANGE=1000,2000}
ENTRY SA1.NR XNR

GOTOXY 19 0 // Dados vem do arquivo


SHOWLN 'Codigo.....: ' SA.CODIGO // "SA" através do comando
GOTOXY 20 0 // CHAIN - EXPORT_FILES
SHOWLN 'Nome.......: ' SA.NOME
GOTOXY 21 0
SHOWLN 'Endereco...: ' SA.ENDERECO

GOTOXY 24 0
PAUSE ' Tecle ENTER '
CLEARXY 24 0
CLEARSCREEN 32
RETURN
ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 176


(CLEARSTACK / CLEARWARNING / GOTO / GOSUB)

/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘
/*

PAGE SET TELA AT 01 01 COLORS 32 7

CLEARSCREEN 32

STRING XTECLA 1

NAME XCOD XNOM XEND XID XDAT XEST XSAL XNR

OPEN SA

ENTER SA

AUTOPAGE TELA 1

ENTRY SA.CODIGO XCOD {AUTOFIND,NOPUT}


IF XCOD EQ 0 GOTO ENT$LP

[NOT FOUND] ERROR 999 ' CODIGO NAO CADASTRADO '


GOTOXY 20 0
[ ERR] SHOW ' INDICADOR ERR VERDADEIRO '

ENTRY SA.NOME XNOM {CAPSLOCK}

GOSUB SUB-ROTINA.1

ENTRY SA.ENDERECO XEND {CAPSLOCK}

ENTRY SA.IDADE XID {CAPSLOCK}

GOSUB SUB_ROT_SAL

ENTRY SA.DATA XDAT


ENTRY SA.ESTADO XEST {CAPSLOCK,CHECK='SPRR'}

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 177


LABEL_SAL:
ENTRY SA.SALARIO XSAL
ENTRY SA.NR XNR

CLEARSCREEN 32
CLEARXY 20 0
CLEARWARNING
RETURN
ENTEREND
ABORT

SUB-ROTINA.1:
GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' SUB-ROTINA: SUB-ROTINA.1 - VOLTA P/ CAMPO ENDERECO '
CLEARXY 24 0
SCREENMODE 7 ON
// CLEARSTACK // aborta - sai do programa
RETURN

SUB_ROT_SAL:
NUMBER X1 X2 XTOTAL
MOVE 10 TO X1
MOVE 20 TO X2
CALC (X1 + X2) TO XTOTAL
MOVE XTOTAL TO XSAL
GOTOXY 24 0
PAUSE ' SUB-ROTINA: SUB_ROT_SAL: - VOLTA P/ ENTRYSEC '
RETURN ENTRYSEC

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 178


(POP / ON ERROR / GOSUB / GOTO)

/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘
/*

PAGE SET TELA AT 01 01 COLORS 32 7

INTEGER COD_INT VAR_INT


MOVE 1 TO COD_INT
MOVE 1 TO VAR_INT

CLEARSCREEN 32
STRING XTECLA 1

NAME XCOD XNOM XEND XID XDAT XEST XSAL XNR

OPEN SA

ENTER SA
AUTOPAGE TELA 1

ENTRY SA.CODIGO XCOD {AUTOFIND,NOPUT}


IF XCOD EQ 0 GOTO ENT$LP

ENTRY SA.NOME XNOM {CAPSLOCK}

// GOSUB SUB-ROTINA-A // retorna p/ ENTRYSEC apos digitar


// campo NOME.

ENTRY SA.ENDERECO XEND {CAPSLOCK}

ON COD_INT GOSUB SUB_ROT.1

ENTRY SA.IDADE XID {CAPSLOCK}


ENTRY SA.DATA XDAT
ENTRY SA.ESTADO XEST {CAPSLOCK,CHECK='SPRR'}

ON VAR_INT GOTO SUB_ROT.2

ENTRY SA.SALARIO XSAL


ENTRY SA.NR XNR

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 179


CLEARSCREEN 32
CLEARWARNING

VOLTA:

RETURN
ENTEREND
ABORT

SUB-ROTINA-A:
GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' << SUB_ROTINA_A >> '
CLEARXY 24 0
POP
RETURN

SUB_ROT.1:
GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' << ON ERRO SUB-ROT.1 >> '
CLEARXY 24 0
RETURN

SUB_ROT.2:
GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' << ON ERRO SUB-ROT.2 >> '
CLEARXY 24 0
GOTO VOLTA

(CHAIN / SEQ_EXPORT) Arquivo Sequencial

/*
// Nome do programa: CHAIN1.FRM

DIRECT_OUTPUT "SHIT.TXT"

WRITELN ' == PROGRAMA 1 ========================================= '


WRITELN ' : Este arquivo texto foi criando no programa CHAIN1 : '
WRITELN ' : que sera passado para outro programa chamado CHAIN2 : '
WRITELN ' : atraves do comando CHAIN WAIT "CHAIN1" SEQ_EXPORT : '
WRITELN ' ======================================================= '

CHAIN WAIT "CHAIN2" SEQ_EXPORT

CLEARSCREEN

RUNPROGRAM 'TYPE SHIT.TXT'

Resultado do programa feito na página anterior.


/*

// Nome do programa: CHAIN2.FRM


WRITELN ' '
WRITELN ' +-- PROGRAMA 2 ----------------------------------+ '
WRITELN ' : Os dados acima sao dados que foram : '
WRITELN ' : transportados via CHAIN WAIT "arq" SEQ_EXPORT : '
WRITELN ' +------------------------------------------------+ '

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 180


─────────────────────────────────────────────────────────────────────────
DATAFLEX 2.3b Linguagem de Quarta Geração
─────────────────────────────────────────────────────────────────────────

┌──────────────────────────────────┐
│COMANDOS DE CONTROLE DE ESTRUTURAS│
└──────────────────────────────────┘

BEGIN
:
comandos
:
END

Marca o início e o final de um bloco de comandos que pode ser


usado em combinação com indicadores ou com o comando IF/ELSE.

EX:

IF XCODIGO GT 100 BEGIN


ERROR 999 ' CONDIGO MAIOR QUE 100 NAO SERA ACEITO '
GOTO LABEL_ERRO
END

CONDITIONAL

CASE condicao.1
:
comandos
:
CASEEND

CASE condicao.2
:
comandos
:
CASEEND

CASEELSE
:
comandos
:
CASEEND

CONDITIONALEND

Executa os comandos de dentro de uma estrutura CASE se a condi■


ção for verdadeira. O número de estruturas CASE é ilimitado,
mas sempre o primeiro CASE verdadeiro é que será executado. Se
nenhum CASE for verdadeiro, serão executados os comandos de
dentro da estrutura CASEELSE se esta for especificada.

FOR var_inteira FROM arg.1 TO arg.2 STEP numero


:
comandos
:
LOOP
Executa os comandos especificados antes do comando LOOP "n" ve■
zes, sendo que este número é calculado na variável inteira de
acordo com as fórmulas.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 181


───────────────────────────────────────────────────────────────────────────
Data Access Corporation (USA) Intercomp (SP) Página: ###
───────────────────────────────────────────────────────────────────────────

REPEAT
:
comandos
:
LOOP

REPEAT
:
comandos
:
UNTIL condição ou [indicadores]

Executa os comandos especificados antes do comando LOOP repeti■


da ou infinitamente, até que um comando de desvio cause a sua
saída. A saída pode ser estabelecida através de indicadores ou
com os comandos IF e GOTO.

WHILE condição ou [indicadores]


:
comandos
:
END

Executa os comandos especificados antes do comando END repeti■


damente enquanto a condição ou os indicadores possuírem o esta■
do verdadeiro.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 182


(FOR-FROM-LOOP / BEGIN-END / CONDITIONAL-CONDITIONALEND)

/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘
/*

PAGE SET TELA AT 01 01 COLORS 32 7

CLEARSCREEN 32

INTEGER CONTADOR

STRING XTECLA 1

NAME XCOD XNOM XEND XID XDAT XEST XSAL XNR

OPEN SA

ENTER SA
AUTOPAGE TELA 1
ENTRY SA.CODIGO XCOD {AUTOFIND,NOPUT}

IF XCOD EQ 10 BEGIN
GOTOXY 24 0
SHOW ' CODIGO <10> NAO SERA ACEITO '
INKEY XTECLA
CLEARXY 24 0
GOTO ENTRYSEC
END

FOR CONTADOR FROM 1 TO 5


GOTOXY 22 0
SHOW ' FOR - Tecle 5 vezes ENTER : ' CONTADOR
INKEY XTECLA
CLEARXY 22 0
LOOP

ENTRY SA.NOME XNOM {CAPSLOCK}


ENTRY SA.ENDERECO XEND {CAPSLOCK}
ENTRY SA.IDADE XID {CAPSLOCK}
ENTRY SA.DATA XDAT {RANGE=01/01/92,31/12/92}
ENTRY SA.ESTADO XEST {CAPSLOCK,CHECK='SPRR'}
ENTRY SA.SALARIO XSAL {RANGE=1000,2000}
ENTRY SA.NR XNR
CLEARSCREEN 32
RETURN
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 183
ENTEREND
ABORT

KEYPROC KEY.USER
CONDITIONAL
CASE XCOD EQ 10
GOTOXY 24 10
PAUSE ' Case 10 - Tecle ENTER '
CASEEND
CASE XCOD EQ 20
GOTOXY 24 10
PAUSE ' Case 20 - Tecle ENTER '
CASEEND
CASEELSE
GOTOXY 24 10
PAUSE ' Diferente de 10 e de 20 - Tecle ENTER '
CASEEND
CONDITIONALEND
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 184


REPEAT / LOOP)

/TELA

Codigo: [__.]

Nome : [__________________________]

/*
PAGE SET TELA AT 01 01 COLORS 32 7
CLEARSCREEN 32

REPEAT
ACCEPT TELA.1
ACCEPT TELA.2
GOTOXY 24 0
PAUSE ' Tecle ENTER '
CLEARXY 24 0
CLEARSCREEN 32
CLEARFORM
LOOP
KEYPROC KEY.ESCAPE
ABORT
RETURN

(REPEAT-UNTIL)

/TELA

Codigo: [__.]

Nome : [__________________________]

/*

PAGE SET TELA AT 01 01 COLORS 32 7

CLEARSCREEN 32

REPEAT
ACCEPT TELA.1
ACCEPT TELA.2

GOTOXY 24 0
PAUSE ' Tecle ENTER '
CLEARXY 24 0

CLEARSCREEN 32
CLEARFORM
UNTIL [KEY.ESCAPE]
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 185


(REPEAT-UNTIL / INDICATOR / INDICATE)

/TELA

Codigo: [__.]

Nome : [__________________________]

/*

PAGE SET TELA AT 01 01 COLORS 32 7

CLEARSCREEN 32

REPEAT

ACCEPT TELA.1
ACCEPT TELA.2

INDICATOR CODIGO
INDICATE CODIGO AS TELA.1 EQ 10

GOTOXY 24 0
PAUSE ' Tecle ENTER '
CLEARXY 24 0
CLEARSCREEN 32
CLEARFORM

UNTIL [ CODIGO] // se a tela.1 for igual a 10 aborta

ABORT // caso contrario inicia processo novamente

WHILE-END / INDICATOR / INDICATE / REPEAT-UNTIL)

/LICENCA

Senha: ENTRAR

Qual sua senha: [______]

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 186


/TELA

Codigo: [__.]

Nome : [__________________________]

/*

PAGE SET TELA AT 07 01 COLORS 32 7


CLEARSCREEN 32

CLEARSCREEN 32
PAGE SET LICENCA AT 01 01 COLORS 32 7

CHANCE:
ACCEPT LICENCA.1 {CAPSLOCK}

WHILE LICENCA.1 NE 'ENTRAR'

INDICATOR SENHA
INDICATE SENHA AS LICENCA.1 EQ 'ENTRAR'
[NOT SENHA] BEGIN
ERROR 999 ' SENHA INCORRETA ... '

GOTO CHANCE
END
END

REPEAT

ACCEPT TELA.1
ACCEPT TELA.2

GOTOXY 24 0
PAUSE ' Tecle ENTER '
CLEARXY 24 0

CLEARSCREEN 32
CLEARFORM

UNTIL [KEY.ESCAPE]

ABORT

KEYPROC KEY.ESCAPE

ABORT
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 187


┌─────────────────────────────────────┐
│ COMANDOS DE CONTROLE DE INDICADORES │
└─────────────────────────────────────┘

CGC-CHECK var_string
Testa a validade de um CGC. Estabelece o indicador ERR como
verdadeiro se o CGC testado não for válido.

CIC-CHECK var_string
Testa a validade de um CIC. Estabelece o indicador ERR como
verdadeiro se o CIC testado não for válido.

/TELA
TESTANDO CGC - CIC
==================

Informe um CCG : [__________________] <- 27.874.387/0001-61

Informe um CIC : [__________________] <- 248.610.579-49

/*
STRING PONTO

NAME TELA.1 XCGC


NAME TELA.2 YCIC

OPEN CGC

ENTER CGC
CGC.1:
ENTRY CGC.CGC XCGC {AUTOFIND,NOPUT}
MID XCGC TO PONTO 1 3
IF PONTO EQ '.' GOTO CIC-X
INSERT '.' IN XCGC AT 3
INSERT '.' IN XCGC AT 7
INSERT '/' IN XCGC AT 11
INSERT '-' IN XCGC AT 16

CGC_CHECK XCGC

[ ERR] BEGIN
ERROR 999 ' CGC INCORRETO ... '
GOTO CGC.1
END

CIC-X:
ENTRY CGC.CIC YCIC
MID YCIC TO PONTO 1 4
IF PONTO EQ '.' GOTO PULA_INSERT
INSERT '.' IN YCIC AT 4
INSERT '.' IN YCIC AT 8
INSERT '-' IN YCIC AT 12

CIC_CHECK YCIC

[ ERR] BEGIN
ERROR 999 ' CIC INCORRETO ... '
GOTO CIC-X
END
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 188
PULA_INSERT:

GOTOXY 24 0
PAUSE ' Tecle ENTER '
CLEARXY 24 0
RETURN
ENTEREND
ABORT

KEYPROC KEY.ESCAPE
ABORT

-------------------------------------------------------------

IF condição [indicadores] comando.1


ELSE
comando.2

Executa o "comando.1" especificado após o comando IF... se a


condição ou os indicadores possuem o estado verdadeiro; do
contrário, opcionalmente, executa o "comando.2" especificado
após o comando ELSE.

EX: IF XIDADE EQ 20 GOTO LABEL_IDADE


ELSE SHOW ' OK '

IF STATUS banco_de_dados comando.1


ELSE
comando.2

Executa o "comando.1" especificado após o comando IF... se um


registro do banco de dados especificado estiver ativo no buf■
fer; do contrário, opcionalmente, executa o "comando.2" espe■
cificado após o comando ELSE.

EX: IF STATUS CLIENTE


GOTOXY 24 0
PAUSE ' HA REGISTROS NO BUFFER '
ELSE
PAUSE ' NAO HÂ REGISTROS NO BUFFER '

INDICATE BOTTOM$LABEL TRUE

Estabelece o estado do indicador BOTTOM$LABEL como verdadeiro,


o que significa que os dados armazenados pelo comando GRAPHIC-
VALUE serão mostrados no eixo das abcissas (x) no gráfico pro■
duzido pelo comando CHART.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 189


INDICATE BOTTOM$LABEL FALSE

Estabelece o estado do indicador BOTTOM$LABEL como falso, o


que significa que os dados armazenados pelo comando GRAPHIC-
VALUE serão mostrados na posição atual dos dados no sistema de
coordenadas do gráfico.

INDICATE indicador TRUE


INDICATE indicador FALSE
INDICATE indicador.1 AS condição
INDICATE indicador.1 AS indicador.2
INDICATE indicador STATUS banco_de_dados
INDICATE indicador GROUP ANY/ALL ind.1 ind.2 ind.3
AND/OR ANY/ALL ind.4 ind.5 ind.6

Estabelece o estado do indicador como verdadeiro ou falso, de pendendo do


resultado da combinação de indicadores especifica dos após o comando GROUP,
onde:

ANY

Estabelece um estado verdadeiro se qualquer um dos três indicadores


especificados possuir o estado verdadeiro.

ALL

Estabelece o estado verdadeiro se todos os três indicadores especificados


possuírem o estado verdadeiro.

AND ANY / ALL

Permite especificar ao mesmo tempo uma nova combinação do tipo ANY ou ALL
para mais três indicadores, que será analisada independente mente do
resultado da combinação anterior.

OR ANY / ALL

Permite especificar, também, uma outra combinação do tipo ANY ou ALL para
mais três indicadores, que será analisada independentemente do resultado da
combinação anterior.

A combinação AND ou OR é opcional e quando utilizada permite estabelecer


uma nova combinação de até três indicadores.

Os indicadores IND.1 IND.2 e IND.3, assim como os indicadores IND.4, IND.5 e


IND.6 devem ser especificados entre colchetes retos.

ODD var_inteira TO [indicador]

Estabelece um indicador como verdadeiro se o conteúdo da variável inteira


for um número par, do contrário o estabelecerá como falso.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 190


(IF-ELSE / IF STATUS-ELSE)

/TELA
┌─────────┬────────────────┬───────────┐
│ │ CADASTRO TESTE │ │
│ └────────────────┘ │
│ │
│ Codigo : __. │
│ │
│ Nome : ______________________ │
│ │
│ Endereco: __________________________ │
│ │
│ Idade : _. Data: __/__/__ │
│ │
│ Estado : __ (SP,PR,RR) │
│ │
│ Salario : ______.__ Nr: __. │
│ │
└──────────────────────────────────────┘
<F6> - Apaga registro

/*

PAGE SET TELA AT 01 01 COLORS 32 7

CLEARSCREEN 32

STRING XCGC XCIC

STRING XTECLA 1

NAME XCOD XNOM XEND XID XDAT XEST XSAL XNR

OPEN SA

ENTER SA
AUTOPAGE TELA 1

ENTRY SA.CODIGO XCOD {AUTOFIND,NOPUT}


IF_ XCOD EQ 0 GOTO ENT$LP
ENTRY SA.NOME XNOM {CAPSLOCK}
ENTRY SA.ENDERECO XEND {CAPSLOCK}
ENTRY SA.IDADE XID {CAPSLOCK}

GOTOXY 10 15
IF XID EQ 10 SHOW ' Idade igual a 10 '
ELSE SHOW ' Idade diferente de 10 '

ENTRY SA.DATA XDAT {RANGE=01/01/92,31/12/92}


ENTRY SA.ESTADO XEST {CAPSLOCK,CHECK='SPRR'}
ENTRY SA.SALARIO XSAL {RANGE=1000,2000}
ENTRY SA.NR XNR

CLEARSCREEN 32
RETURN
ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 191


KEYPROC KEY.DELETE
KEYPROC ON
IF STATUS SA
GOTOXY 24 0
PAUSE ' Apagar registro (S/N) ? ' WAIT XTECLA
CLEARXY 24 0

I F XTECLA IN 'Ss' GOTO ENTER$.DELETE


ELSE GOTO ENT$LP

ELSE // ELSE do IF STATUS

GOTOXY 24 0

PAUSE ' NENHUM REG NA MEMORIA A SER APAGADO '


CLEARXY 24 0
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 192


(IF ELSE / BEGIN END)

/TELA

Data pagamento: __/__/__

Prazo : __________ (ANTECIPADO, EXTENDIDO, enter)

/*

CLEARSCREEN 32

STRING PRAZO
DATE DATA_PAGTO

INICIO:

ACCEPT TELA.1 TO DATA_PAGTO


ACCEPT TELA.2 TO PRAZO {CAPSLOCK}

IF PRAZO EQ "EXTENDIDO" BEGIN


CALC (DATA_PAGTO + 30) TO DATA_PAGTO
GOTOXY 23 0
SHOW ' Prazo de pagamento extendido para 30 dias '
PAUSE ' Tecle ENTER '
END

ELSE IF PRAZO EQ 'ANTECIPADO' BEGIN


CALC (DATA_PAGTO - 10) TO DATA_PAGTO
GOTOXY 23 0
SHOW ' Prazo de pagamento antecipado em 10 dias '
PAUSE ' Tecle ENTER '
END

ELSE BEGIN
GOTOXY 23 0
SHOW ' Prazo de pagamento inalterado '
GOTOXY 24 0
SHOW ' Pagamento a ser efetuado em : ' DATA_PAGTO
END

INKEY PAGEEND
CLEARSCREEN
GOTO INICIO

KEYPROC KEY.ESCAPE
ABORT
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 193


(INDICATE ... TRUE / INDICATE GROUP ALL)

/TELA

<10> - VERDE
<20> - AZUL
<30> - LILAS

<_.> Informe o codigo de uma das cores

/*

REPEAT

ACCEPT TELA.1

INDICATE ZERO TRUE


INDICATE VERDE AS TELA.1 EQ 10
INDICATE AZUL AS TELA.1 EQ 20
INDICATE LILAS AS TELA.1 EQ 30
INDICATE TODAS_CORES GROUP ANY [VERDE AZUL LILAS]

[ VERDE] BEGIN
GOTOXY 10 05
PAUSE ' Cor VERDE '
CLEARXY 10 00
END
[ AZUL] BEGIN
GOTOXY 10 05
PAUSE ' Cor AZUL '
CLEARXY 10 00
END
[ LILAS] BEGIN
GOTOXY 10 05
PAUSE ' Cor LILAS '
CLEARXY 10 00
END

[ TODAS_CORES] BEGIN
GOTOXY 15 05
SCREENMODE 112 ON
PAUSE ' Foi INDICADO uma cor, e os INDICADORES ;
AZUL - VERDE - LILAS '
SCREENMODE 7 ON
CLEARXY 10 00
END

CLEARFORM TELA

UNTIL [KEY.ESCAPE]
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 194


(INDICATOR / INDICATE)

/*

STRING PROFISSAO CASADO


NUMBER SALARIO
INTEGER IDADE

INDICATOR IND1 IND2 IND3 IND4 REG_COMPLETO

MOVE 'PROGRAMADOR' TO PROFISSAO


MOVE 'YES' TO CASADO
MOVE 2000 TO SALARIO
MOVE 25 TO IDADE

INDICATE IND1 AS PROFISSAO EQ 'PROGRAMADOR'


INDICATE IND2 AS CASADO EQ 'YES'

INDICATE IND3 AS SALARIO EQ 2000


INDICATE IND4 AS IDADE EQ 25

INDICATE TODOS_INDICADORES GROUP ALL [IND1 IND2] ;


AND ALL [IND3 IND4]

[ TODOS_INDICADORES] BEGIN
SCREENMODE 112 ON
GOTOXY 03 15
SHOW PROFISSAO
GOTOXY 05 15
SHOW SALARIO
GOTOXY 07 15
SHOW CASADO
GOTOXY 09 15
SHOW SALARIO
GOTOXY 11 15
SHOW IDADE
SCREENMODE 7 ON
END

GOTOXY 13 00
[ IND1] SHOWLN 'IND1 -> PROGRAMADOR '

GOTOXY 14 00
[ IND2] SHOWLN 'IND2 -> CASADO '

GOTOXY 16 00
[ IND3 ]-E-e SHOWLN 'IDN3 -> SALARIO '

GOTOXY 17 00
[ IND4] SHOWLN 'IND4 -> IDADE '

GOTOXY 24 00
PAUSE 'Tecle ENTER'
ABORT
KEYPROC KEY.ESCAPE
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 195


(INDICATOR / ODD)

Exemplo com indicadores.

/*
REPEAT

CLEARSCREEN 32

INTEGER PAR IMPAR

MOVE 6 TO PAR
MOVE 7 TO IMPAR

INDICATOR IND_PAR
INDICATOR IND_IMPAR

ODD PAR TO IND_PAR


ODD IMPAR TO IND_IMPAR

[ IND_PAR] SHOW ' IDADE 6 '


[ IND_IMPAR] SHOW ' IDADE 7 '

UNTIL [NOT KEY.ESCAPE]

ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 196


┌─────────────────────────────────────────┐
│ COMANDOS DE CONTROLE DE BANCOS DE DADOS │
└─────────────────────────────────────────┘

ATTACH banco_de_dados.1 banco_de_dados.2 banco_de_dados.3 ...

Move dados de um banco de dados de mais alto nível para o


buffer de registro dos bancos de dados relacionados que foram
especificados no comando. O banco de dados de mais alto nível
deve estar aberto e possuir um registro ativo no buffer. Os
bancos de dados especificados no comando devem estar abertos
e possuir um campo-chave de relacionamento com o banco de da■
dos de mais alto nível.

EX: ATTACH CLIENTES FORNEC

CLEAR banco_de_dados.1 banco_de_dados.2 banco_de_dados.3 ...

Limpa o buffer de registro dos bancos de dados especificados


no comando que devem estar abertos.

EX: CLEAR CADCLI CADFOR

CLOSE banco_de_dados.1 banco_de_dados.2 banco_de_dados.3 ...

Fecha os bancos de dados especificados no comando. Em um mes■


mo programa, pode-se reabrir um banco de dados anteriormente
fechado.

EX: CLOSE CLIENTES

COUNT banco_de_dados TO arg COMPARING codições

Armazena no argumento o total ou a contagem de registros do


banco de dados que satisfazem as condições especificadas. A
condição ou as condições especificadas devem comparar um cam■
po do banco de dados com um argumento qualquer.

EX: COUNT CLIENTES TO TOTAL_REGS

DELETE banco_de_dados.1 banco_de_dados.2 banco_de_dados.3 ...

Exclui o registro ativo dos bancos de dados especificados no


comando, atualizando todos os arquivos de índice on-line. Os
bancos de dados especificados devem estar abertos e possuir
um registro de dados ativo no seu buffer de registro.

EX: DELETE CLIENTES VENDAS

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 197


FIND modo banco_de_dados BY RECNUM

Executa uma pesquisa no banco de dados através do número de registro e de


acordo com o modo de procura especificado. Se o registro é encontrado, o
comando estabelece os indicadores predefinidos [FOUND] com verdadeiro e o
[FINDERR] como falso e ainda col oca o registro, quando
encontrado, no buffer de registro estabelecendo o seu estado como ativo.
Se o registro não é encontrado, o comando estabelece [FOUND] como falso e o
[FINDERR] como verdadeiro.

EX:

FIND GT CLIENTES BY RECNUM


[ FOUND] BEGIN
DISPLAY CLIENTES.COD TO JANELA.1
DISPLAY CLIENTES.NOME TO JANELA.2
END
[ FINDERR] BEGIN
GOTOXY 24 0
PAUSE ' REGISTRO NAO ENCONTRADO, SERA INCLUIDO '
CLEARXY 24 0
END

FIND modo banco_de_dados BY INDEX.n

Idêntico ao comando anterior, exceto que a pesquisa será


através do arquivo de índice especificado pelo número "n".
Antes de executar este comando, deve-se mover os dados a se■
rem pesquisados para o compa-chave do banco de dados.

EX:

MOVE JANELA.1 TO CLIENTES.COD


FIND EQ CLIENTES BY RECNUM
[ FOUND] BEGIN
DISPLAY CLIENTES.COD TO JANELA.1
DISPLAY CLIENTES.NOME TO JANELA.2
END
[ FINDERR] BEGIN
GOTOXY 24 0
PAUSE ' REGISTRO NAO ENCONTRADO, SERA INCLUIDO '
CLEARXY 24 0
END

FIND modo campo.chave

Idêntico ao comando anterior, exceto que se deve especificar


o campo-chave pertencente a um arquivo de índice em vez do
número do arquivo de índice no qual ocorrerá a pesquisa. An■
tes de executar este comando, deve-se mover os dados a serem
pesquisados para o campo-chave do banco de dados.

EX:
MOVE JANELA.1 TO CLIENTES.COD
FIND EQ CLIENTES COD.CLIENTES
[ FOUND] BEGIN
DISPLAY CLIENTES.COD TO JANELA.1
DISPLAY CLIENTES.NOME TO JANELA.2
END

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 198


[ FINDERR] BEGIN
GOTOXY 24 0
PAUSE ' REGISTRO NAO ENCONTRADO, SERA INCLUIDO '
CLEARXY 24 0
END

FINDKEY modo banco_de_dados BY INDEX.n FOR campo_chave EQ arg

Executa uma pesquisa no banco de dados através do arquivo de


índice por "n" e de acordo com o modo de procura estabeleci■
do. A pesquisa é baseada no conteúdo do argumento que será
comparado com o campo-chave do arquivo de índice especifica■
do. Se o registro é encontrado, o comando estabelece os indi■
cadores predefinidos [FOUND] como verdadeiro e [FINDERR] como
falso e, ainda, coloca o registro no buffer de registro es■
tabelecendo o seu estado como ativo. Se o registro não é en■
contrado, o comando estabelece [FOUND] como falso e [FINDERR]
como verdadeiro.

EX: FINDKEY EQ CLIENTES BY INDEX.1 FOR CLIENTES.CODIGO ;


EQ JANELA.1

JOIN banco_de_dados.1 interseção banco_de_dados.2 TO ;

banco_de_dados.3 USING INDEX.n COMPARING arg.1 EQ arg.2


Indica ao macro JOIN que tem como finalidade unir dois bancos
de dados em um terceiro através da comparação de um campo-
chave agr.1 do banco de dados.1 em relação a um campo-chave
arg.2 do banco de dados.2, utilizando o arquivo de índice es■
pecificado por "n". A união de dados ocorrerá de acordo com
os seguintes modos de interseção.

NOMATCH : Apenas os registros do banco de dados.1 ou do banco

de dados.2, quando a comparação for falsa.

MATCH : Apenas os registros do banco de dados.1, quando a

comparação for verdadeira.

MERGE : Todos os registros do banco de dados.1 e do banco

de dados.2

JOINMOVE campo.1 OR campo.2 TO campo.3

Move o campo.1 ou o campo.2, respectivamente, do banco de


dados.1 ou do banco de dados.2, para o campo.3 gerando um re■
gistro no banco de dados.3, de acordo com o modo de interse■
ção estabelecido no comando JOIN.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 199


JOINEND
É usado para finalizar o macro JOIN.

OPEN banco_de_dados
Abre o banco de dados e todos os seus arquivos de índice on-
line

EX: OPEN CLIENTES

OPEN banco_de_dados INDEX.n


Abre o banco de dados e carrega na memória o arquivo de índi■
ce especificado por "n"

EX: OPEN CLIENTES INDEX.1

OPEN '\diretório\arquivo.dat' AS banco_de_dados INDEX.n

Abre um banco de dados como sendo o arquivo .DAT localizado


no diretório especificado e, opcionalmente, carrega na memó■
ria o arquivo de índice especificado por "n"

EX: OPEN "C:\DADOS\CLIENTES.DAT" AS CLIENTES INDEX.1

REPLACEALL banco_de_dados USING campo WITH arg COMPARING ;

condição.1 condição.2 condição.3


Troca o conteúdo do campo pelo conteúdo do argumento em todos
os registros que satisfaçam as condições no banco de dados
especificado.

RELATE banco_de_dados.1 banco_de_dados.2 banco_de_dados.3 ...

Procura e move os dados para o buffer de registro em todos os


bancos especificados. Um banco de dados de mais baixo nível
deve estar aberto e possuir um registro ativo no buffer. Os
bancos de dados especificados no comando devem estar abertos
e possuir um campo-chave de relacionamento com o banco de da■
dos de mais baixo nível.

EX: RELATE CLIENTES FORNEC

SAVE banco_de_dados.1 banco_de_dados.2 banco_de_dados.3 ...

Executa automaticamente o comando ATTACH, se existir em ban■


cos de dados relacionados, e grava todas as informações con■
tidas no buffer do registro nos seus respectivos bancos de
dados. O comando também atualiza todos os arquivos de índice
on-line.

EX: SAVE CLIENTES FORNEC

SAVERECORD banco_de_dados.1 banco_de_dados.2 ;


banco_de_dados.3...
Grava todas as informações contidas no buffer de registro nos
seus respectivos bancos de dados. O comando também atualiza
todos os arquivos de índice on-line.

EX: SAVERECORD CLIENTES FORNEC


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 200
SEARCHKEY modo banco_de_dados BY INDEX.n COMPARING campo EQ ;

arg

Executa uma pequisa no banco de dados através de um arquivo


de índice que contenha chaves não exclusívas e de acordo com
o modo de procura estabelecido. A pesquisa é baseada no con■
teúdo do argumento que será comparado com um campo qualquer.
Se o registro é encontrado, o comando estabelece os indicado■
res [FOUND] como verdadeiro e [FINDERR] como falso e, ainda,
coloca o registro no buffer de registro estabelecendo o seu
estado como ativo. Se o registro não é encontrado, o comando
estabelece [FOUND] como falso e [FINDERR] como verdadeiro.

EX: SERACHKEY GE CLIENTES BY INDEX.1 COMPARING SA.SALARIO ;


EQ JANELA.1

SUM banco_de_dados USING compo.numérico TO arg COMPARING ;


condição.1 condição.2 condição.

Armazena no argumento a somatória de um campo numérico de to■


dos os registros que satisfaçam as condiçoes no banco de da■
dos especificado.

EX: SUM CLIENTES USING CLIENTES.SALARIO TO XTOTAL

EROFILE banco_de_dados

Exclui todos os registros do banco de dados aberto e especi■


ficado no comando, atualizando também todos os arquivos de
índice on-line.

EX: ZEROFILE CLIENTES

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 201


(COUNT / SUM / FINDKEY)

/TELA

Codigo: <__.>

/*

INTEGER XTOT_REGS
NUMBER XTOT_SALARIO

OPEN SA

INICIO:
ACCEPT TELA.1

COUNT SA TO XTOT_REGS // Soma regs no banco de dados

SUM SA USING SA.SALARIO TO XTOT_SALARIO

MOVE TELA.1 TO SA.CODIGO


FINDKEY EQ SA BY INDEX.1 FOR SA.CODIGO EQ TELA.1
[ ~ FOUND] BEGIN
GOTOXY 24 0
PAUSE ' REGISTRO NAO ENCONTRADO '
CLEARXY 24 0
GOTO INICIO
END

[ FOUND] BEGIN
GOTOXY 10 0
SHOW ' Codigo : ' SA.CODIGO
GOTOXY 11 0
SHOW ' Nome : ' SA.NOME

GOTOXY 20 0
SHOW ' COMANDO COUNT : ' XTOT_REGS
GOTOXY 21 0
SHOW ' COMANDO SUM : ' XTOT_SALARIO

GOTOXY 24 0
PAUSE ' Tecle ENTER '
CLEARXY 24 0

CLEAR SA
CLEARSCREEN
GOTO INICIO
END

KEYPROC KEY.ESCAPE
ABORT
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 202


┌──────────────────────────────────────┐
│ COMANDOS DE SAτDA E SAÍDA SEQUENCIAL │
└──────────────────────────────────────┘

CLOSE_INPUT

Fecha um arquivo sequêncial ou dispositivo de entrada aberto


anteriormente pelo comando DIRECT_INPUT.

EX: CLOSE_INPUT

CLOSE_OUTPUT

Fecha um arquivo sequêncial ou dispositivo de saída aberto


anteriormente pelo comando OUTFILE.

EX: CLOSE_OUTPUT

DIRECT_INPUT arg_string

Abre um arquivo sequêncial ou dispositivo de entrada especi■


ficado em arg_string.

EX: DIRECT_INPUT "DADOS.TXT"


DIRECT_INPUT "C:\ARQS\VENDA.TXT"

OUTCLOSE

Fecha um arquivo sequêncial ou dispositivo de saída aberto


anteriormente pelo comando OUTFILE.

EX: OUTCLOSE

OUTFILE %arg_string

Define a impressora como dispositivo de saída ou, opcional■


mente, o arquivo sequêncial ou o dispositivo especificado. A
opção "%" elimina a buferização de dados para a saída espe■
cificada que normalmente é feita em blocos de 128 bytes.

EX: OUTFILE LST: (Enviará dados para a impressora)


OUTFILE %LST:

OUTFILE CON: (Enviará dados para a tela)


OUTFILE %CON:

OUTFILE "ARQUIVO.TXT" (Enviará dados para serem armaze-


OUTFILE "%ARQUIVO.TXT" nados no arquivo especificado)

READ arg.1 arg.2 = arg.3 ...

Lê um dado de um arquivo sequêncial ou de outro dispositivo


de entrada aberto, armazenando-o no argumento especificado.
Para cada argumento especificado, um dado será lido e arma■
zenado. O comando identifica as vírgulas ou espaços para se■
parar as informações coletadas e armazená-las nos argumen■
tos, exceto quando as mesmas estejam em um texto entre as■
pas.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 203


O comando lerá tantos dados quantos forem os argumentos es■
pecificados no comando, até que encontre um caractere de fi■
nal de linha CR (Carriage Return / Retorno do Carro) no ar■
quivo ou dispositivo que está sendo lido.
O número de argumentos deve ser igual ao número de dados a
serem lidos em cada linha, do contrário, poderão ocorrer re■
sultados imprevistos.

READ_BLOCK arg.string arg.inteiro

Lê, de um arquivo sequêncial ou de outro dispositivo de en■


trada aberto, o número de caracteres especificado em arg_in■
teiro armazenando-o em arg_string. O argumento string pode
ser um campo, variável ou janela. O argumento inteiro pode
ser uma constante, campo, janela ou variável.

READLN arg.1 arg.2 ...

Lê um caractere de final de linha CR do arquivo ou disposi■


tivo aberto. Se um argumento é especificado, todos os dados
da linha que estão sendo lidos serão armazenados neste argu■
mento, e o controle de leitura saltará para a próxima linha.
Se vários argumentos forem especificados, o comando lerá
tantos dados quantos forem os argumentos, semelhante ao co■
mando READ, exceto que o caractere de final de CR também se■
rá lido, passando o controle de leitura para a próxima li■
nha.

WRITE arg.1 arg.2 arg.3 ...

Envia o conteúdo do(s) argumento(s) para o arquivo sequên■


cial ou dispositivo de saída aberto anteriormente. Utilize o
comando WRITELN para enviar o caractere de final de linha
CR.

WRITELN arg.1 arg.2

Envia o conteúdo do(s) argumento(s) quando especificado e,


em seguida, o caractere de final de linha CR para o arquivo
sequêncial ou dispositivo de saída aberto anteriormente.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 204


(OUTFILE / OUTCLOSE / CLOSE_OUTPUT)

// O programa abaixo le o arquivo SA e joga os dados no ar


// quivo sequencial ARQSA.TXT

OPEN SA

OUTFILE 'ARQSA.TXT'

REPEAT
FIND GT SA.RECNUM
[ FOUND] BEGIN
WRITELN SA.CODIGO " " SA.NOME " " ;
SA.ENDERECO " " SA.IDADE
KEYCHECK GOSUB PAUSA
END
UNTIL [ FINDERR]

OUTCLOSE // ou CLOSE_OUTPUT
RUNPROGRAM 'TYPE ARQSA.TXT'

KEYPROC KEY.ESCAPE
ABORT
RETURN

PAUSA:
GOTOXY 24 00
PAUSE ' Tecle ENTER p/ continuar ou ESC p/ sair '
CLEARXY 24 00
RETURN

// Arquivo sequencial gerado ARQSA.TXT

// 20 MIKE ALLAN SANDERS RUA ESTADOS UNIDOS, 3400 3


// 10 JENIFFER STEVENS RUA ESTADOS UNIDOS, 200 20
// 30 MARCELO DO SANTOS RUA XXXXXXXX 20
// 10 MICHAEL DONER RUA XXXXXXXXXXXXXXXXXX 10

(DIRECT_INPUT / READ / READLN / CLOSE_INPUT / WINDOWINDEX)

WINDOWINDEX é uma variável inteira pré-definida (declarada


no comando FLEX$INIT. É usada para acessar randomicamente
janelas em uma tela. WINDOWINDEX é usado para referenciar
uma janela e pode assumir valor positivo ou negativo.

WINDOWINDEX é usado para facilitar a programação quando um


programa precisa referenciar um intervalo de janelas que es■
tejam numa sequência. Quando precisar, referenciar à 20 ja■
nelas, ao invés de utilizar 20 janelas de programa, você po■
de usar um comando que faça uso do WINDOWINDEX.

Mover um valor para a variáves WINDOWINDEX e usar um comando


que acesse uma janela usando esta variável. O ampersend (
"&" comercial) é usado como um caractere de endereçamento no
acesso a janelas com WINDOWINDEX.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 205


OBSERVE O EXEMPLO ABAIXO:

/TELA
LENDO ARQUIVO SEQUENCIAL
========================

Codigo Nome Idade


------ -------------------- -----
__. ____________________ _.
__. ____________________ _.
__. ____________________ _.
__. ____________________ _.
__. ____________________ _.
/*

STRING XDESCR 20
INTEGER XCOD XIDADE

MOVE 0 TO WINDOWINDEX

DIRECT_INPUT "DADOS3.TXT"

REPEAT
READ XCOD
READ XDESCR
READ XIDADE

TOP:
READLN
PRINT XCOD TO TELA. 1 &
PRINT XDESCR TO TELA. 2 &
PRINT XIDADE TO TELA. 3 &

MOVE (WINDOWINDEX + 3) TO WINDOWINDEX


UNTIL WINDOWINDEX GT 14

PAGE TELA
GOTOXY 24 00
PAUSE ' Tecle ENTER p/ continuar ou ESC p/ sair '
MOVE 0 TO WINDOWINDEX
CLEARSCREEN
GOTO TOP
CLOSE_INPUT

KEYPROC KEY.ESCAPE
ABORT
RETURN

// Conteúdo do arquivo DADOS3.TXT


//
// 100, "MARCELO " , 10
// 200, "MIKE ALLAN" , 2
// 300, "SIMONE PEDRAO", 19
// 400, "ALCIDES " , 35
// 500, "CARLOS X " , 17
// 600, "LORENA FRIDA" , 25

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 206


O programa acima le o arquivo sequencial DADOS3.TXT e move os dados para a
imagem.

OUTFILE % / WRITE / WRITELN)

/TELA

Codigo: __.
Nome : _________________________
Idade : _.

/*

// Observe a posicao do caracter "%" (percent)


// antes do nome do arquivo. O nome do arquivo e ARQ1.TXT

OUTFILE '%ARQ1.TXT'

REPEAT
ACCEPT TELA.1
ACCEPT TELA.2
ACCEPT TELA.3
[KEY.ESCAPE] ABORT
WRITE TELA.1 ',' TELA.2 ',' TELA.3
CLEARFORM
UNTIL [KEY.ESCAPE]
ABORT
CLOSE_OUTPUT // ou OUTCLOSE

O programa acima irá criar um arquivo-texto (sequencial) de


acordo com o exemplo abaixo.

// WRITE : 10,ROBERTO CARLOS,20 20,CARLOS AUGUSTO,20


// WRITELN : 111,MARIA PEREIRA,10
// 200,PEDRO CUNHA,10

(DIRECT_INPUT / READ_BLOCK / CLOSE_INPUT)


/*

STRING BLOCO1 BLOCO2 BLOCO3 BLOCO4

DIRECT_INPUT 'CADASTRO.TXT'

READ_BLOCK BLOCO1 19
READ_BLOCK BLOCO2 13
READ_BLOCK BLOCO3 04
READ_BLOCK BLOCO4 05

GOTOXY 10 0
SHOW ' Bloco 1 : ' BLOCO1
GOTOXY 11 0
SHOW ' Bloco 2 : ' BLOCO2
GOTOXY 12 0
SHOW ' Bloco 3 : ' BLOCO3
GOTOXY 13 0
SHOW ' Bloco 4 : ' BLOCO4
INKEY PAGEEND
CLOSE_INPUT
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 207


O programa acima le o conteúdo do arquivo CADASTRO.TXT e carrega para
memória.

// Abaixo conteúdo do arquivo: CADASTRO.TXT

// DANIELA DOS SANTOS,RUA ALEMANHA,100,TIMBO

// RESULTADO
// =========
// Bloco 1 : DANIELA DOS SANTOS,
// Bloco 2 : RUA ALEMANHA,
// Bloco 3 : 100,
// Bloco 4 : TIMBO

------------------------------------------------------------

(DIRECT_INPUT / READ / READLN / [SEQEOF] / KEYCHECK)

/*

// Move dados de um arquivo sequencial


// para uma base dados Dataflex.

CLEARSCREEN

STRING TECLA
NUMBER REGS

DIRECT_INPUT 'DADOS1.TXT' // <----

[ SEQEOF] BEGIN
GOTOXY 10 10
SCREENMODE 112 ON
PAUSE ' O arquivo informado esta vazio /ou/ NAO existe ! '
SCREENMODE 7 ON
CLEARSCREEN
ABORT
END

OPEN ALUNOS

REPEAT
READ ALUNOS.CODIGO
READ ALUNOS.NOME_ALUNO
READ ALUNOS.IDADE
READ ALUNOS.DATA_NASC

READLN

[ ~ SEQEOF] BEGIN
SAVERECORD ALUNOS
CLEAR ALUNOS
SHOW '>'
MOVE (REGS + 1) TO REGS
END

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 208


KEYCHECK BEGIN
GOTOXY 22 00
SHOWLN ' Uma tecla foi press.' REGS ' ;
Regs gravados'
GOTOXY 23 00
PAUSE ' Press. qq. p/ CONT. ou ESC p/ CANC. '
INKEY TECLA
[KEY.ESCAPE] ABORT
END
UNTIL [ SEQEOF]

SAVERECORD ALUNOS
GOTOXY 24 00
SHOW REGS
MOVE (REGS + 1) TO REGS
GOTOXY 22 00
SHOWLN REGS 'Registros GRAVADOS do arquivo SEQUENCIAL;
(dados1.txt) p/ o arq. ALUNOS '
GOTOXY 24 00
PAUSE 'Tecle ENTER'
CLEARSCREEN
ABORT

// Conteudo do arq. DADOS1.TXT


// ===========================
// 10, "JUNIOR McFERSON ", 20 , 01/01/78
// 20, "MIKE ALLAN HENKINS", 2 , 02/03/91
// 30, "ROBERTO DA SILVA ", 30 , 10/10/75
// 40, "DORACI ROEDER", 25 , 31/10/69
// 50, "BRUNA STEIN " , 5 , 03/07/89
// 60, "DAIANA PEREIRA ", 4 , 04/03/90
------------------------------------------------------------
( OUTFILE / REPORT / OUTCLOSE)

/BODY RESIDENT
____., "_____________________", "______________________"
/*
// Gerando arquivo sequencial com
// a ajuda do utilitario DFQUERY.EXE

OPEN CLI INDEX.1


OUTFILE '%ARQCLI.TXT'

MOVE 0 TO PAGEEND

REPORT CLI BY INDEX.1

SECTION BODY
PRINT CLI.COD_CLIENTE
PRINT CLI.CLIENTE
PRINT CLI.ENDERECO
OUTPUT BODY
REPORTEND
FORMFEED
ABORT

OUTCLOSE

// *** Resultado ***


// 11, "MARCELO DOS SANTOS ", "RUA UBERLANDIA, 200 "
// 22, "DIANA ARAUJO ", "RUA SANTOS DUMONT, 200"
// 33, "DEMERVAL CUNHA ", "RUA ALEMANHA, 120 "
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 209
┌────────────────────────────────────┐
│ COMANDOS DE MANIPULAÇÃO DE STRINGS │
└────────────────────────────────────┘

APPEND var_string arg.string.1 arg_string.2 ...

Concatena o conteúdo do(s) argumento(s) string com o conteú■


do da variável string, armazenando o texto final em var_s■
tring.

EX: STRING TEXTO


MOVE "" TO TEXTO
APPEND TEXTO " Primeira parte - "
APPEND TEXTO " Segunda parte "
GOTOXY 24 0
SHOW ' Conteudo da variavel TEXTO : ' TEXTO

-------------------------------------------------------

/TELA
+-----------------------------------------------+
: :
: CODIGO FISCAL: ___ :
: :
+-----------------------------------------------+
: CHECANDO TABELA CODIGOS FISCAIS :
: =================================== :
: 001/002/003/004/005/006/007/008/009 :
: 101/102/103/104/105/106/107/108/109 :
: 111/222/333/444/555/666/777/888/999 :
: 201/202/203/204/205/206/207/208/209 :
: 301/302/303/304/305/306/307/308/309 :
+-----------------------------------------------+
/*
CLEARSCREEN
STRING XF1 175 XF2 35 XF3 35 XF4 35 XF5 35

MOVE '001/002/003/004/005/006/007/008/009' TO XF 1
MOVE '101/102/103/104/105/106/107/108/109' TO XF2
MOVE '111/222/333/444/555/666/777/888/999' TO XF3
MOVE '201/202/203/204/205/206/207/208/209' TO XF4
MOVE '301/302/303/304/305/306/307/308/309' TO XF5

APPEND XF1 XF2 XF3 XF4 XF5

REPEAT
ACCEPT TELA.1 {CHECK=XF1}

[ KEY.ESCAPE] ABORT
GOTOXY 16 17
SCREENMODE 112 ON
PAUSE ' === OKAY === '
SCREENMODE 7 ON
CLEARFORM TELA
CLEARXY 16 00
LOOP

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 210


ASCII arg.string TO arg.numérico

Armazena um código numérico da tabela ASCII em arg_numéri■


co, o qual corresponde ao primeiro caractere do conteúdo de
arg_string.

EX: STRING NR
INTEGER ASCII_NR
MOVE 154.45 TO NR
ASCII NR TO ASCII_NR
SHOW ASCII_NR

CHARACTER arg.inteiro TO arg.string

Armazena um caractere da tabela ASCII arg.string correspon■


dente ao código inteíro entre 0 e 255, especificado em
arg_inteiro.

EX: STRING COD_219


CHARACTER 219 TO COD_219
SHOW COD_219

CMDLINE arg.1 arg.2 arg.3 ...

Recupera um ou mais dados transferidos diretamente do siste■


ma operacional ou pelo comando CHAIN, armazenando-os nos ar■
gumentos especificados. O argumento pode ser um campo, jane■
la ou variável e deve ser do mesmo tipo do dado que será re■
cuperado.

INSERT arg.string IN var.string AT posicção

Insere o argumento string no conteúdo da variável string a


partir da posição especificada.

EX: STRING TEXTO


MOVE "Estamos aqui para testados " TO TEXTO
-E-e INSERT " sermos" IN TEXTO AT 18
SHOW TEXTO

LEFT arg.string TO var.string n

Armazena na variável string os "n" primeiros caracteres do


argumento string. O argumento string pode ser uma constante,
janela ou variável.

EX: STRING NOME PARTE

MOVE "MIKE ALLAN McSTRONG" TO NOME

LEFT NOME TO PARTE 10

GOTOXY 10 0
SHOW ' Variavel NOME : ' NOME
GOTOXY 11 0
SHOW ' Variavel PARTE : ' PARTE

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 211


LENGTH arg.string TO var.numérica

Armazena na variável numérica o comprimento total de carac■


teres contidos no argumento string.

EX: STRING CODIGO 3 NOME 20


INTEGER TAMANHO_COD TAMANHO_NOME
LENGTH CODIGO TO TAMANHO_COD
LENGTH NOME TO TAMANHO_NOME

GOTOXY 10 0
SHOW TAMANHO_COD
GOTOXY 11 0
SHOW TAMANHO_NOME

LENGTH arg.string

Retorna a quantidade total de caracteres contidos no argu■


mento string, incluindo os espaços existentes.

MID arg.string TO var.string n posição

Armazena na variável string os "n" caracteres que estejam


próximos do argumento string a partir da posição especifica■
da. O argumento string pode ser uma constante, janela ou
variável.

EX: STRING DATA MES DIA ANO


MOVE "10/10/92" TO DATA

MID DATA TO DIA 2 1


MID DATA TO MES 2 4
MID DATA TO ANO 2 7

SHOW DIA '-' MES '-' ANO

PAD arg.string TO var.string n

Armazena na variável string os "n" primeiros caracteres do


argumento string. O argumento string pode ser uma constante,
janela ou variável. Este comando é semelhante ao comando
LEFT, porém se o conteúdo do argumento string for menor que
o número de caracteres a ser movido, o comando PAD adiciona■
rá espaços em branco.

EX: STRING FRASE PEDACO

MOVE "Coisas boas da vida e coisas mas" TO FRASE

PAD FRASE TO PEDACO 19

GOTOXY 10 0
SHOW FRASE

GOTOXY 11 0
SHOW PEDACO

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 212


POS var.substring IN arg.string TO var.numérica

Armazena na variável numérica a posição inicial na qual o


arg_substring é encontrado dentro do argumento string. Se o
arg_substring não for encontrado no arg_string, será armaze■
nado o valor zero. Os argumentos podem ser uma constante,
janela ou variável.

REMOVE arg.substring FROM arg.string

Remove o arg_substring do conteúdo do arg_string. Os argu■


mentos podem ser uma constante, campo, janela ou variável
com a exceção de que o arg_string não pode ser uma constan■
te.

REPLACE arg.string1 IN arg.string2 WITH arg.string3

Substitui o arg_string1 pelo arg_string3 no conteúdo do


arg_string2. Os argumentos podem ser uma constante, campo,
janela ou variável, com exceção do arg_string2 que não pode
ser uma constante.

EX: STRING TEXTO


MOVE "Esta era uma phorma antiga de escrever ;
pharmacia" TO TEXTO
REPEAT
REPLACE "ph" IN TEXTO WITH "F"
UNTIL [NOT FOUND]
SHOW TEXTO

RIGHT arg.string TO var.string n

Armazena na var_string os "n" últimos caracteres do arg_s■


tring. O arg_string pode ser uma constante, janela ou variá■
vel.

EX: STRING NOME PARTE

MOVE "MIKE ALLAN McSTRONG" TO NOME

RIGHT NOME TO PARTE 8

GOTOXY 10 0
SHOW ' Variavel NOME : ' NOME
GOTOXY 11 0
SHOW ' Variavel PARTE : ' PARTE

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 213


TRIM var.string1 TO var.string2

Armazena o conteúdo da var_string1 na var_string2 eliminando


espaços existentes no início e final da string.

EX: STRING GORDA ENXUTA


MOVE " FRIDOLINA " TO GORDA
TRIM GORDA TO ENXUTA

GOTOXY 10 0
SHOW GORDA
GOTOXY 11 0
SHOW ENXUTA

ou

STRING XNOME
OPEN CLIENTES
TRIM CLIENTES.NOME TO NOME
MOVE NOME TO CLIENTES.NOME

UPPERCASE arg.string TO var.string

Converte em maiúsculas todas as letras minúsculas do arg_s■


tring e, opcionalmente armazena-os na var_string. O argumen■
to pode ser um campo, janela ou variável.

EX: STRING TEXTO1 TEXTO2

MOVE "texto digitado em letras minusculas" TO TEXTO1

UPPERCASE TEXTO1 TO TEXTO2

SHOW TEXTO2

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 214


┌───────────────────────────────────┐
│ COMANDOS DE CONTROLE MULTIUSUÂRIO │
└───────────────────────────────────┘

DESPOOL

Em um ambiente multiusuário, este comando direciona a im■


pressão de um relatório para o SPOOL, liberando o sistema
para a operação.

EX: DESPOOL

LOCK

Em um ambiente multiusuário, este comando bloqueia todos os


usuários permitindo que apenas um usuário por vez grave o
seu registro no banco de dados até que um comando UNLOCK se■
ja executado.

EX: LOCK

REREAD banco_dados1 banco_dados2 ..

Em um ambiente multiusuário, este comando bloqueia todos os


bancos de dados abertos ou, opcionalmente, os bancos de da■
dos especificados e, em seguida, relê e move para o buffer o
registro atual. Use o comando UNLOCK para liberar os bancos
de dados bloqueados.

EX: REREAD CLIENTE VENDAS

UNLOCK

Libera registros bloqueados pelos comandos LOCK ou REREAD.

EX: UNLOCK

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 215


┌─────────────────────────────────┐
│ COMANDOS DE CONTROLE DO SISTEMA │
└─────────────────────────────────┘

COPYFILE arg_string_origem TO arg_string_destino

Copia o arquivo especificado no arg_string_origem para o ar■


quivo de nome e localização especificados pelo arg_s■
tring_destino.

EX: COPYFILE "C:\DADOS\FONTE.FRM" TO "A:\PROG1.FRM"

DIRECTORY arg_string
Exibe o diretório corrente, listando todos os nomes de ar■
quivos existentes. Opcionalmente, pode-se indicar o aciona■
dor e a especificação dos arquivos que serão listados atra■
vés do arg_string.

EX: DIRECTORY "C:\DADOS\*.FRM"

ERASEFILE arg_string

Apaga um arquivo especificado no arg_string. Pode-se apagar


apenas um arquivo a cada comando. Pode-se especificar também
o acionador de localização do arquivo no próprio arg_string.

EX: ERASEFILE "C:\DADOS\CLIENTES.DAT"

FIELD_DEF banco_de_dados nr.do_campo TO var_número1 ;


var_número2

Através do banco de dados especificado e do número de um


campo, este comando armazena em var_numero1 o tipo de campo
de acordo com a tabela:

0 - campo alfanumérico (STRING ou ASCII).


1 - campo numérico.
2 - campo data.
3 - campo overlap.

E ainda armazena em var_numero2 o número do arquivo de índi■


ce que utiliza este campo. Se a var_número2 for igual a ze■
ro, isto significa que este campo não é utilizado em arqui■
vos de índice. Antes de executar o comando deve-se abrir o
banco de dados.

FILE_MODE banco_de_dados modo_de_acesso


Define um modo de acesso aos registros de um banco de dados
especificado e aberto anteriormente de acordo com os seguin■
tes modos:

Abaixo os modos de acesso:

READ_ONLY : Só leitura.
SINGLE_USER : Um único usuário tem acesso.
DEFAULT : Leitura e gravação (acesso normal)
EX: FILE_MODE CLIENTES READ_ONLY

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 216


FILE_SIZE banco_de_dados TO var_número1 var_número2 ;
var_número3

Armazena o número atual de registros, o número máximo de re■


gistros e o número total de campos nas variáveis var_número,
var_número2 e var_número3, respectivamente, do banco de da■
dos especificado.

FILE_SIZE var_numérica TO var_string1 var_string2

Altera o número máximo de registros do banco de dados espe■


cificado para o valor indicado na variável numérica. Deve-se
abrir o banco de dados antes de executar este comando.

FILELIST var_numérica var_string1 var_string2

Armazena em var_string1 o nome do banco de dados utilizado


pelos utilitários Dataflex e, opcionalmente, na var_string2,
o nome do banco de dados utilizado pela linguagem Dataflex.
Ambos ocorrem de acordo com o número de banco de dados espe■
cificado na variável numérica.

FILELIST NEXT TO var_string1 var_string2

Armazena em var_string1 o nome do banco de dados utilizado


pelos utilitários Dataflex e, opcionalemente, na var_s■
tring2, o nome do banco de dados utilizado pela linguagem
Dataflex. Ambos ocorrem de acordo com o número do banco de
dados imediatamente maior que o armazenamento na variável
predefinida FILENUMBER.

FILELIST PATHNAME TO var_string1 var_string2

Armazena em var_string1 o nome do banco de dados utilizado


pelo sistema operacional e, opcionalmente, em var_string2, o
nome do banco de dados utilizado pela linguagem Dataflex.
Ambos ocorrem de acordo com o número do banco de dados arma■
zenado na variável predefinida FILENUMBER.

INDEX_DEF banco_de_dados INDEX.n TO var_string

Armazena na var_string os números que representam os campos


que fazem parte do arquivo de índice especificado por "n" do
banco de dados aberto. O número de segmentos dentro do índi■
ce será armazenado na variável predefinida STRLEN, logo após
a execução do comando acima.

MAKE_FILE d1:arquivo.def d2: número

Cria um arquivo de banco de dados no acionador d2:, opcio■


nalmente com o número especificado, através de um arquivo de
definição de banco de dados .DEF , localizado no acionador
d1:

MEMORY janela_numérica
Exibe a quantidade de memória disponível em bytes, na janela
especificada em qualquer ponto do programa.

EX: MEMORY JANELA.10


Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 217
REGISTRATION var_string var_numérica

Armazena na var_string o nome de registro e, opcionalemente,


na variável numérica, o número de série de uma licença Data■
flex.

/*

STRING EMPRESA
INTEGER SERIE

REGISTRATION EMPRESA SERIE

GOTOXY 10 0
SHOW EMPRESA " " SERIE

INDICATOR LICENCA NUMERO

MOVE "INTERCOMP" TO EMPRESA


MOVE 29 TO SERIE

INDICATE LICENCA AS EMPRESA EQ "INTERCOMP"


INDICATE NUMERO AS SERIE EQ 29

[ LICENCA] SHOW ' LICENCA OK '


[ ~ LICENCA] SHOW ' LICENCA INVALIDA '

[ NUMERO] SHOW ' NUMERO DE SERIE OK '


[ ~ NUMERO] SHOW ' NUMERO DE SERIE INVALIDO '

OU

IF_ EMPRESA NE "INTERCOMP" ABORT


IF_ SERIE NE 29 ABORT

RENAMEFILE arg_string_antigo TO arg_string_novo

Muda o nome do arquivo especificado no arg_string_antigo para


o nome novo especificado no arg_string_novo.

EX: RENAMEFILE "VELHO.SCR" TO "NOVO.SCR"

RUNPROGRAM arg_string
RUNPROGRAM WAIT arg_string

Executa um programa no sistema operacional de dentro de um


programa Dataflex retornando ao menu príncipal do Dataflex ou,
opcionalmente, a próxima linha de comando, se WAIT for especi■
ficado. O nome do programa assim como os parâmetros a serem
passados para este programa devem ser especificados no arg_s■
tring.

EX: RUNPROGRAM "CLS"


RUNPROGRAM "CD\DATAFLEX"

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 218


SYSDATE var_data var_numérica1 var_numérica2

Armazena em var_data a data do sistema operacional e, opcio■


nalmente, a hora e o minuto atuais em var_numérica1 e var_nu■
mérica2

EX: SYSDATE JANELA.1 JANELA.2 JANELA.3 JANELA.4

10/10/92 4:30:06

SYSTEM

Fecha qualquer banco de dados, arquivo ou dispositivo aberto;


encerra o processamento do programa e retorna ao sistema ope■
racional.

EX: SYSTEM

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 219


(FILELIST NEXT TO / FILELIST PATHNAME TO / FILENUMBER)

/TELA
┌──────────────────────────────────────┐
│ Codigo : __. │
│ Nome : ______________________ │
│ Endereco: __________________________ │
│ Idade : _. Data: __/__/__ │
│ Estado : __ (SP,PR,RR) │
│ Salario : ______.__ Nr: __. │
└──────────────────────────────────────┘
FILE-SIZE
=========
Tamanho Atual : ___.
Tamanho Maximo Registros : ___.
Quantidade de campos : ___.

FILELIST
========
Nr arquivo : ___.
Nome usuario : ________________________
Nome Dataflex : ________________________

FILELIST NEXT TO : ______________________


FILELIST PATHNAME TO : ______________________
FILENUMBER : ______________________
/*

INTEGER TAM_ATUAL TAM_MAX QTDE_CAMPOS NR_ARQ FILENR


STRING NOME_USUARIO NOME_FLEX PROX_ARQ ORIGEM

PAGE SET TELA AT 01 01 COLORS 32 7

CLEARSCREEN 32

OPEN SA

ENTER SA
AUTOPAGE TELA 1

ENTRY SA.CODIGO TELA.1 {AUTOFIND,NOPUT}


IF_ TELA.1 EQ 0 GOTO ENT$LP

ENTRY SA.NOME TELA.2 {CAPSLOCK}


ENTRY SA.ENDERECO TELA.3 {CAPSLOCK}
ENTRY SA.IDADE TELA.4 {CAPSLOCK}
ENTRY SA.DATA TELA.5 {RANGE=01/01/92,31/12/92}
ENTRY SA.ESTADO TELA.6 {CAPSLOCK,CHECK='SPRR'}
ENTRY SA.SALARIO TELA.7
ENTRY SA.NR TELA.8

FILE_SIZE SA TO TAM_ATUAL TAM_MAX QTDE_CAMPOS


MOVE TAM_ATUAL TO TELA.9
MOVE TAM_MAX TO TELA.10
MOVE QTDE_CAMPOS TO TELA.11

FILELIST 5 TO NOME_USUARIO NOME_FLEX


MOVE 5 TO TELA.12
MOVE NOME_USUARIO TO TELA.13
MOVE NOME_FLEX TO TELA.14

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 220


FILELIST NEXT TO PROX_ARQ
MOVE PROX_ARQ TO TELA.15

FILELIST PATHNAME TO TELA.16

MOVE FILENUMBER TO TELA.17

RETURN
ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 221


───────────────────────────────────────────────────────────────────────────
DATAFLEX 2.3b Linguagem de Quarta Geração
────────────────────────────────────────────────────────────────────────────
┌───────────────────┐
│ COMANDOS GRÂFICOS │
└───────────────────┘

ARC arg.1 arg.2 arg.3 arg.cor

No modo gráfico, desenha apenas o contorno de um arco no disposi■


tivo de saída na posição atual do cursor, de acordo com:

arg.1 - Raio de arco.


arg.2 - Èngulo inicial em radianos.
arg.3 - Èngulo final em radianos.

Opcionalmente pode-se exibir o contorno do arco na cor desejada


através de um código de cor especificado em arg.cor.

BOX arg.1 arg.2 arg.3 arg.4 arg.cor

No modo gráfico, desenha um retângulo no dispositivo de saída na


posição especificado, pelo seus vértices opostos, de acordo com:

arg.1 - Posição horizontal do primeiro vértice.


arg.2 - Posição vertical do primeiro vértice.
arg.3 - Posição horizontal do segundo vértice.
arg.4 - Posição vertical do segundo vértice.

Opcionalmente, pode-se exibir o retângulo na cor desejada através


de um código de cor especificado em arg.cor
Os argumentos arg.1, arg.2, arg.3 e arg.4 devem ser constantes,
campos, janelas ou variáveis do tipo numérico ou inteiro.

CHART tipo string arg.string1 arg.string2

No modo gráfico, exibe um gráfico no dispositivo de saída baseado


em dados fornecidos anteriormente através do comando GRAPH_VALUE,
de acordo com o argumento "tipo" que define o tipo de gráfico,
conforme:

BAR - Gráfico de barras.


LINE - Gráfico de linhas.
PIE - Gráfico de torta (setores).

CHART_INIT

Define o início de uma série de comandos GRAPH_VALUE e inicializa


variáveis internas e a ordenação dos dados. Move a cor atual do
sistema para as variáveis predifinidas LABEL$COLOR e CHART$COLOR e
também estabelece o indicador predifinido BOTTOM$LABEL como verda■
deiro.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 222


CIRCLE arg.1 arg.2 arg.3 arg.cor

No modo gráfico, desenha um círculo no dispositivo de saída, de


acordo com:

arg.1 - Posição horizontal do centro do círculo.


arg.2 - Posição vertical do centro do círculo.
arg.3 - Raio do círculo.

Opcionalmente, pode-se exibir o círculo na cor desejada através de


um código de cor especificado em arg.cor.
Os argumentos arg.1, arg.2, e arg.3 devem ser constantes, campos,
janelas ou variáveis do tipo numérico ou inteiro.

DISPLAY_CUT arg.string arg.1 arg.2 1 ou 2

No modo gráfico, exibe o dispositivo de saída uma faixa retangular


de um gráfico gravado anteriormente em um arquivo pelo comando SA■
VE_CUT, cujo nome deve ser especificado em arg_string. A faixa re■
tangular do gráfico será exibida na posição especificado de acordo
com:

arg.1 - Posição horizontal do canto superior esquerdo da faixa re■

tangular do gráfico.

arg.2 - Posição vertical do canto superior esquerdo da faixa re■

tangular do gráfico.

Opcionalmente, pode-se exibir o gráfico no modo normal 1 ou no mo■


do inverso 2. Os argumentos arg.1, e arg.2, devem ser constantes
campos, janelas ou variáveis do tipo numérico ou inteiro.

DISPLAY_GRAPHIC arg_string

No modo gráfico, exibe no dispositivo de saída um gráfico gravado


anteriormente em um arquivo pelo comando SAVE GRAPHIC, cujo nome
deve se especificado em arg_string.

ELLIPSE arg.1 arg.2 arg.cor

No modo gráfico, desenha um elipse no dispositivo de saída na po■


sição atual do cursor, de acordo com:

arg.1 - Raio de elipse na horizontal.

arg.2 - Fator que será multiplicado pelo raio para determinar a

altura da elipse na vertical.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 223


Opcionalmente, pode-se exibir a elipse na cor desejada através de
um código de cor especificado em arg.cor. Os argumentos arg.1, e
arg.2, devem ser constantes campos, janelas ou variáveis do tipo
numérico ou inteiro.

FLOOD arg.cor

No modo gráfico, preenche uma figura que envolva o cursor na cor


desejada. O cursor deve estar posicionado dentro de uma figura e a
cor deve ser especificada através de um código em arg.cor.

EX: FLOOD 112

GET_GRXY arg.1 arg.2

No modo gráfico, armazena em arg.1 a posição horizontal atual do


cursor e em arg.2, a posição vertical atual do cursor. Os argumen■
tos arg.1, e arg.2, devem ser constantes campos, janelas ou variá■
veis do tipo numérico ou inteiro.

EX:

GETDRANGE arg.1 arg.2

No modo gráfico, armazena em arg.1 a largura horizontal do dispo■


sitivo de saída e em arg.2, a altura vertical do dispositivo de
saída. Em modo gráfico, as medidas são feitas em posições ou quan■
tidades de pontos gráficos disponíveis na placa gráfica. Os argu■
mentos arg.1, e arg.2, devem ser constantes campos, janelas ou va■
riáveis do tipo numérico ou inteiro.

GR_PRINT arg_string

Identifica o dispositivo gráfico da impressão especificada em


arg_string. Se o arg_string não for especificado, o comando iden■
tificará o dispositivo armazenado na variável do sistema DFGRA■
PH_PR. Se o valor da variável do sistema for nulo, o comando iden■
tificará o dispositivo configurado no Dataflex (utilitário DFSE■
TUP.EXE).

GRAPH_GETFIRST arg_string arg.1

Armazena em arg_string e arg.1 respectivamente o título e o valor


do primeíro comando de uma série de comandos GRAPH_VALUE utiliza■
dos na definição de um gráfico.
O argumento arg.1 deve ser um campo, janela ou variável do tipo
numérica ou inteira.

GRAPH_GETNEXT arg_string arg.1

Armazena, em arg_string e arg.1 respectivamente o título e o valor


do segundo e posteriores comandos de uma série de comandos GRA■
PH_VALUE utilizados na definição de um gráfico. O argumento arg.1
deve ser um campo, janela ou variável do tipo numérica ou inteira.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 224


GRAPH_INIT

Define o início de uma série de comandos GRAPH_VALUE e inicializa


variáveis internas e a ordenação dos dados.

EX: GRAPH_INIT

GRAPH_STAT arg.1 arg.2

Armazena em arg.1 e arg.2 respectivamente o menor e o maior valor


de uma série de comandos GRAPH_VALUE utilizados na definição de um
gráfico. O argumento arg.1 e arg.2 devem ser um campo, janela ou
variável do tipo numérica ou inteira.

GRAPH_SUM arg.1 arg.2

Armazena em arg.1 e arg.2 respectivamente o total dos valores e o


número de comandos executados em uma série de comandos GRAPH_VALUE
utilizados na definição de um gráfico. O argumento arg.1 e arg.2
devem ser campo, janela ou variável do tipo numérica inteira.

GRAPH_VALUE arg_string arg.1

Armazena em variável interna do comando CHART_INIT ou GRAPH_INIT


os conteúdos de arg_string e arg.1 que representam, o título e o
valor de uma coordenada (x,y) que será utilizada na definição de
um gráfico pelo comando CHART.

O comando GRAPH_INIT ou CHART_INIT deve ser executado antes de uma


série de comandos GRAPH_VALUE, que também devem ser executados an■
tes do comando CHART que é responsável pela exibição de um gráfi■
co. O argumento arg_string deve ser uma constante, campo, janela
ou variável do tipo string numérica, data ou inteira. O argumento
arg.1 deve ser uma constante, campo, janela ou variável do tipo
numérico ou inteiro.

GRAPHIC OFF
Desativa o modo gráfico.

EX: GRAPHIC OFF

GRAPHIC ON modo arg.string

Ativa o modo gráfico e identifica um dispositivo gráfico de saída


para o vídeo. Opcionalmente, o argumento "modo" pode ser usado pa■
ra selecionar uma das cores e modos de avaliação da resolução da
placa gráfica utilizada. Veja no manual original do sistema Data■
flex para maiores informações a respeito das placas gráficas dis■
poníveis no sistema.

Se o arg_string não for especificado, o comando identificará o


dispositivo armazenando na variável do sistema DFGRAPH_DEV. Se o
valor da variável do sistema for nula, o comando identificará o
dispositivo configurado no Dataflex (utilitário DFSETUP.EXE)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 225


GRXY arg.1 arg.2

No modo gráfico, movimenta o cursor na posição horizontal especi■


ficada em arg.1 e na posição vertical especificada arg.2. Os argu■
mentos arg.1 e arg.2 devem ser constantes, campos, janelas ou va■
riáveis do tipo numérico ou inteiro.

LINE arg.1 arg.2 arg.cor

No modo gráfico, desenha uma linha no dispositivo de saída a par■


tir da posição atual do cursor até a posição horizontal e vertical
especificadas, respectivamente, em arg.1 e arg.2
Opcionalmente, pode-se exibir a linha na cor desejada através de
um código de cor especificado em arg.cor. Os argumentos arg.1 e
arg.2 devem ser constantes, campos, janelas ou variáveis do tipo
numérico ou inteiro.

PALETTE arg.cor1 arg.cor2

No modo gráfico, define cores para a cor de fundo e para a cor da


borda através de um código de cor especificado em arg.cor1 e
arg.cor2. Este comando só funciona em dispositivos gráficos colo■
ridos IBM.

PIE arg.1 arg.2 arg.3 arg.cor1 arg.cor2

No modo gráfico, desenha um setor de um círculo ou um arco (in■


cluindo contornos, raios e a cor interna) no dispositivo de saída,
na posição atual do cursor, de acordo com:

arg.1 - Raio do arco.


arg.2 - Èngulo inicial.
arg.3 - Èngulo final em radianos.
arg.cor1 - Código que define a cor interna do setor ou arco.

arg.cor2 - Código que define a cor dos contornos, do arco e dos


raios.

Os argumentos arg.1, arg.2 e arg.3 devem ser constantes, campos,


janelas ou variáveis do tipo numérico ou inteiro.

PLOT arg.1 arg.2 arg.cor

No modo gráfico, exibe um ponto na posição horizontal especificado


em arg.1 e na posição vertical especificado em arg.2. Os argumen■
tos arg.1, e arg.2 devem ser constantes, campos, janelas ou variá■
veis do tipo numérico ou inteiro.

SAVE_CUT arg.string arg.1 arg.2 arg.3 arg.4

No modo gráfico, grava em um arquivo uma faixa retangular do grá■


fico atualmente ativo, sendo que o nome do arquivo deve ser espe■
cificado em arg.string. A faixa retangular que será gravada em
disco deve ser especificada pelos seus vértices opostos de acordo
com:
arg.1 - Posição horizontal do primeiro vértice.
arg.2 - Posição vertical do primeiro vértice.
arg.3 - Posição horizontal do segundo vértice.
arg.4 - Posição vertical do segundo vértice.
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 226
Os argumentos arg.1, arg.2, arg.3 e arg.4 devem ser constantes,
campos, janelas ou variáveis do tipo numérico ou inteiro.

SAVE_GRAPHIC arg.string

No modo gráfico, grava em um arquivo o gráfico atualmente ativo,


cujo nome deve ser especificado em arg.string.

SET_LINE_STYLE arg.1 arg.2

No modo gráfico, arg.1 define o estilo de uma linha e arg.2, a es■


pessura de uma linha, o valor de arg.1 deve ser:
1 - Representa uma linha normal.
2 - Representa uma linha tracejada.
3 - Representa uma linha pontilhada.

Os argumentos arg.1, e arg.2 devem ser constantes, campos, janelas


ou variáveis do tipo numérico ou inteiro.

EX: SET_LINE_STYLE 2 4

SET_TEXT arg.1 arg.2

No modo gráfico, arg.1 define a espessura de um texto e arg.2 a


inclinação em que o texto será exibido. O valor de arg.1 será mul■
tiplicado por 8 que é o número de pontos que formam a espessura de
uma letra. O valor de arg.2 deve ser:

0 - O texto é escrito da esquerda para direita.


1 - O texto é escrito de baixo para cima.
2 - O texto é escrito de cima para baixo.
3 - O texto é escrito inclinadamente.

Os argumentos arg.1, e arg.2 devem ser constantes, campos,


janelas ou variáveis do tipo numérico ou inteiro.

SETWORLD arg.1 arg.2 arg.3 arg.4

No modo gráfico define as direções e resoluções dos eixos que for■


mam as coordenadas gráficas, de acordo com:

arg.1 - Posição inferior a esquerda do eixo X.


arg.2 - Posição inferior a esquerda do eixo Y.
arg.3 - Posição superior a direita do eixo X.
arg.4 - Posição supeiror a diretira do eixo Y.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 227


Os argumentos arg.1, arg.2, arg.2, arg.3 e arg.4 devem ser cons■
tantes, campos, janelas ou variáveis do tipo numérico ou inteiro.

(CHART_INIT / GRAPH_VALUE / SAVE_GRAPHIC)


(CHAR_BAR / CHART_PIE / CHART_BAR)

/*

CHART_INIT

GRAPH_VALUE "JAN" 700


GRAPH_VALUE "FEV" 200
GRAPH_VALUE "MAR" 450
GRAPH_VALUE "ABR" 780

GRAPHIC ON
CLEARSCREEN 32

// SET_TEXT 45 3
// SET_LINE_STYLE 2 10

SAVE_GRAPHIC "C:\FL\PR\GRAAA.TXT"

CHART BAR "Produto: LARANJAS " "VENDAS 1990" "JANEIRO"


INKEY PAGEEND

CHART PIE "Produto: MACAS" "VENDAS 1991" "JANEIRO"


INKEY PAGEEND

CHART LINE "Produto: UVAS" "VENDAS 1992" "JANEIRO"


INKEY PAGEEND

ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 228


(CHART_INIT / GRAPH_VALUE / SAVE_GRAPHIC / CHAR_BAR / CHART_PIE / CHART_BAR)

/TELA

Cadastro GRAFICO
=================

Codigo: __.
Nome : ____________
Idade : _.

-----------------------
F7 - Grafico
-----------------------
/*

OPEN GRAFICO

ENTER GRAFICO

AUTOPAGE TELA
ENTRY GRAFICO.CODIGO {AUTOFIND,NOPUT}
ENTRY GRAFICO.NOME {CAPSLOCK}
ENTRY GRAFICO.IDADE

RETURN
ENTEREND
ABORT

KEYPROC KEY.USER

STRING TITULO NOME


NUMBER VALOR

GRAPHIC ON

REPEAT
CHART_INIT
CLEARSCREEN 0
CLEAR GRAFICO

REPORT GRAFICO BY INDEX.3 BREAK GRAFICO.IDADE

SECTION SUBHEADER1
MOVE GRAFICO.NOME TO NOME
MOVE GRAFICO.IDADE TO TITULO

SECTION SUBTOTAL1
// MOVE RECCOUNT TO VALOR
// MOVE 0 TO RECCOUNT
GRAPH_VALUE NOME TITULO
GRAPH_VALUE TITULO VALOR
REPORTEND

CHART BAR 'Estatistica de Idade dos Tecnicos por depto' ;


"QTDE" "IDADE"
PAUSE ''

CHART PIE 'Estatistica de Idade dos Tecnicos por depto' ;


"QTDE" "IDADE"
PAUSE ''

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 229


CHART LINE 'Estatistica de Idade dos Tecnicos por depto' ;

"QTDE" "IDADE"

GOTOXY 24 0
PAUSE ' Tecle ENTER'
CLEARXY 24 0

UNTIL [KEY.ESCAPE]

KEYPROC KEY.ESCAPE
GRAPHIC OFF
ABORT
RETURN

┌──────────┐
│ TERMCHAR │
└──────────┘
Toda vez que estamos executando um programa e pressionarmos um
tecla, o seu respectivo valor é armazenado na variável TERMCHAR.
Se verificarmos o valor de TERMCHAR após a digitação de informa■
ções em uma janela, o valor mostrado será sempre igual a 257. Is■
to ocorre porque para encerrarmos uma digitação em uma janela
sempre teclamos ENTER (RETURN) e o seu valor é o citado acima.

Desta forma quando pressionarmos uma tecla de função seu valor é


armazenado na variável pré-definida TERMCHAR e confrontado com um
tabela em memória que contém o valor das teclas de função. Se o
valor de TERMCHAR incidir com o de uma das variáveis de tecla de
função, o indicador referente a esta tecla é setado como verda■
deiro, e se houver uma rotina definida através do comando KEYPROC
para esta tecla de função, esta será executada.

F1 - [KEY.HELP]

F2 - [KEY.FIELD]

F6 - [KEY.DELETE]

etc...

Geralmente os indicadores estabelecidos pelo Dataflex são sufi■


cientes para a maioria das situações, porém em alguns casos ne■
cessitamos utilizar outras teclas como HOME, END, INS, DEL e com■
binações com as teclas CTRL, SHIFT e ALT que aparentemente se
tornam impossíveis de serem detectadas.
Para resolver este problema, possuímos a variável TERMCHAR, que
contém o código da última tecla (ou combinação das teclas) pres■
sionada(s).

Observe com atenção os exemplos a seguir:

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 230


(TERMCHAR / INKEY / WHILE)
/*

CLEARSCREEN 1
STRING TECLA 1

GOTOXY 01 0
SHOW ' Pressione uma tecla ou uma combinacao '
GOTOXY 02 0
SHOW ' SHIFT F1 - ALT F1 - CRTL F1 - ALT A - CRTL A et..

WHILE [NOT KEY.ESCAPE]


INKEY TECLA
CLEARXY 01 0
CLEARXY 02 0
SHOW ' Esta tecla possui o codigo TERMCHAR : ' TERMCHAR
END
ABORT

(TERMCHAR / INKEY / WHILE)

/*

CLEARSCREEN 1
STRING TECLA 1
SCREENMODE 112 ON
SHOW ' Pressione --> F1 ou F7 '
SCREENMODE 7 ON
WHILE [NOT KEY.ESCAPE]
INKEY TECLA
IF TERMCHAR EQ 268 GOSUB EXPLICA
IF TERMCHAR EQ 274 GOSUB AJUDA
IF TERMCHAR EQ 259 GOTO SAI
VOLTA:
END
ABORT
EXPLICA:
GOTOXY 23 0
PAUSE ' Voce teclou F7 - TERMCHAR em acao '
CLEARXY 23 0
RETURN

AJUDA:
GOTOXY 23 0
PAUSE 'Voce teclou F1 - TERMCHAR em acao '
CLEARXY 23 0
RETURN

SAI:
CLEARSCREEN
SHOW ' VOCE PRESSIONOU NA TECLA << ESC >> '
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 231


┌─────────┐
│ FLEXKEY │
└─────────┘
A variável TERMCHAR está também relacionada a uma outra variável
do Dataflex a FLEXKEY, de uso análogo, está só retorna os códigos
das FLEXKEYS pressionadas conforme a tabela.

F1 - 18 ENTER - 1
F2 - 6 ESC - 3
F3 - 8 TAB - 7
F4 - 2 LEFT - 4
F5 - 11 RIGHT - 5
F6 - 10 PgUp - 14
F7 - 12 PgDn - 15
F8 - 19 Up - 16
F9 - 13 Down - 17
F10 - 9

(FLEXKEY / INKEY / WHILE)

/*

CLEARSCREEN

SHOW ' Pressione nas flex-keys F1-F2-F3-F4-F5-F6 etc...'

STRING TECLA

WHILE [NOT KEY.ESCAPE]


INKEY TECLA
CLEARXY 0 0
SHOW ' Pressione e nas flex-keys : ' FLEXKEY
END
ABORT

// IF FLEXKEY EQ 8 SHOW 'Tecla F3'


// IF FLEXKEY EQ 3 SYSTEM
// IF FLEXKEY EQ 16 DELETE CLIENTES

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 232


┌───────────┐
│ NEXT_MENU │
└───────────┘

Variável pré-definida, controla o encadeamento de menus.

(Programa MENU)

/TELA

<1> - Cadastro de Clientes


<2> - Cadastro de Fornecedores
<3> - Cadastro de Pedidos

<_> - Sua opcao.

/*

ACCEPT TELA.1

IF_ TELA.1 EQ 1 BEGIN


MOVE 1 TO NEXT_MENU
CHAIN 'CADC'
END
IF TELA.1 EQ 2 CHAIN 'CLI'
IF TELA.1 EQ 3 CHAIN 'PED'
IF TELA.1 EQ 0 SYTEM

KEYPROC KEY.ESCAPE
CLEARSCREEN
SYSTEM
RETURN

// usando a linha de comando move 1 to next_menu o outro programa


// devera ter no início dele a linha de comando com o seguinte
// menu_required. Desta forma o programa será acessado somente via
// menu e não no promopt do ms-dos.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 233


Programa CLI

(MENU_REQUIRED / HELP / SET_OPTION / CLEAR_OPTION)


(CURRENT_WINDOW / CURRENT_IMAGE / IFNOT / |WSn / LASTENTRY)
(CURSOR_SET / CURSOR_RETURN)

/TELA
┌──Data: __/__/__───────────────────────────────────Hora: _.:_.:_.─┐
│ │
│ Dia : <_.> Mes: _________ Ano: _. │
│ Grupo Instalação: _. │
│ Semana : _. │
│ Nome : __c_____________________________________ │
│ Endereço : __c_____________________________________ │
│ Cidade : __c____________ Estado: __ │
│ Bairro : __c____________ │
│ Fone : ________________ │
│ Marca Antena : __c___________________________ │
│ Condição Pagto : __c_________________ │
└──────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ <ESC>Sai <F1)Ajuda <F2>Campo <TAB/F3>Procura <F6>Apaga <F10>Grava│
└──────────────────────────────────────────────────────────────────┘
/AJUDA1 HELP
┌────────────────────────────────────────────────────────────┐
│ Campo Dia : Nao pode ser zero. │
│ Campo Mes : Tem que ser Marco. │
│ Campo Nome: Nao pode ser branco. │
│ Campo Condicao Pagto: Nao pode ser branco. │
│ F7 - Ativa formatador capslock. │
│ F9 - Desativa formatador capslock. │
│ F6 - Flex-key codigo 10. │
│ TAB - Termchar │
└────────────────────────────────────────────────────────────┘
/AJUDA2 HELP
┌─────────────────────────────────────────────────────┐
│GRUPO DE INSTALAÇÃO: Campo numérico de duas posições.│
└─────────────────────────────────────────────────────┘
/AJUDA3 HELP
┌────────────────────────────────────────────────┐
│SEMANA: Campo numérico de 2 posições. │
│ Informe 1 para a primeira semana do mês, │
│ 2 para a segunda semana do mês, 3, 4. │
└────────────────────────────────────────────────┘
/AJUDA4 HELP
┌───────────────────────────────────────────────────────┐
│NOME: Campo ascii de 35 posições. │
│Informe o nome do comprador da antena parabólica. │
└───────────────────────────────────────────────────────┘
/*

CLEARSCREEN 32

PAGE SET TELA AT 02 04

SYSDATE TELA.1 TELA.2 TELA.3 TELA.4

OPEN CADC

MENU_REQUIRED // <--- MENU_NEXT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 234


SET_OPTION CAPSLOCK

ENTER CADC
AUTOPAGE TELA 5

LABEL.1:
ENTRY CADC.DIA_INSTALA TELA.5 {AUTOFIND,NOPUT}
IF (TELA.5) EQ 0 BEGIN
ERROR 999 ' CODIGO NAO PODE SER ZERO '
GOTO LABEL.1
END

IF_ CURRENT_WINDOW EQ 5 BEGIN


GOTOXY 24 0
PAUSE ' CURRENT_WINDOW IGUAL A 5 '
CLEARXY 24 0
END

IF_ CURRENT_IMAGE EQ 1 BEGIN


GOTOXY 24 0
PAUSE ' CURRENT_IMAGE IGUAL A 1 '
CLEARXY 24 0
END

LABEL-MES:
ENTRY CADC.MES TELA.6

IFNOT TELA.6 EQ 'MARCO' BEGIN


ERROR 999 ' MES DEVE SER <<<MARCO>>> '
GOTO LABEL-MES
END

ENTRY CADC.ANO TELA.7


ENTRY CADC.GRUPO_INSTALA TELA.8
ENTRY CADC.SEMANA TELA.9

MOVE 7 TO CURSOR_SET
GOTOXY 24 0
SHOW 'CURSOR_SET: ' CURSOR_SET ;
'CURSOR_RETURN: ' CURSOR_RETURN

LABEL_2:
ENTRY CADC.NOME TELA.10 { MODAL_INSERT ,CAPSLOCK}
IF |WS10 EQ '' BEGIN
ERROR 999 ' CAMPO NOME NAO PODE SER BRANCO '
GOTO LABEL_2
END

// |WS10 - Window String nr 10

ENTRY CADC.ENDER TELA.11


ENTRY CADC.CIDADE TELA.12
ENTRY CADC.ESTADO TELA.13 {CAPSLOCK}
ENTRY CADC.BAIRRO TELA.14
ENTRY CADC.FONE TELA.15
ENTRY CADC.MARCA_ANTENA TELA.16

ENTRY CADC.COND_PAGTO TELA.17

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 235


IF LASTENTRY NE '' BEGIN
GOTOXY 24 0
PAUSE ' INFORME A CONDICAO DE PAGAMENTO '
CLEARXY 24 0
END

RETURN

ENTEREND
ABORT

KEYPROC KEY.HELP
IF_ CURRENT_WINDOW EQ 1 PAGE AJUDA1 AT 01 04 COLORS 112 32
INKEY PAGEEND

IF_ CURRENT_WINDOW EQ 2 PAGE AJUDA2 AT 01 04 COLORS 112 32


INKEY PAGEEND

PAGE AJUDA3 AT 01 04 COLORS 112 32


INKEY PAGEEND

PAGE AJUDA4 AT 01 04 COLORS 112 32


INKEY PAGEEND
CLEARSCREEN
RETURN

KEYPROC KEY.ESCAPE
CLEARSCREEN 1
CHAIN 'ME'
RETURN

KEYPROC KEY.USER // F7 - Desativa


SET_OPTION CAPSLOCK
ENTAGAIN
RETURN

KEYPROC KEY.USER2 // F8 - Ativa


CLEAR_OPTION CAPSLOCK
ENTAGAIN
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 236


┌───────────────────┐
│ ARQUIVOS FANTASMA │
└───────────────────┘
Supondo existir um arquivo e, por um motivo qualquer, desejamos
ter mais um ou vários arquivos idênticos ao primeiro em estrutura
e conteúdo. Para solucionar este tipo de problema, temos duas so■
luções:

- Criarmos vários arquivos iguais em estrutura, porém com nomes


diferentes e fazer um programa de manutenção dos dados para ca■
da arquivo. Neste caso, cada arquivo teria uma área de dados
exclusiva no disco e um programa de manutenção de dados. Como
desejamos que o conteúdo destes sejam iguais, a cada registro
novo cadastrado em um deles, teríamos de atualizar todos os ar■
quivos iguais. Sem sombra de dúvida este é um trabalho muito
grande, e obviamente, não é o ideal.

- A outra seria criar vários arquivos de mesma estrutura, porém,


que usassem áreas comuns no disco, compartilhando os dados en■
tre si. Desta forma, precisaríamos ter apenas um programa de
manutenção de dados.

Observe abaixo que as duas bases de dados possuem os mesmos cam■


pos, somente no arquivo 24 que o NOME PARA DATAFLEX é CLIF de LI
FANTASMA.

(Banco de Dados CLI.DEF)

LISTAGEM DA DEFINICAO DO ARQUIVO #23


***************************************************
NOME BASE DO ARQ = CLI
NOME PARA USUARIO = Cadastro - CLI - Fantasma
NOME PARA DATAFLEX = CLI
***************************************************
TAMANHO DO REGISTRO = 102 (USADO = 89)
NUMERO MAXIMO DE REGISTROS = 999 (USADO = 3)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
------ ------ ------- ----- --- ------ --- -----
1 1 2 NUMERIC 0 1 0 0 CODIGO
2 3 30 ASCII 0 0 0 RAZAO_SOCIAL
3 33 30 ASCII 0 0 0 ENDERECO
4 63 15 ASCII 0 0 0 BAIRRO
5 78 8 ASCII 0 0 0 CEP
6 86 2 ASCII 0 0 0 ESTADO
7 88 2 NUMERIC 0 0 0 0 CONTROLE

Indice 1: CAMPOS CHAVE: <1>

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 237


(Base de Dados CLIF.DEF - Base de Dados Fantasma)

LISTAGEM DA DEFINICAO DO ARQUIVO #24


***************************************************
NOME BASE DO ARQ = CLI
NOME PARA USUARIO = Arquivo - CLIF - Fantasma
NOME PARA DATAFLEX = CLIF
***************************************************
TAMANHO DO REGISTRO = 102 (USADO = 89)
NUMERO MAXIMO DE REGISTROS = 999 (USADO = 3)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
------ ------ ------- ----- --- ------ --- -----
1 1 2 NUMERIC 0 1 0 0 CODIGO
2 3 30 ASCII 0 0 0 RAZAO_SOCIAL
3 3 30 ASCII 0 0 0 ENDERECO
4 63 15 ASCII 0 0 0 BAIRRO
5 78 8 ASCII 0 0 0 CEP
6 86 2 ASCII 0 0 0 ESTADO
7 88 2 NUMERIC 0 0 0 0 CONTROLE

Indice 1: CAMPOS CHAVE: <1>

------------------------------------------------------------------

(Base de Dados FORN.DEF)

Observe que os campos estão relacionados.

LISTAGEM DA DEFINICAO DO ARQUIVO #25


***************************************************
NOME BASE DO ARQ = FORN
NOME PARA USUARIO = Cadastro Fornecedor - Fantasma
NOME PARA DATAFLEX = FORN
***************************************************
TAMANHO DO REGISTRO = 102 (USADO = 66)
NUMERO MAXIMO DE REGISTROS = 999 (USADO = 3)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
1 1 2 NUMERIC 0 1 0 0 CODIGO
2 3 30 ASCII 0 0 0 NOME
3 33 30 ASCII 0 0 0 ENDERECO
4 63 2 NUMERIC 23 1 0 COD_CLI
5 65 2 NUMERIC 24 1 0 COD_FANTASMA

Indice 1: CAMPOS CHAVE: <1>

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 238


/TELA
┌─────────────────────────────────────────────────────────┐
│ ARQUIVO FANTASMA │
│ ================ │
│ │
│ FORNECEDOR - 25 - (FORN) │
│ ======================== │
│ Codigo : <__.> │
│ Nome : ____________________________ │
│ Endereco : _____________________________________ │
│ │
│ CLIENTES - 23 - (CLI) │
│ ===================== │
│ Codigo : <__.> │
│ Razao Social : ____________________________ │
│ │
│ CLIENTE FANTASMA - 23 (CLIF) │
│ ============================ │
│ Codigo : <__.> │
│ Razao Social : ____________________________ │
└─────────────────────────────────────────────────────────┘
/*

CLEARSCREEN 32

PAGE TELA AT 02 02 COLORS 112 32

OPEN FORN
OPEN CLI
OPEN CLIF

ENTER FORN CLI CLIF


AUTOPAGE TELA 1

ENTRY FORN.CODIGO TELA.1 {AUTOFIND,NOPUT}


ENTRY FORN.NOME TELA.2 {CAPSLOCK}
ENTRY FORN.ENDERECO TELA.3 {CAPSLOCK}

ENTRY CLI.CODIGO TELA.4 {AUTOFIND,FINDREQ,NOPUT}


ENTRY CLI.RAZAO_SOCIAL TELA.5 {DISPLAYONLY}

ENTRY CLIF.CODIGO TELA.6 {AUTOFIND,FINDREQ,NOPUT}


ENTRY CLIF.RAZAO_SOCIAL TELA.7 {DISPLAYONLY}

RETURN

ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 239


┌─────────┐
│ OVERLAP │
└─────────┘
Podem existir situações em que o limite de seis segmentos por ín■
dice não seja suficiente para sua aplicação. É para resolver pro■
blemas deste tipo que o Dataflex implementa o conceito de campo
OVERLAP.

Um campo OVERLAP nada mais é do que a união de vários campos con■


secutivos de um arquivo dem um outro campo único. Note que quando
estamos criando um campo do tipo OVERLAP, o DFFILE pergunta em
qual OFFSET irá começar o campo (OFFSET nada mais é do que a po■
sição do campo dentro do registro) e até qual OFFSET este campo
OVERLAP deve compor-se. Note que na estrutura abaixo, o campo de
nome TODOS_CAMPOS contém os campos do OFFSET de 1 a 86.

Abaixo, base de dados OVERLAP:


LISTAGEM DA DEFINICAO DO ARQUIVO #25
***************************************************
NOME BASE DO ARQ = OVERLAP
NOME PARA USUARIO = OVERLAP
NOME PARA DATAFLEX = OVERLAP
***************************************************
TAMANHO DO REGISTRO = 102 (USADO = 66)
NUMERO MAXIMO DE REGISTROS = 999 (USADO = 3)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
1 1 2 NUMERIC 0 1 0 0 CODIGO
2 3 30 ASCII 1 0 0 RAZAO_SOCIAL
3 33 30 ASCII 1 0 0 ENDERECO
4 63 15 ASCII 1 0 0 BAIRRO
5 78 8 ASCII 1 0 0 CEP
6 86 2 ASCII 1 0 0 ESTADO
7 1 86 OVERLAP 1 0 0 TODOS_CAMPOS

Indice 1: | | CAMPOS CHAVE: <7>


| |
| `---> total de campos
|
|
`-----> posição inicial

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 240


Programa OVERLAP: OVER.FRM

/TELA
┌──────────────────────────────────────────────┐
│ OVERLAP │
│ ======= │
│ │
│ Codigo : ___. │
│ Razao Social : ____________________________ │
│ Endereco : ____________________________ │
│ Bairro : ____________ │
│ Cep : _______ │
│ Estado : __ │
│ │
└──────────────────────────────────────────────┘
/*

OPEN OVERLAP

ENTER OVERLAP
AUTOPAGE TELA 1

ENTRY OVERLAP.CODIGO
ENTRY OVERLAP.RAZAO_SOCIAL
ENTRY OVERLAP.ENDERECO
ENTRY OVERLAP.BAIRRO
ENTRY OVERLAP.CEP
ENTRY OVERLAP.ESTADO

RETURN

ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 241


┌──────┐
│ FMAC │
└──────┘
O arquivo FMAC é o arquivo que define a Linguagem DATAFLEX. Todos
os comandos Dataflex são definidos através de "Macros", e todas
elas são defenidas dentro de um arquivo chamado FMAC, o qual vem
com todos os pacotes licenciados para desenvolvimento.

FMAC define todos os comandos DATAFLEX 2.3b com Macros dentro de


um arquivo chamado FMAC, o qual você teria se comprasse uma licen■
ça Dataflex para desenvolvimento (cópia full). Este arquivo tem a
definição de cada comando e todos documentados no Dataflex (e um
manual anexo): o arquivo também estabelece uma ligação entre o Da■
taflex e Run-time através de comando ou define as ações que o co■
mando tomará dentro de uma linguagem de comando declarada no Data■
flex.

O real poder que a FMAC oferece a você e a habilidade de adicionar


comandos na linguagem a nível de sistema, coisas que você pode fa■
zer com o Dataflex e que você não pode fazer com qualquer outro
sistema Gerenciador de Banco de Dados de Quarta Geração.

Você pode adicionar novos comandos para o Dataflex, ou modificar


os já existentes, e fazer dessas mudanças um comando fixo da Lin■
guagem.

Na FMAC, você encontra as definições internas de cada comando Da■


taflex. Algumas dessas definições são compostas por uma interação
de dezenas de linhas de códigos, se não mais (como no caso da Ma■
cro Enter).

Para os que tem trabalho com linguagens tipo C ou PASCAL, a FMAC é


o equivalente na biblioteca de códigos do Run-time (apesar de não
ser exatamente igual) e o FLEX.CFL é um formato de código objeto,
análogo ao Run-time tipo um .LIB. Contudo, note que os comandos,
incluídos não geram chamadas para o conteúdo da FMAC. Todas as ve■
zes que você incluir um comando dentro de um programa fonte, todos
os códigos de comandos defenidos na FMAC são inseridos no programa
a nível de compilação.

Se incluir 100 comandos CLEARSCREEN, o compilador colocará 100 co■


mandos CLEARSCREEN no arquivo de saída. O comando compilado então,
gera a chamada para o Run-time durante a execução.

A compactação relacionada a FMAC é um arquivo chamado FLEX.CFL, o


qual contém um versão compactada da FMAC que o compilador usa para
criar seus programas executáveis .FLX.

Assim como o compilador lê o seu programa origem, ele examina a


definição de macro para cada comando e a troca por códigos inter■
nos que o Dataflex possa entender. Antes que você use qualquer co■
mando incluído ou alterado na FMAC, você deve gerar um FLEX.CFL.
Para fazer isso, você deve usar o utilitário DFPACK.

No prompt do MS-DOS digite: DFPACK FMAC (enter)

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 242


Qualquer mudança que você faça na FMAC, terá que ser incorporada e
completamente checada quando você decidir migrar para uma versão
mais atual do Dataflex.

Todos os comandos Dataflex, iniciam dentro da FMAC com um


#COMMAND , o qual em essência, significa este é o início de uma no■
va definição de comando macro. O #ENDCOMMAND , indica o final de
uma definição de comando. Entre o comando #COMMAND e #ENDCOMMAND
você encontra o nome do comando e o que o comando faz no Dataflex.

Exemplo: Macro de nome BRASIL

#COMMAND BRASIL
CLEARSCREEN
GOTOXY 10 10
SCREENMODE 112 ON
SHOW ' BRASIL - AQUI NAO HA PUNICAO - JUSTICA '
#ENDCOMMAND

Sempre que o compilador encontrar BRASIL em um programa, ele vere■


ficará a definição da linguagem, procura os comandos internos do
BRASIL, e os insere em seu progrmama.

Se o comando BRASIL for salvo no arquivo FMAC, após isto você DE■
VERÂ executar o comando DFPACK FMAC .

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 243


┌───────────────────┐
│ DIRETIVA #INCLUDE│
└───────────────────┘
O #INCLUDE instrui o compilador a abrir um arquivo e inserir o
seu conteúdo no processo de compilação, como se esse arquivo fi■
zesse parte do arquivo principal que está sendo processado. Você
pode usar este diretivo para armazenar partes simples de códigos,
como, por exemplo, definição de FLEX-KEYS, as quais são usadas
por vários programas durante o processo de compilação, sem ter
que definí-las dentro de todos os programas. Para usar este dire■
tivo dentro de um programa, logo abaixo do final da imagem (/*)
digite:

#INCLUDE ARQUIVO.TXT

#INCLUDE MARCOS.MAC

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 244


┌──────────────────────────────────────────────┐
│ VARIÂVEIS DO DATAFLEX EM TEMPO DE COMPILAÇÃO │
└──────────────────────────────────────────────┘

Se você examir o arquivo FMAC poderá ver a sequência de linhas


abaixo:
!A - Número da próxima linha.
!B - Reservado.
!C - Número do próximo indicador.
!D - Próximo número inteiro.
!E - Autopage, window #
!F - Autopage, Page #
!G,H,I,J,K,L,M - Este você poderá usar.
!N - Nível estático do nest (static level nesting).
!O - Reservado.
!P - Usado pelo Report.
!Q - Nível baixo temporário.
!R - Número da estrutura estática (begin / end)
!S - Usado temporariamente pelo end / loop / until.
!T - Reservado.
!U - Reservado.
!V - Número da próxima variável.
!W - Reservado.
!X - Uso temporário para Macro Enter e Macro Report r de arqs.
!Y - Uso temporário pelas keyprocs.
!Z - Reservado.

Este comentários representam a descrição dos tipos internos das


variáveis Dataflex usadas no processo de compilação. Eles pos■
suem várias finalidades, como o de gerar o número de linhas de■
terminadas para cada linha de comando, como no caso do " A ".

Você acessa estas variáveis com um ponto de exclamação seguido


pela letra da variável. Se utilizar a letra maiúscula em seu có■
digo, o compilador do Dataflex incrementa-a de um antes de usá-
la. Porém se você referenciar a variável " A " como " !A " em seu
código, o compilador primeiro incrementa, depois interpreta seu
estado e gera o código apropriado para implementá-la. Se em ou■
tro caso, você referenciar a variável como " !a ", o compilador
DFCOMP interpreta a declaração como "e" e gera instruções de
acordo. A variável retém o mesmo valor após o processo ser com■
pilado.

Algumas variáveis de comando são avaliadas por seu uso em suas


Macros ou programas, algumas não. Se elas são reservadas, não
mexa nelas. Se elas já estão sendo usadas em alguma parte do
sistema, não mexa nelas também, a menos que você saiba exatamen■
te o que elas estão fazendo.

VARIÂVEL DE COMPILAÇÃO " A "

A variável "!A" gera os números de linha para cada comando quan■


do você está compilando um programa. Toda vez que um comando Da■
taflex é compilado o DFCOMP gera um número de linha e estabelece
uma ligação como Run-time. Você pode identificar esta ligação
com o Run-time desta forma:

A) !A [] $0000 argumento_1 argumento_2

B) !A [] $145 |CI24 |CI16

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 245


O conteúdo da linha B seria definido pelo programador desta
forma:

GOTOXY 24 16

Como nós dissemos, Dataflex primeiro incrementa a variável " A "


no comando a fim de gerar o próprio número de linha e então a
usa no comando declarado.

Os " [] " (colchetes) representam o lugar reservado para indicado■


res [ FOUND] ou [ |254] . Qualquer referência a indicadores que
são usados com este comando pela execução condicional seriam co■
locados sem os colchetes, e o Dataflex manipula-os de acordo.

o $0000 representa uma função interna do Dataflex a ser executa■


da por este comando. Sem entrar em muitos detalhes, cada função
interna individual do Run-time do Dataflex que o programa pode
acessar um programa atribuído a ela, o qual pode ter um tamanho
de até quatro dígitos. O DFCOMP troca o " 0000 " por um número de
uma função interna do Run-time que executa este comando.

argumento_1 argumento_2 representa qualquer argumento a ser pas■


sado para a função do Run-time chamada pelo $0000 .

Por exemplo: O comando ABORT, definido na FMAC gera:

#COMMAND ABORT &.


!A [] $040
#ENDCOMAND

Quando o compilador encontra uma linha de código que represente


o ABORT, ele verefica no FLEX.CFL (FMAC compactada) e encontra a
definição do ABORT (se a definição não for encontrada, é gerado
um erro), e gera o comando !A [] $040
Se qualquer indicador preceder o comando na linha, o DFCOMP in■
cluirá suas referências no comando gerado.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 246


┌────────────────────────────────────────────┐
│ ACESSANDO VARIÂVEIS EM TEMPO DE COMPILAÇÃO │
└────────────────────────────────────────────┘

Nós já mostramos a você como a variável de compilação é usada na


FMAC, a variável " A ", a qual gera números de linhas de um coman■
do durante a compilação. Agora veremos os cominhos que você pode
acessar uma variável de compilação. Lembre-se que todas as va■
riáveis de compilação são internas.
Para referenciar um variável e o seu conteúdo dentro de uma Ma■
cro, coloca-se um ponto de exclamação ( ! ) imediatamente seguido
da letra que você quer acessar !A [] $040 (ABORT).

┌───────────────────────────────────────────────────┐
│ ACESSANDO VARIÂVEIS NO RUN-TIME EM COMANDOS MACRO │
└───────────────────────────────────────────────────┘

Em alguns casos, você precisa referenciar um comando do Run-time


em uma chamada a uma rotina do tipo $0000 . Especifica quais dos
múltiplos tipos de elementos você deseja passar o Run-time. O
Dataflex troca cada símbolo por uma construção que o programa
pode interpretar e indentificar corretamente. O Dataflex substi■
tui cada tipo de símbolo, classe, e uma numérica identificação
de número pelo seu referente código. Cada referência a símbolos
iniciam com um caracter de barra vertical (conexão | ). O carac■
ter seguinte representa a classe, como mostrado a seguir:

C - Constante
V - Variável
W - Janela
F - Campo (elemento de arquivo)
G - Grupo (indicadores)

Como você pode ver, estes são os argumentos de parâmetros de


checagem de classe, porém não todos. Os parâmetros seguintes são
tipos de elementos:

S - String
N - Number
D - Date
I - Integer
E - Expressões
L - Label
O - Grupo de opções
B - Grupo de indicadores

Em seguida vem a variável, como nos exemplos a seguir:

|WI2 - Significa WINDOWS (janela), INTEGER (inteira) nº 2

|WS45,3 - FILE (arquivo), campo STRING, nº do arq. no DFFILE


e na Base de Dados é o terceiro campo.

|CI1 - CONTANT (constante), INTEGER (inteira) valor 1.

|CS "VOCE" - CONSTANT (constante) STRING com o conteúdo "VOCE"

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 247


┌─────────────────────────────────┐
│ CHECAGEM DE TIPOS DE PARÈMETROS │
└─────────────────────────────────┘
Qualquer classe de compilação dever executar a mesma classe do
tipo de checagem dos argumentos para comandos e declarações.
Mais declarações no Dataflex requerem argumentos e, alguns ca■
sos o Dataflex fará os mesmos tipos de conversações nos mesmos
tipos de declarações, e outros ele simplesmente necessita de
ter um indicação do tipo de argumento. O Dataflex força mais a
checagem do tipo a nível de compilação usando caracteres espe■
ciais que definem quais tipos de argumentos são válidos para
cada comando.

S - String
N - Number
D - Date
I - Integer
E - Expressão (fórmulas)
# - Indicador
X - Não é indicador
O - Grupo de opções {}
B - Grupo de indicadores []
L - Label
C - Constante
F - Elemento de arquivo
W - Janela
V - Variável
G - Grupo {opções} ou [indicadores]
T - Erro se o argumento não for escrito (definido)
U - Erro se o argumento não for escrito
R - Deve haver um argumento (requerido)
. - Não deve haver mais nenhum argumento depois do ponto
% - Muda constantes de numéricas para inteiras
$ - Muda todas as janelas para strings
& - Macros que não chamem outras macros

Atualmente, o compilador executa um tipo de checagem comparando


um tipo de argumento de uma janela de tipos para ver se ele não
esta na lista. Você atualmente especifica para o compilador
quais tipos um argumento não pode usar , assim como saber quais
os tipos um argumento pode ser. Estranho, mas é o processo. No
círculo da programação, isso é conhecido como lógica negativa ,
por razões óbvias. A tabela anterior mostra todos os possíveis
tipos e caracteres correspondente para se usar nas macros da
FMAC. Toma um pouco de tempo, mas estude estes com profundida■
de. O primeiro grupo de parâmetros, o qual quebramos em tipos
de parâmetros, verifica se um dos argumentos não é um dos defi■
nidos.
Exemplo: #COMMAND NOVO NDIL#

O exemplo acima quer dizer que um comando declarado em um pro■


grama fonte NÃO pode ser seguido por um argumento NUMBER, DATE,
INTEGER, LABEL e ou INDICADOR. Lembre-se que os argumentos de■
finidos são as excessões. Se o argumento não pertencer aos ti■
pos definidos, ele esta correto e o compilador o aceita (lem■
bre-se lógica negativa).

Exemplo de MACRO COMANDOS. Este arquivo deve ser escrito em AS■


CII puro sem caracteres de controle.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 248


#COMMAND BRASIL
GOTOXY 10 10
SCREENMODE 112 ON
SHOW ' Precisamos mais de JUSTICA & PUNICAO '
SCREENMODE 7 ON
#ENDCOMMAND

#COMMAND F7
GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' Voce pressinou na tecla de funcao F7 '
SCREENMODE 7 ON
CLEARXY 24 0
#ENDCOMMAND

#COMMAND MACRO_IF
INTEGER NR
MOVE 10 TO NR
#IF NR EQ 10
GOTOXY 10 15
SHOW ' Valor da variavel e 10 '
#ENDIF
#ENDCOMMAND

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 249


Programa usando MACRO COMANDO: BRASIL

/TELA

CADASTRO DE TESTE

Codigo : __.

Nome : ______________________________

Endereco : ____________________________________

Idade : _. Data: __/__/__

Estado : __ (SP,PR,RR)

Salario : _________,__ Nr: __.

/*

#INCLUDE MACRO1.MAC

PAGE SET TELA AT 01 01 COLORS 32 7

CLEARSCREEN 32

OPEN TESTE

ENTER TESTE
AUTOPAGE TELA
ENTRY TESTE.CODIGO TELA.1 {AUTOFIND,NOPUT}
IF_ TELA.1 EQ 0 GOTO ENT$LP

BRASIL

ENTRY TESTE.NOME TELA.2 {CAPSLOCK}


ENTRY TESTE.ENDERECO TELA.3 {CAPSLOCK}
ENTRY TESTE.IDADE TELA.4 {CAPSLOCK}
ENTRY TESTE.DATA TELA.5 {RANGE=01/0193,31/12/94}
ENTRY TESTE.ESTADO TELA.6 {CAPSLOCK}
ENTRY TESTE.SALARIO TELA.7
ENTRY TESTE.NR TELA.7

RETURN

ENTEREND
ABORT

KEYPROC KEY.USER
F7
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 250


Programa exemplo usando códigos internos feito com ACCEPT :

TELA
════════════════════════════════════════════════════════════
ACC1

TESTANDO ACCEPT
═══════════════

Codigo : <____.>
Razao Social : ________________________________________
Vlr Unit. : ________.__
Qtde Vendida : ___.
Forma Pagto : _ (P)razo ou a (V)ista
Data 1st Dupl. : __/__/____

<9> Aborts
═════════════════════════════════════════════════════════════
/*

// OBSERVE AO LADO OS COMANDO DO DATAFLEX.


// QUANDO UM PROGRAMA E COMPILADO OS COMANDOS
// SAO SUBSTITUIDOS POR ESTES CODIGOS

STRING XTECLA

!A [] $180 |FN3,0 |CI0 // OPEN ACC1

INICIO:
!A [] $C1 |FN3,0 // CLEAR ACC1
!A [] $1C1 |WN1 |FN3,1 // ACCEPT TELA.1 TO ACC1.CODIGO
IF TELA.1 EQ 9 ABORT
!A [] $0C6 |FS3.1 |CI$2 // FIND EQ ACC1 BY INDEX.1
//--------------------------------------------------------------
[ |254] BEGIN
!A [] $1C2 |FS3,2 |WS2 // DISPLAY ACC1.RAZAO TO TELA.2
!A [] $1C2 |FN3,3 |WN3 // DISPLAY ACC1.VLR_UNIT TO TELA.3
!A [] $1C2 |FN3,4 |WN4 // DISPLAY ACC1.QTDE_VEND TO TELA.4
!A [] $1C2 |FS3,5 |WS5 // DISPLAY ACC1.FORM_PAGTO TO TELA.5
!A [] $1C2 |FD3,6 |WD6 // DISPLAY ACC1.DTA_COMPRA TO TELA.6
END
//--------------------------------------------------------------
[ |126] BEGIN // [ FINDERR] BEGIN
!A [] $145 |CI24 |CI20 // GOTOXY 24 20
!A [] $148 |CI112 // SCREENMODE 112 ON
!A [] $142 |CS' Registro sera cadastrado - Tecle ENTER '
// SHOW ' Registro sera cadastrado - Tecle ENTER '
!A [] $148 |CI7 // SCREENMODE 7 ON
!A [] $147 |VS2 // INKEY XTECLA
END
//--------------------------------------------------------------
!A [] $082 |CI1 |VI14 // ENTERMODE

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 251


!A [] $1C1 |WS2 |FS3,2 // ACCEPT TELA.2 TO ACC1.RAZAO
!A [] $1C1 |WN3 |FN3,3 // ACCEPT TELA.3 TO ACC1.VLR_UNIT
!A [] $1C1 |WN4 |FN3,4 // ACCEPT TELA.4 TO ACC1.QTDE_VEND
!A [] $1C1 |WS5 |FS3,5 // ACCEPT TELA.5 TO ACC1.FORM_PAGTO
!A [] $1C1 |WD6 |FD3,6 // ACCEPT TELA.6 TO ACC1.DTA_COMPRA
//--------------------------------------------------------------
!A [] $145 |CI24 |CI22 // GOTOXY 24 22
!A [] $148 |CI112 // SCREENMODE 112 ON
!A [] $142 |CS 'Confirma GRAVACAO destes registro '
!A [] $148 |CI7 // SCREENMODE 7 ON
!A [] $147 |VS2 // INKEY XTECLA
!A [] $146 |CI24 |CI00 // CLEARXY 24 00
!A [] $4030 |VS2 |CS'Ss' |12 // IF XTECLA IN 'Ss'
!A [] $C2 |FN3,0 // SAVERECORD ACC1
!A [] $1C3 |WN1 |WD6 |CI0 // CLEARFORM TELA.1 THRU TELA.6
!A [] $041 |CL2 // GOTO INICIO
!A [] $41 |CI0 // ELSE
!A [] $041 |CL2 // GOTO INICIO
//---F6---------------------------------------------------------
!A [] |110 // KEYPROC KEY.DELETE
!A [] $82 |CI0 |VI33 // KEYPROC ON
!A [] $145 |CI24 |CI20 // GOTOXY 24 20
PAUSE ' Deseja APAGAR este registro ? (S/N) ' WAIT XTECLA
IF_ XTECLA IN 'Ss' BEGIN
// DELETE ACC1
!A [] $1C3 |WN1 |WD6 |CI0 // CLEARFORM TELA.1 THRU TELA.6
!A [] $146 |CI24 |CI00 // CLEARXY 24 00
!A [] $041 |CL2 // GOTO INICIO
END
!A [] $041 |CL2 // GOTO INICIO
!A [] $043 |CL0 // RETURN
//---ESC--------------------------------------------------------
!A [] |103 // KEYPROC KEY.ESCAPE
!A [] $82 |CI0 |VI33 // KEYPROC ON
!A [] $145 |CI24 |CI20 // GOTOXY 24 20
PAUSE ' Deseja SAIR do programa ? (S/N) ' WAIT XTECLA
!A [] $146 |CI24 |CI00 // CLEARXY 24 00
!A [] $4030 |VS2 |CS'Ss' |12 // IF XTECLA IN 'Ss'
!A [] $144 // CLEARSCREEN
!A [] $040 // ABORT
!A [] $41 |CI0 // ELSE
!A [] $041 |CL2 // GOTO INICIO
!A [] $043 |CL0 // RETURN
//--------------------------------------------------------------
!A [] |116 // KEYPROC KEY.UP
!A [] |106 // KEYPROC KEY.FIELD
!A [] |288 // BACKFIELD
!A [] $043 |CL0 // RETURN
//--------------------------------------------------------------

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 252


Programa exemplo usando códigos internos feito c/ MACRO ENTER :
Observe como são os códigos da MACRO ENTER.

/TELA
┌─────────────────────────────────────────────┐
│ TESTES │
│ │
│ Codigo : __. │
│ Razao : __________________________ │
│ Endereco: _______________________________ │
│ Bairro : ___________ │
│ Cep : ___________ │
│ Estado : __ │
└─────────────────────────────────────────────┘
/*

OPEN ALUNOS

ENTER ALUNOS
AUTOPAGE TELA 1

// ENTRY ALUNOS.CODIGO {AUTOFIND,NOPUT}


!A [] $8000 |FN 26 ,1 |WN1 |GO{$C000,$C002}

// 26 é o número do arquivo no DFFILE

// ENTRY ALUNOS.RAZAO_SOCIAL
!A [] $8000 |FS26,2 // S - String

// ENTRY ALUNOS.ENDERECO
!A [] $8000 |FS26,3 // F - File

// ENTRY ALUNOS.BAIRRO
!A [] $8000 |FS26,4

// ENTRY ALUNOS.CEP
!A [] $8000 |FS26,5 // N - Number
// 5 - cinco posições
// ENTRY ALUNOS.ESTADO
!A [] $8000 |FS26,6

// RETURN
!A [] $043 |CLO

ENTEREND

// ABORT
!A [] $040

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 253


Exemplos:

Programa para apagar TODOS os dados do arquivo CLIENTES .

/*

OPEN CLIENTES

REPEAT
FIND GT CLIENTES BY INDEX.1 // |CI1
[ FOUND] ZEROFILE CLIENTES
UNTIL [ FINDERR]
ABORT

═══════════════════════════════════════════════════════════════════

Program para consultar informações no arquivo VENDAS.

/*

OPEN VENDAS

REPEAT
FIND GT VENDAS BY INDEX.1

INDICATE SAI AS [ ~ FOUND]

[ ~ SAI] BEGIN
SHOWLN VENDAS.CODIGO
SHOWLN VENDAS.NOME
SHOWLN VENDAS.ENDERECO
SHOWLN VENDAS.CIDADE
END
UNTIL [ SAI]

IF_ NOT STATUS VENDAS BEGIN


GOTOXY 24 00
PAUSE ' Fim da consulta - Tecle ENTER '
CLEARXY 24 0
END

ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 254


Programa para fazer somente CONSULTA com o comando WINDOWINDEX:

/TELA
┌──────────────────────────────────────┐
│ │
│ Cod. Descricao da Maquina │
│ ---- --------------------------- │
│ ___. ___________________________ │
│ ___. ___________________________ │
│ ___. ___________________________ │
│ ___. ___________________________ │
│ ___. ___________________________ │
│ │
└──────────────────────────────────────┘
/*

PAGE TELA

INTEGER XLINHA

OPEN OPERACAO

REPEAT
START.1:
FIND GT OPERACAO BY |CI1
KEYCHECK ABORT
[ |254] BEGIN // found
PAGE TELA AT 04 01 COLORS 15 7

CALC (XLINHA * 2) TO WINDOWINDEX // duas colunas


INCREMENT XLINHA

DISPLAY OPERACAO.CODIGO TO TELA. 1&


DISPLAY OPERACAO.MAQUINA TO TELA. 2&

IF XLINHA EQ 5 BEGIN
GOTOXY 20 00
SCREENMODE 112 ON
PAUSE ' Tecle ENTER p/ ver mais registros '
SCREENMODE 7 ON
CLEARXY 20 00
CLEARFORM TELA
MOVE 0 TO WINDOWINDEX
MOVE 0 TO XLINHA
BLANKFORM TELA.1 THRU TELA.10
GOTO START.1
END
END
UNTIL [ FINDERR]
GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' Fim da consulta - Tecle ENTER '
SCREENMODE 7 ON

Programa MOVE informações de uma base de dados para outra, com


comando FIELDINDEX: As duas bases de dados deverão possuir os
nomes dos campos iguais.
/*

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 255


// Movendo dados do arquivo OPERACAO para o arquivo VENDAS

// By: Jurandir

GOTOXY 05 10
SCREENMODE 112 ON
SHOW ' Running MOVEDATAS - Wait please ... '
SCREENMODE 7 ON

OPEN OPERACAO
OPEN VENDAS

REPEAT
FIND GT OPERACAO BY INDEX.1

KEYCHECK
[ KEYPRESS] ABORT

FOR FIELDINDEX FROM 0 TO 3 // QUATRO CAMPOS


MOVE OPERACAO.CODIGO & TO VENDAS.CODIGO &
LOOP

[ ~ FINDERR] BEGIN
SAVERECORD VENDAS
CLEAR VENDAS
END
UNTIL [ FINDERR]

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 256


Programa lê um arquivo sequencial (texto) e mostra informações
deste na tela, READ, READLN, WINDOWINDEX:

/TELA
┌────────────────────────────────────────────┐
│ Codigo Nome Data │
│ ====== ==================== ======== │
│ __. ____________________ __/__/__ │
│ __. ____________________ __/__/__ │
│ __. ____________________ __/__/__ │
│ __. ____________________ __/__/__ │
│ __. ____________________ __/__/__ │
└────────────────────────────────────────────┘
/*

#REM By: Jurandir

PAGE TELA
INTEGER XCOD
NUMBER XDATA
STRING XNOME 20

MOVE 0 TO WINDOWINDEX

DIRECT_INPUT 'CLIENTES.TXT'

// Dentro do arquivo CLIENTES.TXT há clientes cadastrados.

OUTFILE 'XX.TXT'

REPEAT
READ XCOD
READ XNOME
READ XDATA
READLN

INSERT '"' IN XNOME AT 1


INSERT '"' IN XNOME AT 20

WRITELN XCOD XNOME XDATA

DISPLAY XCOD TO TELA.1&


DISPLAY XNOME TO TELA.2&
DISPLAY XDATA TO TELA.3&

MOVE (WINDOWINDEX + 3) TO WINDOWINDEX


UNTIL WINDOWINDEX GT 14
GOTOXY 24 10
PAUSE 'ENTER'
ABORT

// 100,"Carlos",10/11/96
// 200,"Pedro",12/12/96

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 257


As informações cadastradas serão gravadas em um arquivo se■
quencial ASCII, DADOS.TXT.

/TELA
┌──────────────────────────────────┐
│ Codigo : ____. │
│ │
│ Nome : ______________________ │
│ │
│ Salario : ________.__ │
│ │
│ Data : __/__/__ │
└──────────────────────────────────┘
/*

OUTFILE 'DADOS.TXT'

REPEAT
AUTOPAGE TELA
CLEARFORM

ACCEPT TELA.1
[ KEY.ESCAPE] ABORT
ACCEPT TELA.2
ACCEPT TELA.3
ACCEPT TELA.4

WRITELN TELA.1 " " TELA.2 " " TELA.3 " " TELA.4

UNTIL [KEY.ESCAPE]

CLOSE_OUTPUT

ABORT

// Arquivo ASCII: DADOS.TXT

// 100 CARLOS DOS SANTOS 20000.00 03/03/92


// 200 MARTA THOMPSON 300000.00 04/04/92
// 200 SIMONE FERREIRA 500000.00 04/06/92

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 258


Programa feito pelo utilitário Dataflex MAIL , para gerar pro■
grama fonte para emissão de etiquetas:

/BODY RESIDENT
_______________ _______________ _______________
_______________ _______________ _______________
_______________ _______________ _______________

/TELA

Emissao de Etiquetas
====================

Prepare a impressora e tecle ENTER p/ continuar


ou F7 para teste _
/*

STRING TECLA 1
INTEGER ETIQCORRENTE

MOVE 1 TO ETIQCORRENTE
MOVE 0 TO PAGEEND

OPEN VERBS INDEX.1


OUTFILE "CON:" // OUTFILE "LST:"
PAGE TELA
ACCEPT TELA.1
BLANKFORM BODY
REPORT VERBS BY INDEX.1

SECTION BODY
MOVE (ETIQCORRENTE-1) TO WINDOWINDEX
PRINT VERBS.NOME TO BODY.1 &
PRINT VERBS.ENDERECO TO BODY.4 &
PRINT VERBS.CIDADE TO BODY.7 &
INCREMENT ETIQCORRENTE
IF ETIQCORRENTE GT 3 BEGIN
MOVE 1 TO ETIQCORRENTE
OUTPUT BODY
BLANKFORM BODY
END
REPORTEND
IF ETIQCORRENTE NE 1 OUTPUT BODY
FORMFEED
ABORT
KEYPROC KEY.ESCAPE
ABORT
KEYPROC KEY.USER
CLEARSCREEN
CLEARFORM BODY
REPEAT
OUTPUT BODY
INPUT "A etiqueta esta posicionada ? (S/N) " TECLA
IFNOT TECLA IN "sS"
LOOP
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 259


Exemplo com o comando REPEAT:

/TELA

Sua senha: ___

/*
REPEAT
INICIO:
ACCEPT TELA.1 {CAPSLOCK}
[ KEY.ESCAPE] GOTO FORA
INDICATE SENHA AS TELA.1 EQ 'VAI'
[ ~ SENHA] GOTO MENS
CLEARFORM
UNTIL [ SENHA]
GOTOXY 24 00
ABORT

MENS:
GOTOXY 24 00
PAUSE ' *** SENHA INVALIDA *** '
CLEARXY 24 00
GOTO INICIO

FORA:
CLEARSCREEN
ABORT

═══════════════════════════════════════════════════════════════════
Outra maneira de criar o mesmo programa.

/*
REPEAT
ACCEPT TELA.1 {CAPSLOCK}
[ KEY.ESCAPE] ABORT
UNTIL TELA.1 EQ 'VAI'
ABORT

═══════════════════════════════════════════════════════════════════
Outra maneira de criar o mesmo programa.

/*
REPEAT
ACCEPT TELA.1 {CAPSLOCK}
INDICATE FORA AS TELA.1 EQ 'VAI'
[ FORA] ABORT
UNTIL [ KEY.ESCAPE]
GOTOXY 24 00
ABORT

---------------------------------------------------------

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 260


Programa relatório SEM MACRO REPORT .

/SCR

(T)ela (I)mpressora (A)rquivo Nome do Arq.: _______ .Rep

(_) Informe sua opcao

/CABECALHO
*** CADASTRO DE ALUNOS *** DATA: __/__/__ PAG: __.
-----------------------------------------------------------------
| Cod. Aluno Cidade Cep Id. Taxa Da
=================================================================
/CORPO
| __. ___________________ _________ ____. _. __,___.__ __/__/__
/TOTAL_DADOS
-----------------------------------------------------------------
Total: __,___.__
-----------------------------------------------------------------
/REC_DATA
Pessoas cadastradas: ___.
/*

STRING T 1 DADOS 8

INTEGER PAG LINHA RECS

NUMBER TOT_FEES
MOVE 0 TO TOT_FEES

DATE DAY
SYSDATE DAY

INDICATE PRIMEIRA_VEZ TRUE

OPEN ALUNOS

START:
PAGE SCR
ACCEPT SCR.2 {AUTORETURN,CAPSLOCK,CHECK="TIA"}

IF SCR.2 EQ "T" BEGIN


MOVE 23 TO PAG
MOVE "CON:" TO DADOS
END

IF SCR.2 EQ "I" BEGIN


MOVE 61 TO PAG
MOVE "" TO DADOS
END

IF SCR.2 EQ "A" BEGIN


ACCEPT SCR.1 {CAPSLOCK}
MOVE 61 TO PAG
APPEND DADOS SCR.1 ".REP"
END

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 261


OUTFILE DADOS
CLEARSCREEN

CLEAR ALUNOS
MOVE 0 TO ALUNOS.CODIGO

REPEAT
FIND GT ALUNOS BY INDEX.1
[ PRIMEIRA_VEZ] GOSUB RPT.HEAD
INDICATE PRIMEIRA_VEZ FALSE
KEYCHECK
[ KEYPRESS] ABORT
PRINT ALUNOS.CODIGO TO CORPO.1
PRINT ALUNOS.NOME TO CORPO.2
PRINT ALUNOS.CIDADE TO CORPO.3
PRINT ALUNOS.CEP TO CORPO.4
PRINT ALUNOS.IDADE TO CORPO.5
PRINT ALUNOS.TAXA TO CORPO.6

MOVE (TOT_FEES + ALUNOS.TAXA) TO TOT_FEES


PRINT ALUNOS.DATA TO CORPO.7
INCREMENT RECS
OUTPUT CORPO
UNTIL [ FINDERR]

GOSUB RPT.TOTAL
GOSUB RPT.REC

GOTOXY 24 3
SCREENMODE 112 ON
PAUSE ' End of records - Press ENTER '
SCREENMODE 7 ON
CLEARXY 24 0
CLEARFORM SCR.2
MOVE 0 TO TOT_FEES
MOVE 0 TO RECS
GOTO START

[ ~ PRIMEIRA_VEZ] BEGIN
RPT.HEAD:
PRINT DAY TO CABECALHO.1
INCREMENT PAGECOUNT
PRINT PAGECOUNT TO CABECALHO.2
OUTPUT CABECALHO
RETURN
END

RPT.TOTAL:
PRINT TOT_FEES TO TOTAL_DADOS.1
OUTPUT TOTAL_DADOS
INDICATE PRIMEIRA_VEZ TRUE
RETURN

RPT.REC:
PRINT RECS TO REC_DATA.1
OUTPUT REC_DATA
RETURN

KEYPROC KEY.ESCAPE
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 262


Exemplo de um sistema.

Abaixo segue primeiramente a definição das Bases de Dados:

LISTAGEM DA DEFINICAO DO ARQUIVO #17


***************************************************
" NOME BASE DO ARQ = ESTADOS
" NOME PARA USUARIO = CADASTRO DE ESTADOS
" NOME PARA DATAFLEX = ESTADOS
***************************************************
" TAMANHO DO REGISTRO = 512 (USADO = 24)
NUMERO MAXIMO DE REGISTROS = 999 (USADO = 7)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
1 1 2 ASCII 0 1 0 0 SIGLA
2 3 20 ASCII 0 0 0 NOME
3 23 2 NUMERIC 0 0 0 CONTROLE

Indice 1: CAMPOS CHAVE: <1>

----------------------------------------------------------------

" LISTAGEM DA DEFINICAO DO ARQUIVO #18


***************************************************
" NOME BASE DO ARQ = VENDEDOR
" NOME PARA USUARIO = CADASTRO DE VENDEDORES
" NOME PARA DATAFLEX = VENDEDOR
***************************************************
TAMANHO DO REGISTRO = 512 (USADO = 51)
NUMERO MAXIMO DE REGISTROS = 999 (USADO = 3)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
1 1 2 NUMERIC 0 1 0 0 CODIGO
2 3 20 ASCII 0 0 0 NOME
3 23 2 ASCII 0 17 1 UF_ATUACAO
25 25 ASCII 0 0 0 OBSERVACAO
50 2 NUMERIC 0 0 0 0 CONTROLE

Indice 1: CAMPOS CHAVE: <1>

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 263


" LISTAGEM DA DEFINICAO DO ARQUIVO #19
***************************************************
NOME BASE DO ARQ = CLIENTES
NOME PARA USUARIO = CADASTRO DE CLIENTES
" NOME PARA DATAFLEX = CLIENTES
***************************************************
TAMANHO DO REGISTRO = 102 (USADO = 89)
NUMERO MAXIMO DE REGISTROS = 999 (USADO = 0)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
1 1 2 NUMERIC 0 1 0 0 CODIGO
2 3 30 ASCII 0 0 0 RAZAO_SOCIAL
3 33 30 ASCII 0 0 0 ENDERECO
4 63 15 ASCII 0 0 0 BAIRRO
5 78 8 ASCII 0 0 0 CEP
6 86 2 ASCII 0 17 1 EST ADO
88 2 NUMERIC 0 0 0 0 CONTROLE

Indice 1: CAMPOS CHAVE: <1>

----------------------------------------------------------------

" LISTAGEM DA DEFINICAO DO ARQUIVO #20


***************************************************
NOME BASE DO ARQ = PEDIDOS
NOME PARA USUARIO = CADASTRO DE PEDIDOS
NOME PARA DATAFLEX = PEDIDOS
***************************************************
TAMANHO DO REGISTRO = 512 (USADO = 34)
NUMERO MAXIMO DE REGISTROS = 999 (USADO = 6)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
1 1 2 NUMERIC 0 1 0 0 NUMERO
2 3 20 ASCII 0 0 0 DESCRICAO
3 23 2 NUMERIC 0 1 9 1 CLIENTE
4 25 2 NUMERIC 0 18 1 VENDEDOR
5 27 2 ASCII 0 17 1 ESTADO
6 29 4 NUMERIC 0 0 0 VLR
33 2 NUMERIC 0 0 0 0 CONTROLE

Indice 1: CAMPOS CHAVE: <1>

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 264


" LISTAGEM DA DEFINICAO DO ARQUIVO #21
***************************************************
NOME BASE DO ARQ = FORNEC
NOME PARA USUARIO = CADASTRO DE FORNECEDORES
NOME PARA DATAFLEX = FORNEC
***************************************************
" TAMANHO DO REGISTRO = 512 (USADO = 105)
" NUMERO MAXIMO DE REGISTROS = 999 (USADO = 1)
ESPACO EXCLUIDO E REUTILIZADO
MULTI-USER RE-READ ATIVO
***************************************************
NUMERO OFFSET TAMANHO TIPO PTS INDICE RELACIONAMENTO
CAMPO CAMPO CAMPO CAMPO DEC PRINC. ARQ CAMPO
1 1 2 NUMERIC 0 1 0 0 COD
2 3 30 ASCII 0 0 0 NOME
3 33 30 ASCII 0 0 0 ENDERECO
4 63 15 ASCII 0 0 0 CIDADE
5 78 15 ASCII 0 0 0 BAIRRO
6 93 9 ASCII 0 0 0 CEP
7 102 2 ASCII 0 17 1 UF
104 2 NUMERIC 0 0 0 0 CONTROLE

Indice 1: CAMPOS CHAVE: <1>

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 265


Programa MENU (módulo para selecionar demais arquivos).

Nome do programa: SIS1.FRM

/TELA

MδDULO PRINCIPAL
┌───────────────────────┐
│ 1 - Estados │
│ 2 - Clientes │
│ 3 - Vendedores │
│ 4 - Pedidos │
│ 5 - Fornecedores │
│ 6 - Relatorios │
│ │
│ _. - Digite um número │
└───────────────────────┘
<ESC> Sai do Menu
/*

CLEARSCREEN

PAGE TELA AT 01 01 COLORS 112 32

INICIO:
ACCEPT TELA.1 {RANGE=1,6

IF TELA.1 EQ 1 CHAIN 'ESTADO'


IF TELA.1 EQ 2 CHAIN 'CLIENTE'
IF TELA.1 EQ 3 CHAIN 'VENDEDOR'
IF TELA.1 EQ 4 CHAIN 'PEDIDO'
IF TELA.1 EQ 5 CHAIN 'FORNECE'
IF TELA.1 EQ 6 CHAIN 'RELS'

GOTO INICIO

KEYPROC KEY.ESCAPE
CLEARSCREEN
ABORT
RETURN

Terá que ser feito outro MENU para chamar o programa RELS, que es■
te é somente de relatórios.

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 266


Programa CADASTRO DE ESTADOS.

Nome do programa: ESTADO.FRM

/TELA
┌──────────────────────────────────────┐
│ Cadastro de Estados │
│ │
│ Estado : __ │
│ Descricao: ________________________ │
└──────────────────────────────────────┘
<ESC> Retorna modulo principal
<F6> Apaga registro
/*

PAGE TELA AT 03 04 COLORS 112 32

STRING TECLA 1

CLEARSCREEN 32

OPEN ESTADOS

ENTER ESTADOS
AUTOPAGE TELA
ENTRY ESTADOS.SIGLA {AUTOFIND,NOPUT,CAPSLOCK}
IF TELA.1 EQ '' GOTO ENT$LP
ENTRY ESTADOS.NOME {CAPSLOCK}

RETURN
ENTEREND
ABORT

KEYPROC KEY.DELETE
IF_ ESTADOS.CONTROLE GT 0 BEGIN
GOTOXY 23 0
SHOW ' REGS: ' ESTADOS.CONTROLE ;
' <- Ha registros pendentes - Tecle ENTER '
INKEY TECLA
CLEARXY 23 0
ENTAGAIN
END
RETURN

KEYPROC KEY.ESCAPE
CLEARSCREEN
CHAIN 'SIS1'
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 267


Programa CADASTRO DE CLIENTE.FRM

/TELA
┌────────────────────────────────────────────────────────┐
│ CADASTRO DE CLIENTES │
│ │
│ Codigo : <__.> │
│ Razao Social : ____________________________ │
│ Endereco : ____________________________ │
│ Bairro : ____________________________ │
│ Cep : ____________________________ │
│ Estado : [__] Arq. Relacionado com ESTADOS (17) │
└────────────────────────────────────────────────────────┘
<ESC> Retorna modulo principal <F6> Apaga registro
/*

CLEARSCREEN 32
PAGE TELA AT 02 02 COLORS 112 32

OPEN CLIENTES
OPEN ESTADOS

ENTER ESTADOS CLIENTES


AUTOPAGE TELA
ENTRY CLIENTES.CODIGO {AUTOFIND,NOPUT}
IF TELA.1 EQ 0 GOTO ENTRYSEC
ENTRY CLIENTES.RAZAO_SOCIAL {CAPSLOCK}
ENTRY CLIENTES.ENDERECO {CAPSLOCK}
ENTRY CLIENTES.BAIRRO {CAPSLOCK}
ENTRY CLIENTES.CEP

ENTRY ESTADOS.SIGLA {AUTOFIND,NOPUT,FINDREQ,CAPSLOCK}

RETURN

ENTER.SAVE:
CALC (ESTADOS.CONTROLE + 1) TO ESTADOS.CONTROLE
RETURN

ENTER.EDIT:
CALC (ESTADOS.CONTROLE - 1) TO ESTADOS.CONTROLE
RETURN
ENTEREND
ABORT

KEYPROC KEY.ESCAPE
CLEARSCREEN
CHAIN 'SIS1'
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 268


Programa CADASTRO DE VENDEDOR.FRM

/TELA
┌────────────────────────────────────────────────┐
│ CADASTRO DE VENDEDORES │
│ │
│ Codigo : <__.> │
│ Nome : _____________________________ │
│ UF : [__] Arq relacinado com ESTADOS (17) │
│ Obs : _______________ │
└────────────────────────────────────────────────┘
<ESC> Retorna modulo principal <F6> Apaga registro

/*

PAGE SET TELA AT 03 03 COLORS 112 32

OPEN VENDEDOR
OPEN ESTADOS

ENTER ESTADOS VENDEDOR


AUTOPAGE TELA
ENTRY VENDEDOR.CODIGO {AUTOFIND,NOPUT}
IF_ TELA.1 EQ 0 GOTO ENT$LP
ENTRY VENDEDOR.NOME {CAPSLOCK}

ENTRY ESTADOS.SIGLA {AUTOFIND,FINDREQ,NOPUT,CAPSLOCK}

ENTRY VENDEDOR.OBSERVACAO

RETURN

ENTER.SAVE:
CALC (ESTADOS.CONTROLE + 1) TO ESTADOS.CONTROLE
RETURN

ENTER.EDIT:
CALC (ESTADOS.CONTROLE - 1) TO ESTADOS.CONTROLE
RETURN
ENTEREND
ABORT

KEYPROC KEY.ESCAPE
CLEARSCREEN 32
CHAIN 'SIS1'
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 269


Programa CADASTRO DE FORNECE.FRM

/TELA
┌───────────────────────────────────────────────────┐
│ CADASTRO DE FORNECEDORES │
│ │
│ Codigo : <__.> │
│ Nome : ________________________ │
│ Endereco: ____________________________ │
│ Cidade : _______________ Bairro: _______ │
│ Estado : [__] Arq. relacionado com ESTADOS (17) │
└───────────────────────────────────────────────────┘
<ESC> Retorna modulo principal <F6> Apaga registro
/*

PAGE SET TELA AT 03 03 COLORS 112 32

OPEN FORNEC
OPEN ESTADOS

ENTER ESTADOS FORNEC


AUTOPAGE TELA
ENTRY FORNEC.CODIGO {AUTOFIND,NOPUT}
IF_ TELA.1 EQ 0 GOTO ENT$LP
ENTRY FORNEC.DESCRICAO {CAPSLOCK}
ENTRY FORNEC.ENDERECO {CAPSLOCK}
ENTRY FORNEC.CIDADE {CAPSLOCK}
ENTRY FORNEC.BAIRRO {CAPSLOCK}

ENTRY ESTADOS.SIGLA {AUTOFIND,FINDREQ,NOPUT,CAPSLOCK}

RETURN

ENTER.SAVE:
CALC (ESTADOS.CONTROLE + 1) TO ESTADOS.CONTROLE
RETURN

ENTER.EDIT:
CALC (ESTADOS.CONTROLE - 1) TO ESTADOS.CONTROLE
RETURN
ENTEREND
ABORT

KEYPROC KEY.ESCAPE
CLEARSCREEN 32
CHAIN 'SIS1'
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 270


Programa CADASTRO DE PEDIDO.FRM

/TELA

CADASTRO DE PEDIDO Data: __/__/__ Hora: _.:_.:_.


==================
┌───────────────────────────────────────────────────────────────┐
│ Cod. do Pedido : <___.> │
│ Descricao : ________________________ │
│ │
│ Cliente : __. Arq. relacionado com CLIENTES (19) │
│ Nome do cliente : ____________________ │
│ │
│ Vendedor : __. Arq. relacionado com VENDEDORES (18) │
│ Nome do vendedor : ____________________ │
│ │
│ Estado : __ Arq. relacionado com ESTADOS (17) │
│ │
│ Valor : _______.__ │
└───────────────────────────────────────────────────────────────┘
<ESC> Retorna modulo principal <F6> Apaga registro
/*

CLEARSCREEN

DATE DATA H M S
SYSDATE DATA H M S
DISPLAY DATA TO TELA.1
DISPLAY H TO TELA.2
DISPLAY M TO TELA.3
DISPLAY S TO TELA.4

OPEN ESTADOS
OPEN VENDEDO
OPEN CLIENTES
OPEN PEDIDOS

ENTER PEDIDOS CLIENTES VENDEDOR ESTADOS

AUTOPAGE TELA 5

ENTRY PEDIDOS.NUMERO TELA.5 {AUTOFIND,NOPUT}


IF_ TELA.5 EQ 0 GOTO ENT$LP

MOVE TELA.5 TO PEDIDOS.NUMERO

ENTRY PEDIDOS.DESCRICAO TELA.6 {CAPSLOCK}

ENTRY CLIENTES.CODIGO TELA.7 {AUTOFIND,FINDREQ,NOPUT}


ENTRY CLIENTES.RAZAO_SOCIAL TELA.8 {DISPLAYONLY}

ENTRY VENDEDOR.CODIGO TELA.9 {AUTOFIND,FINDREQ,NOPUT}


ENTRY VENDEDOR.NOME TELA.10 {DISPLAYONLY}

ENTRY ESTADOS.SIGLA TELA.11 {AUTOFIND,FINDREQ,NOPUT}

ENTRY PEDIDOS.VLR TELA.12

RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 271


ENTER.SAVE:
CALC (ESTADOS.CONTROLE + 1) TO ESTADOS.CONTROLE
CALC (CLIENTES.CONTROLE + 1) TO CLIENTES.CONTROLE
CALC (VENDEDOR.CONTROLE + 1) TO VENDEDOR.CONTROLE
RETURN

ENTER.EDIT:
CALC (ESTADOS.CONTROLE - 1) TO ESTADOS.CONTROLE
CALC (CLIENTES.CONTROLE - 1) TO CLIENTES.CONTROLE
CALC (VENDEDOR.CONTROLE - 1) TO VENDEDOR.CONTROLE
RETURN

ENTEREND
ABORT

KEYPROC KEY.ESCAPE
CLEARSCREEN
CHAIN 'SIS1'
RETURN

Programa de GRÂFICO .

Para que o programa de gráficos funcione corretamente os arquivos


HALOIBMG.DEV, HALOEPSN.PRN deverão estar no directório corrente
onde se encontra o programa que irá gerar o gráfico.

Nome do programa: GRAF1.FRM

/*

REPEAT
STRING S

CHART_INIT
GRAPH_VALUE 'JAN' 700
GRAPH_VALUE 'FEV' 900
GRAPH_VALUE 'MAR' 600
GRAPH_VALUE 'ABR' 800
GRAPH_VALUE 'MAI' 300
GRAPH_VALUE 'JUN' 100

GRAPHIC ON
CLEARSCREEN 0

CHART BAR ' COMPUTADORES ' 'QTDE' 'MESES'


INKEY S

CHART LINE ' COMPUTADORES ' 'QTDE' 'MESES'


INKEY S

CHART PIE ' COMPUTADORES ' 'QTDE' 'MESES'


INKEY S

UNTIL [KEY.ESCAPE]
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 272


KEYPROC KEY.ESCAPE
GRAPHIC OFF
ABORT
RETURN

─────────────────────────────────────────────────────────────────────────────
DATAFLEX 2.3b Linguagem de Quarta Geração
─────────────────────────────────────────────────────────────────────────────
Programa abaixo move dados de uma base de dados Dataflex para outra base
de dados Dataflex.

FIELDINDEX é uma variável inteira pré-definida (definida na FLEX$INIT) que


faz acesso randômico em campo de arquivo. FIELDINDEX é usado para referen-
ciar um campo e pode assumir valor positivo ou negativo.

FIELDINDEX é usado quando um programa acessa um intervalo de campos que


estejam na mesma sequência. FIELDINDEX facilita na programação. Ao se re-
ferenciar a 20 campos, ao invés de utilizar 20 linhas de programação, pode
ser utilizado um comando que faça uso do FIELDINDEX.

Mover um valor para a variável FIELDINDEX e utilizar um comando que acesse


um campo usando FIELDINDEX. O ampersand (&) é usado como um caractere de
endereçamento no acesso a campos com FIELDINDEX.

/*

// Movendo informacoes do arquivo OPERACAO para a base de dados OPER.

GOTOXY 05 10
SCREENMODE 112 ON
SHOW ' Running MOVEDATAS - Wait please ... '
SCREENMODE 7 ON

OPEN OPERACAO
OPEN OPER

REPEAT
FIND GT OPERACAO BY INDEX.1

KEYCHECK
[ KEYPRESS] ABORT

FOR FIELDINDEX FROM 0 TO 22


MOVE OPERACAO.CODIGO& TO OPER.CODIGO&
LOOP

[ ~ FINDERR] BEGIN
SAVERECORD OPER
CLEAR OPER
END

UNTIL [ FINDERR]

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 273


Programa com mostrando o funcionamento do comando WINDOWINDEX .

/TELA

JAN 1 : _____ JAN 2 : _____

JAN 3 : _____ JAN 4 : _____

JAN 5 : _____ JAN 6 : _____

JAN 7 : _____ JAN 8 : _____

/*

STRING HTECLA

KEYPROC KEY.ESCAPE GOSUB SAIR

INICIO:

FOR WINDOWINDEX FROM 0 TO 7


ACCEPT TELA.1&
LOOP

IF WINDOWINDEX GT 1
GOTOXY 24 14
SHOW " Do you want to RECORD some more datas (Y/N) ? "
INKEY HTECLA
CLEARXY 24 00
IF HTECLA IN "Yy" BEGIN
CLEARFORM
GOTO INICIO
END
ELSE
CLEARSCREEN
ABORT

KEYPROC KEY.UP // Este e uma forma.


KEYPROC KEY.FIELD
MOVE (WINDOWINDEX - 1) TO WINDOWINDEX
BACKFIELD
RETURN

SAIR:
CLEARSCREEN
ABORT
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 274


Programa para mover dados com comando FIELDINDEX .

/*

GOTOXY 05 10
SHOW ' Running MOVEDATAS - Wait please ... '

INTEGER XREG

OPEN MOVE1
OPEN MOVE2

REPEAT
FIND GT MOVE1 BY INDEX.1
KEYCHECK
[ KEYPRESS] GOTO OUT

FOR FIELDINDEX FROM 0 TO 2


MOVE MOVE1.CODIGO& TO MOVE2.CODIGO&
LOOP

[ ~ FINDERR] BEGIN
SAVERECORD MOVE2
CLEAR MOVE2
END
UNTIL [ FINDERR]

OUT:
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 275


Programa para demonstrar INDICADORES

/*
STRING PROFISSAO CASADO
NUMBER SALARIO
INTEGER IDADE

INDICATOR IND1 IND2 IND3 IND4 REG_COMPLETO

MOVE 'PROGRAMADOR' TO PROFISSAO


MOVE 'YES' TO CASADO
MOVE 20500,30 TO SALARIO
MOVE 25 TO IDADE

INDICATE IND1 AS PROFISSAO EQ 'PROGRAMADOR'


INDICATE IND2 AS CASADO EQ 'YES'
INDICATE IND3 AS SALARIO EQ 20500,30
INDICATE IND4 AS IDADE EQ 25

INDICATE REG_COMPLETO GROUP ALL [IND1 IND2] OR ANY [IND3 IND4]

[ REG_COMPLETO] BEGIN
SCREENMODE 112 ON
GOTOXY 03 15
SHOW PROFISSAO
GOTOXY 05 15
SHOW SALARIO
GOTOXY 07 15
SHOW CASADO
GOTOXY 09 15
SHOW SALARIO
GOTOXY 11 15
SHOW IDADE
SCREENMODE 7 ON
END
GOTOXY 13 00
[ IND1] SHOWLN 'IND1 -> PROGRAMADOR '
GOTOXY 14 00
[ IND2] SHOWLN 'IND2 -> CASADO '
GOTOXY 16 00
[ IND3] SHOWLN 'IDN3 -> SALARIO '
GOTOXY 17 00
[ IND4] SHOWLN 'IND4 -> IDADE '
GOTOXY 24 00
PAUSE 'Tecle ENTER'
ABORT
KEYPROC KEY.ESCAPE
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 276


Programa para demonstrar comando WHILE :

/TELA

Sua senha: __

/*

CLEARSCREEN

SENHA:
ACCEPT TELA.1 {CAPSLOCK}

WHILE TELA.1 NE 'GO'


GOTOXY 23 00
PAUSE ' *** SENHA INCORRETA *** '
CLEARXY 23 00
GOTO SENHA
END
GOTOXY 24 00
PAUSE ' SENHA OK - Tecle ENTER p/ prosseguir'
CLEARSCREEN
ABORT

════════════════════════════════════════════════════════════════

Programa exemplo SENHA.

/*

INDICATOR SENHA

INICIO:
ACCEPT TELA.1 {CAPSLOCK}

INDICATE SENHA AS TELA.1 EQ 'GO'

WHILE [ ~ SENHA]
GOTOXY 23 00
PAUSE ' *** SENHA INCORRETA *** '
CLEARXY 23 00
GOTO INICIO
END
GOTOXY 24 00
PAUSE ' SENHA OK - Tecle ENTER p/ prosseguir'
CLEARSCREEN
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 277


Programa para demonstrar comando WHILE:

/TELA

Digite um numero: __.

/*
INICIO:
ACCEPT TELA.1

GOTOXY 05 07
SHOW ' Pressione *** ENTER - PgUp - SETA P/ CIMA ;
- SETA P/ BAIXO - ESC ***'

WHILE [ KEY.RETURN]
GOTOXY 24 00
PAUSE ' Foi pressionado a tecla KEY.RETURN - Enter '
CLEARXY 24 00
GOTO INICIO
END
WHILE [ KEY.UP]
GOTOXY 24 00
PAUSE ' Foi pressionado a tecla KEY.UP - Seta p/ Cima '
CLEARXY 24 00
GOTO INICIO
END
WHILE [ KEY.DOWN]
GOTOXY 24 00
PAUSE ' Foi pressionado a tecla KEY.DOWN - Seta p/ Baixo '
CLEARXY 24 00
GOTO INICIO
END
WHILE [ KEY.PREVIOUS]
GOTOXY 24 00
PAUSE ' Foi pressionado a tecla KEY.PREVOUS - PgUp '
CLEARXY 24 00
GOTO INICIO
END

════════════════════════════════════════════════════════════════
/*
WHILE [ ~ KEY.ESCAPE]
ACCEPT TELA.1 {CAPSLOCK}
CLEARFORM
END
GOTOXY 24 00
CLEARSCREEN
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 278


Programa p/ ler dados de uma base de dados Dataflex p/ arquivo ASCII.

/*
CLEARSCREEN
STRING TEMSTR
NUMBER RECS

DIRECT_INPUT "DADOS.TXT" // Gera arquivo ASCII com dados


[SEQEOF] ERROR 75 "DADOS.TXT"
[SEQEOF] ABORT

OPEN CUSTOMER

REPEAT
READ CUSTOMER.CODIGO // lê base dados no Dataflex
READ CUSTOMER.R_SOCIAL
READ CUSTOMER.END
READ CUSTOMER.BAIRRO
READ CUSTOMER.CIDADE
READ CUSTOMER.UF
READ CUSTOMER.CEP
READLN
[NOT SEQEOF] BEGIN
SAVERECORD CUSTOMER
CLEAR CUSTOMER
SHOW "*"
MOVE (RECS + 1) TO RECS
END
KEYCHECK BEGIN
SHOWLN
SHOWLN "Uma TECLA foi pressionada com " RECS " Regs GRAVADOS"
SHOW "Pressione qq. tecla p/ CONTINUAR ou ESC p/ CANCELAR"
INKEY TEMSTR
[KEY.ESCAPE] ABORT
END
UNTIL [SEQEOF]
SAVERECORD CUSTOMER
SHOW "*"
MOVE (RECS + 1) TO RECS
GOTOXY 04 05
SHOWLN RECS " Regs foram ADICIONADOS no arq. CUSTOMER"
GOTOXY 07 05
SHOW "Pressione qq. tecla p/ continuar "
INKEY TEMSTR
ABORT

Conteudo do arq. ASCII - DATS.TXT (página anterior)


=================================
"10","HERING S.A.","RUA BLUMENAU,100","CENTRO","TIMBO","SC","89120"
"20","HERMES S.A.","RUA INDAIAL,400","NACOES","INDAIAL","SC","89121"
"30","ADIDAS S.A.","RUA SAO PAULO,300","CENTRO","TIMBO","SC","89120"
"40","TOPPER LTDA","RUA ALEMANHA,700","CAPITAIS","GASPAR","SC","89120"

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 279


Programa abaixo lê dados do arquivo FORNEC e grava informações no
arquivo ASCII GARBAGE.TXT

/*

OPEN FORNEC

OUTFILE 'GARBAGE.TXT'

REPEAT
FIND GT FORNEC.RECNUM
[ FOUND] BEGIN
WRITELN FORNEC.CODIGO " " FORNEC.NOME " " ;
FORNEC.ENDERECO " " FORNEC.FONE
KEYCHECK GOSUB PAUSA
END
UNTIL [ FINDERR]

KEYPROC KEY.ESCAPE
ABORT

PAUSA:
GOTOXY 24 00
PAUSE ' Tecle ENTER p/ continuar ou ESC p/ sair '
CLEARXY 24 00
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 280


Programa para demonstrar MACRO ENTER e outros comandos.

/SCR1

┌────────────────────────────────────────────────────────────────────────┐
│ CADASTRO DE CLIENTES │
│ ==================== │
│ │
│ Codigo.......:<___.> │
│ Nome.........: ______________________________ │
│ Endereco.....: __________________________________ │
│ Bairro.......: ____________ │
│ Cidade.......: ______________ │
│ Cep..........: _______. Estado: __ │
│ CGC..........: __________________ Ins.Est: __________________ │
│ Phone........: __________________ Fax....: __________________ │
│ Contact......: ____________ │
│ │
│ Observacoes..: ______________________________________________ │
│ ______________________________________________ │
│ ______________________________________________ │
│ ______________________________________________ │
└────────────────────────────────────────────────────────────────────────┘

┌────────────────────────────────────────────────────────────────────────┐
│ ______________________________________________________________________ │
└────────────────────────────────────────────────────────────────────────┘
/MSG
__________________________________ (_)
/*

CLEARSCREEN
PAGE SET SCR1 AT 1 3 COLORS 15 7
PAGE SET MSG AT 24 3

STRING V1 1

SCREENMODE 112 ON
MOVE '[ESC] Exit [F1] Help [F2] Back [F3] SuperFind;
[F6] Erase [F9] Clear ' TO SCR1.17
SCREENMODE 7 ON
AUTOPAGE SCR1 1
NAME YCOD YNOME YEND YBAIR YCITY
NAME YCEP YEST YCGC YINS YFONE YFAX
NAME YCONT YNOTA_1 YNOTA_2 YNOTA_3 YNOTA_4

AUTOPAGE MSG
NAME Y1 Y2

FORMAT Y2 {AUTORETURN,CAPSLOCK,CHECK='YN'}

OPEN CADCLI

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 281


ENTER CADCLI
AUTOPAGE SCR1 1
ENTRY CADCLI.CODIGO YCOD {AUTOFIND,NOPUT}
IF_ YCOD EQ 0 GOTO ENT$LP
ENTRY CADCLI.NOME YNOME
ENTRY CADCLI.ENDERECO YEND
ENTRY CADCLI.BAIRRO YBAIR
ENTRY CADCLI.CITY YCITY
ENTRY CADCLI.CEP YCEP
ENTRY CADCLI.ESTADO YEST
ENTRY CADCLI.CGC YCGC
ENTRY CADCLI.INSCR_EST YINS
ENTRY CADCLI.FONE YFONE
ENTRY CADCLI.FAX YFAX
ENTRY CADCLI.CONTATO YCONT
ENTRY CADCLI.NOTA_1 YNOTA_1
ENTRY CADCLI.NOTA_2 YNOTA_2
ENTRY CADCLI.NOTA_3 YNOTA_3
ENTRY CADCLI.NOTA_4 YNOTA_4

[ ~ |9] BEGIN // ent$query


SCREENMODE 112 ON
DISPLAY 'Confirma GRAVACAO ' TO Y1
DISPLAY 'Y' TO Y2
ACCEPT Y2
SCREENMODE 7 ON
IF_ Y2 EQ 'Y' BEGIN
CLEARXY 24 0
GOTO ENTER$.SAVE
END
IF_ Y2 EQ 'N' BEGIN
CLEARXY 24 0
GOTO ENT$LP
END
END
[ |9] BEGIN
SCREENMODE 112 ON
DISPLAY 'Confirma ALTERACAO ' TO Y1
DISPLAY 'Y' TO Y2
ACCEPT Y2
SCREENMODE 7 ON
IF_ Y2 EQ 'Y' BEGIN
CLEARXY 24 0
GOTO ENTER$.SAVE
END

IF_ Y2 EQ 'N' BEGIN


CLEARXY 24 0
GOTO ENT$LP
END
END
RETURN
ENTEREND
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 282


KEYPROC KEY.DELETE
KEYPROC ON
[ ~ ENT$QUERY] BEGIN
ERROR 999 ' Nao ha registro no BUFFER '
RETURN ENT$LP
END
SCREENMODE 112 ON
DISPLAY 'Confirma DELECAO ?' TO Y1
DISPLAY 'N' TO Y2
ACCEPT Y2
SCREENMODE 7 ON
IF_ Y2 EQ 'Y' BEGIN
CLEARXY 24 00
GOTO ENTER$.DELETE
END
IF_ Y2 EQ 'N' BEGIN
CLEARXY 24 00
GOTO ENT$LP
END
RETURN

KEYPROC KEY.ESCAPE
KEYPROC ON
SCREENMODE 112 ON
DISPLAY 'Deseja SAIR do programa ? ' TO Y1
DISPLAY 'Y' TO Y2
ACCEPT Y2
SCREENMODE 7 ON
INDICATE GET_OUT AS Y2 IN 'Yy'
[ GET_OUT] BEGIN
CLEARSCREEN
CHAIN 'RAIZ'
END
[ ~ GET_OUT] BEGIN
CLEARXY 24 0
GOTO ENT$LP
END
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 283


Programa para gerar arquivo SEQUENCIAL para dados serem importados
em outra computador (linguagem).

/BODY RESIDENT
__. _____________________ __. __/__/__
/*

// Usar opcao do DFQUERY "GRAVAR QUERY - (V) virgula (delimitador)",


// alterar o arquivo que e rerado, removendo as aspas e as virgulas.

// Gerando arquivo SEQUENCIAL - ASCII para posteriormente ser impor-


// no COBRA-460.

OPEN ALUNOS INDEX.1

OUTFILE 'DADOS1.TXT' // gera arq. sequêncial

MOVE 0 TO PAGEEND

REPORT ALUNOS BY INDEX.1

SECTION BODY
PRINT ALUNOS.CODIGO
PRINT ALUNOS.NOME_ALUNO
PRINT ALUNOS.IDADE
PRINT ALUNOS.DATA_NASC
OUTPUT BODY
REPORTEND
FORMFEED

GOTOXY 01 00
SHOWLN ' CONTEUDO DO ARQUIVO SEQUENCIAL - DADOS1.TXT '

GOTOXY 03 00
RUNPROGRAM 'TYPE DADOS1.TXT'

ABORT

//--------------------------------------------\\
// Conteudo do arq. seq. DADOS1.TXT

// 10 ROBERTO DA CUNHA 20 01/01/78


// 20 MOACIR RAMOS SOLTO 2 02/03/91
// 30 CATIA DOS SANTOS 30 10/10/75
// 40 DORACI ROEDER 25 31/10/69
// 50 BRUNA ROEDER 5 04/07/89
// 60 DAIANA DA SILVA 4 04/03/90

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 284


Programa-relatório SEM MACRO REPORT .

/CABECALHO
CIA (004) ** MOVTOS NO ESTOQUE (P/PRODUTO) ** DATA: __/__/__ PAG: __.
+----------------------------------------------------------------------+
| COD.COMP. LOCAL TIPO NR.DOCTO. ENTRADA SAIDA DATA MOVTO.|
+----------------------------------------------------------------------+
/CORPO1
__Z____. _Z. _. ____. _Z,___,__. __,___,_Z. __/__/__
/LINHA_BRANCA

/SUB_TOTAL
SUBTOTAIS: _Z,___,__. __,___,_Z.

/TOTAL_GERAL
------------------------------------------------------------------------
Total Regs.: _____. TOTAIS: _Z,___,__. __,___,_Z.
------------------------------------------------------------------------
/TELA
Digite o CODIGO e LOCAL a ser listado: _______. _ 9 - Lista todos.

(V)ideo

(I)mpressora

(A)rquivo - Digite o nome do arquivo: ____________ .REL

(_) Qual sua OPCAO ?.

RELATORIO DE MOVIMENTOS POR COMPONENTE.


/*
CLEARSCREEN
PAGE SET TELA AT 01 04
STRING HTECLA 1 SAIDA 12
DATE HOJE
SYSDATE HOJE

INTEGER XTOTAL_REGS
INTEGER XTOTAL_ENTR
INTEGER XTOTAL_SAIDA
INTEGER PAGINA
INTEGER TAM_PAGE
INTEGER CONT_REG
INTEGER CONT_LIN
INTEGER XCODIGO
INTEGER XCOD
INTEGER XENTRADA
INTEGER XSAIDA

INDICATE PRIMEIRA TRUE


INDICATE SEGUNDA TRUE
INDICATE IGUAL TRUE

OPEN ESTIN002 INDEX.1

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 285


PAGE TELA
ACCEPT TELA.1 {AUTORETURN}
IF TELA.1 EQ 9 GOTO PULA
ACCEPT TELA.2 {AUTORETURN,RANGE=1,2,POINTS=1}
PULA:
ACCEPT TELA.4 {AUTORETURN,CAPSLOCK,CHECK="VIA"}

IF TELA.4 EQ "V" BEGIN


MOVE 23 TO TAM_PAGE
MOVE "CON:" TO SAIDA
END

IF TELA.4 EQ "I" BEGIN


MOVE 61 TO TAM_PAGE
MOVE "" TO SAIDA
END

IF TELA.4 EQ "A" BEGIN


ACCEPT TELA.3 {CAPSLOCK}
MOVE 61 TO TAM_PAGE
APPEND SAIDA TELA.3 ".REL"
END // Sera criado um arquivo
// com a extensao "REL"
CLEARSCREEN
OUTFILE SAIDA

CLEAR ESTIN002
IF TELA.1 EQ 9 BEGIN
MOVE 0 TO ESTIN002.COD_COMP
MOVE 0 TO ESTIN002.LOCAL_ESTOQ
MOVE 0 TO ESTIN002.TIPO_MOVTO
MOVE 0 TO ESTIN002.NR_DOCTO
MOVE 99999999 TO XCOD
GOTO LEITURA
END

MOVE TELA.1 TO ESTIN002.COD_COMP


MOVE TELA.1 TO XCOD
MOVE TELA.2 TO ESTIN002.LOCAL_ESTOQ
MOVE 0 TO ESTIN002.TIPO_MOVTO
MOVE 0 TO ESTIN002.NR_DOCTO

LEITURA:
FIND GT ESTIN002 BY INDEX.1
[ FOUND] GOTO SELECIONA
GOTO FIM

SELECIONA:
IF ESTIN002.COD_COMP GT XCOD GOTO FIM
[ PRIMEIRA] BEGIN
MOVE ESTIN002.COD_COMP TO XCODIGO
INDICATE PRIMEIRA FALSE
GOSUB CABECALHO1
END

IF ESTIN002.COD_COMP EQ XCODIGO GOTO IMPRESSAO


GOSUB SUB_TOTALIZANDO
MOVE ESTIN002.COD_COMP TO XCODIGO
INDICATE IGUAL TRUE

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 286


IMPRESSAO:
IF CONT_LIN GT TAM_PAGE BEGIN
INDICATE IGUAL TRUE
GOSUB CABECALHO1
END
PRINT ESTIN002.COD_COMP TO CORPO1.1
PRINT ESTIN002.LOCAL_ESTOQ TO CORPO1.2
[ ~ IGUAL] BEGIN
PRINT 0 TO CORPO1.1
PRINT 0 TO CORPO1.2
END
INDICATE IGUAL FALSE
PRINT ESTIN002.TIPO_MOVTO TO CORPO1.3
PRINT ESTIN002.NR_DOCTO TO CORPO1.4
PRINT ESTIN002.DTA_MOVTO TO CORPO1.7
IF ESTIN002.TIPO_MOVTO EQ 1 BEGIN
CALC (XENTRADA + ESTIN002.QTDE_MOVTDA) TO XENTRADA
PRINT ESTIN002.QTDE_MOVTDA TO CORPO1.5
PRINT 0 TO CORPO1.6
END
IF ESTIN002.TIPO_MOVTO EQ 2 BEGIN
CALC (XSAIDA + ESTIN002.QTDE_MOVTDA) TO XSAIDA
PRINT ESTIN002.QTDE_MOVTDA TO CORPO1.6
PRINT 0 TO CORPO1.5
END
OUTPUT CORPO1
INCREMENT CONT_REG
INCREMENT CONT_LIN
GOTO LEITURA

CABECALHO1:
IF SAIDA EQ "CON:" BEGIN
[ ~ SEGUNDA] BEGIN
SCREENMODE 112 ON
PAUSE " Pressione qq. tecla p/ CONTINUAR, ou ESC p/ CANCELAR "
SCREENMODE 7 ON
CLEARSCREEN
END
END

PRINT HOJE TO CABECALHO.1


INCREMENT PAGINA
PRINT PAGINA TO CABECALHO.2
MOVE 4 TO CONT_LIN
IF SAIDA EQ "" BEGIN
[ ~ SEGUNDA] BEGIN
OUTPUT LINHA_BRANCA
OUTPUT LINHA_BRANCA
OUTPUT LINHA_BRANCA
OUTPUT LINHA_BRANCA
OUTPUT LINHA_BRANCA
END
END
INDICATE SEGUNDA FALSE
OUTPUT CABECALHO
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 287


SUB_TOTALIZANDO:
IF SAIDA EQ "CON:" BEGIN
IF CONT_LIN GT 20 GOSUB CABECALHO1
END
IF CONT_LIN GT TAM_PAGE GOSUB CABECALHO1
PRINT XENTRADA TO SUB_TOTAL.1
PRINT XSAIDA TO SUB_TOTAL.2
CALC (XTOTAL_REGS + CONT_REG) TO XTOTAL_REGS
CALC (CONT_LIN + 2) TO CONT_LIN
CALC (XTOTAL_ENTR + XENTRADA) TO XTOTAL_ENTR
CALC (XTOTAL_SAIDA + XSAIDA) TO XTOTAL_SAIDA
MOVE 0 TO CONT_REG
MOVE 0 TO XENTRADA
MOVE 0 TO XSAIDA
OUTPUT SUB_TOTAL
RETURN

TOTAL_FINAL:
IF CONT_LIN GT TAM_PAGE GOSUB CABECALHO1
PRINT XTOTAL_REGS TO TOTAL_GERAL.1
PRINT XTOTAL_ENTR TO TOTAL_GERAL.2
PRINT XTOTAL_SAIDA TO TOTAL_GERAL.3
OUTPUT TOTAL_GERAL

IF SAIDA EQ "CON:" BEGIN


SCREENMODE 112 ON
PAUSE " FIM CONSULTA - PRESSIONE ENTER "
SCREENMODE 7 ON
END
RETURN

FIM:
GOSUB SUB_TOTALIZANDO
GOSUB TOTAL_FINAL
CLEARSCREEN
ABORT

KEYPROC KEY.ESCAPE
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 288


Programa-relatório SEM MACRO REPORT .

/CABECALHO
Relatorio __/__/__ Pag.: __.
+-----------------------------+-----------------------------------------+
| Nome | Endereco |
+-----------------------------+-----------------------------------------+
/CORPO1 | |
| _________________________ | _______________________________________ |
/LINHA_BRANCA

/SUB_TOTAL
+-----------------------------------------------------------------------+
| Registros: _____. |
+-----------------------------------------------------------------------+

/TOTAL_GERAL
+-----------------------------------------------------------------------+
| Registros: _____. |
+-----------------------------------------------------------------------+
/TELA

Informe o primeiro nome da pessoa: (_________________________)

Enter - Imprime tudo

(T)ela

(I)mpressora

(A)arquivo Nome do arquivo: ________ .REL

(_) Qual sua opção


/*

CLEARSCREEN
PAGE SET TELA AT 01 04

STRING HTECLA 1 SAIDA 12


DATE HOJE
SYSDATE HOJE

INTEGER HTOTAL
INTEGER PAGINA
INTEGER TAMPAGE
INTEGER CONTREG
INTEGER CONTLIN
STRING PALAVRA

MOVE "" TO SAIDA


MOVE 0 TO HTOTAL
MOVE 0 TO PAGINA
MOVE 0 TO TAMPAGE

MOVE 0 TO CONTREG
MOVE 0 TO CONTLIN
MOVE "" TO PALAVRA

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 289


INDICATE PRIMEIRA TRUE
INDICATE SEGUNDA TRUE

OPEN ALUNOS INDEX.1

PAGE TELA
ACCEPT TELA.1 {AUTORETURN}
ACCEPT TELA.3 {AUTORETURN,CAPSLOCK,CHECK="SPF"}

IF TELA.3 EQ "S" BEGIN


MOVE 24 TO TAMPAGE
MOVE "CON:" TO SAIDA
END

IF TELA.3 EQ "P" BEGIN


MOVE 60 TO TAMPAGE
MOVE "" TO SAIDA
END

IF TELA.3 EQ "F" BEGIN


ACCEPT TELA.2 {CAPSLOCK}
MOVE 60 TO TAMPAGE
APPEND SAIDA TELA.2 ".REL"
END // Sera criado um arquivo
// com a extensao "REL"
OUTFILE SAIDA
CLEARSCREEN
CLEAR ALUNOS
MOVE TELA.1 TO ALUNOS.NOME

LEITURA:
FIND GT ALUNOS BY INDEX.1
[ FOUND] GOTO SELECIONA
GOSUB SUB_TOTALIZANDO
GOSUB TOTAL_FINAL
ABORT

SELECIONA:
IF TELA.1 EQ "A" GOTO QUEBRA
IF ALUNOS.NOME NE TELA.1 GOTO LEITURA

QUEBRA:
[ PRIMEIRA] BEGIN
MOVE ALUNOS.NOME TO PALAVRA
INDICATE PRIMEIRA FALSE
GOSUB CABECALHO1
END
IF ALUNOS.NOME EQ PALAVRA GOTO IMPRESSAO
GOSUB SUB_TOTALIZANDO
MOVE ALUNOS.NOME TO PALAVRA

IMPRESSAO:
PRINT ALUNOS.NOME TO CORPO1.1
PRINT ALUNOS.ENDER TO CORPO1.2
IF CONTLIN GE TAMPAGE GOSUB CABECALHO1
OUTPUT CORPO1
INCREMENT CONTREG
INCREMENT CONTLIN
GOTO LEITURA

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 290


SUB_TOTALIZANDO:
IF SAIDA EQ "CON:" BEGIN
IF CONTLIN GT 20 GOSUB CABECALHO1
END
IF CONTLIN GT TAMPAGE GOSUB CABECALHO1
PRINT CONTREG TO SUB_TOTAL.1
CALC (HTOTAL + CONTREG) TO HTOTAL
CALC (CONTLIN + 4) TO CONTLIN
MOVE 0 TO CONTREG
OUTPUT SUB_TOTAL
RETURN

TOTAL_FINAL:
IF CONTLIN GT TAMPAGE GOSUB CABECALHO1
PRINT HTOTAL TO TOTAL_GERAL.1
OUTPUT TOTAL_GERAL
SCREENMODE 112 ON
PAUSE " END OF QUERY - PRESS ENTER KEY "
SCREENMODE 7 ON
RETURN

CABECALHO1:
IF SAIDA EQ "CON:" BEGIN
[ ~ SEGUNDA] BEGIN
SCREENMODE 71 ON
PAUSE " Press any key to go ahead, or ESC to CANCEL "
SCREENMODE 1 ON
CLEARSCREEN
END
END
PRINT HOJE TO CABECALHO.1
INCREMENT PAGINA

PRINT PAGINA TO CABECALHO.2


MOVE 4 TO CONTLIN
[ ~ SEGUNDA] BEGIN
OUTPUT LINHA_BRANCA
OUTPUT LINHA_BRANCA
OUTPUT LINHA_BRANCA
OUTPUT LINHA_BRANCA
OUTPUT LINHA_BRANCA
END
INDICATE SEGUNDA FALSE
OUTPUT CABECALHO
RETURN

KEYPROC KEY.ESCAPE
CLEARSCREEN
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 291


Programa abaixo para configurar a impressora.

/TELA1

(I)mpressora
=========
(P) Italico
(C) Condensado
(_) Qual sua fonte ?

(V)video

(_) Qual sua opcao ?

/TELA2

Cod: ______.
Razao Social: ___________________________________

/*
STRING DISP

OPEN CLIENTES
//ACCEPT TELA1.1 {AUTORETURN,CAPSLOCK,CHECK='PC'}
ACCEPT TELA1.2 {AUTORETURN,CAPSLOCK,CHECK='IV'}

//IF TELA1.1 EQ 'I' MOVE 'LST:' TO DISP


IF TELA1.1 EQ 'V' MOVE 'CON:' TO DISP

IF TELA1.2 EQ 'I' BEGIN


ACCEPT TELA1.1 {AUTORETURN,CAPSLOCK,CHECK='PC'}
WHILE TELA1.2 EQ 'P' // ITALICO
STRING ESC1 1
CHARACTER 27 TO ESC1
APPEND ESC1 '4'
WRITE ESC1
GOTOXY 20 10
SHOWLN ' 1 OUT'
PAUSE ''
OUTFILE 'LST:'
END
WHILE TELA1.2 EQ 'C' // CONDENSADO
STRING ESC2 1
CHARACTER 15 TO ESC2
WRITE ESC2
SHOWLN ' 2 OUT'

GOTOXY 21 10
PAUSE ''
OUTFILE 'LST:'

END
END

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 292


OUTFILE DISP
REPEAT
FIND GE CLIENTES BY INDEX.1

[ KEY.DOWN] FIND GT CLIENTES BY INDEX.1


[ KEY.UP] FIND LT CLIENTES BY INDEX.1
[ KEY.NEXT] FIND GT CLIENTES BY INDEX.1
[ KEY.PREVIOUS] FIND LT CLIENTES BY INDEX.1
[ KEY.RETURN] FIND GT CLIENTES BY INDEX.1

KEYCHECK
[ KEYPRESS] STOP
[ KEY.ESCAPE] STOP

PAGE TELA2
[KEYPRESS] STOP
PRINT CLIENTES.CODIGO TO TELA2.1
PRINT CLIENTES.R_SOCIAL TO TELA2.2
OUTPUT TELA2

GOTOXY 24 00
PAUSE ' Tecle ENTER'

UNTIL [ FINDERR]

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 293


Programa imprime NOTA DE CRÉDITO e imprime.

/SCR1
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ ┌────────────────────────────────────────────┐
▒ NOME DA EMPRESA ▒ │ NOTA DE CRÉDITO │
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ └────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ Cód. Empresa : <_.> __c________________________________________ │
│ Cód. Filial : <_.> │
│ Representante: <___.> __c________________________________________ │
│ Endereço : _c_______________________ │
│ Cidade : _c_____________ Estado: __ │
│ │
│ Data Emisão.: __/__/__ Nº : __. │
│ Período : __/__/__ a __/__/__ │
│ Valor : _$_,___,__.__ IRRF: _.% │
│ ____________________ _ │
├─────────────────────────────────────────────────────────────────────┤
│ <Esc> Sai <F2> Volta <F3> PROCURA <F9> Limpa Data: __/__/__ │
└─────────────────────────────────────────────────────────────────────┘
/PRT
+----------------------------------------------------+-------------------
----------------+-------+
| __________________________________________________ | N O T A D E
C R E D I T O | NR. |
| Insc.Est.: ___________ - C.G.C. __________________ +-------------------
----------------+ |
| __________________________________ | Dta Emissao:
__/__/__ | __. |
| 89120 - TIMBO - SANTA CATARINA |
| |
+----------------------------------------------------+-------------------
----------------+-------+
| Repres: ___________________________________ Cidade:
________________ |
| Ender.: _________________________ Estado: __
|
+------------------------------------------------------------------------
-----+------------------+
| HISTORICO
| |
|
| |
| O valor que lhes creditamos nesta data ref. comissoes sobre
| |
| vendas ref. o periodo de __/__/__ a __/__/__
..............................|Cr$___,___,___.__ |
|
| |
| (-) _.% IRRF
..............................|Cr$___,___,___.__ |
|
|------------------|
| LIQUIDO A RECEBER
..............................|Cr$___,___,___.__ |
|
| |
+------------------------------------------------------------------------
-----+------------------+
| Nesta data estamos creditando em sua conta-corrente a importancia
conforme |Cr$___,___,___.__ |
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 294
|
historico acima
| |
+------------------------------------------------------------------------
-----+------------------+
|
|
|
|
| ______________________________________________
|
| Credito e Cobranca
|
+---------------------------------------------------------------------+

/HELP
┌──────────────────────────────────┐
│ NãO HÂ HELP ON-LINE │
└──────────────────────────────────┘
/BLANK

/*

CLEARSCREEN

PAGE SET SCR1 AT 01 05 COLORS 15 7

DATE DATA
SYSDATE DATA
DISPLAY DATA TO SCR1.17

NUMBER XVLR1 XVLR2


STRING COND 1
INTEGER CODE
STARTING:
MOVE 0 TO CODE

CHARACTER 15 TO COND

KEYPROC KEY.HELP GOSUB DEAD

MULTIBACK$ OPEN CR003 AP100


MULTIBACK$ CLEAR CR003 AP100

FORMAT$RANGE SCR1.1 THRU SCR1.16 {AUTORETURN,AUTOBACK,CAPSLOCK}

INDICATE FIRST_TIME TRUE

ENTERGROUP
TOP:
BLANKFORM SCR1.15 THRU SCR1.16

ENTRY AP100.EMPRESA SCR1.1 {AUTOFIND,NOPUT}


IF_ SCR1.1 EQ 0 GOTO TOP
ENTRY AP100.RAZAO_SOCIAL SCR1.2 {DISPLAYONLY}

KEYCHECK GOTO OUT


[KEYPRESS KEY.ESCAPE] GOTO OUT
IF_ SCR1.1 EQ 1 MOVE AP100.FACTORY_1 TO SCR1.10
IF_ SCR1.1 EQ 2 MOVE AP100.FACTORY_2 TO SCR1.10

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 295


IF_ SCR1.1 EQ 3 MOVE AP100.FACTORY_3 TO SCR1.10
IF_ SCR1.1 EQ 4 MOVE AP100.FACTORY_4 TO SCR1.10
IF_ SCR1.1 EQ 5 MOVE AP100.FACTORY_5 TO SCR1.10

[KEY.NEXT] BEGIN
FIND_ GT AP100 BY |CI1
DISPLAY AP100.EMPRESA TO SCR1.1
DISPLAY AP100.RAZAO_SOCIAL TO SCR1.2
GOTO TOP
END

[ KEY.PREVIOUS] BEGIN
FIND_ LT AP100 BY |CI1
DISPLAY AP100.EMPRESA TO SCR1.1
DISPLAY AP100.RAZAO_SOCIAL TO SCR1.2
GOTO TOP
END
[ KEY.DOWN] BEGIN
FIND_ GT AP100 BY |CI1
DISPLAY AP100.EMPRESA TO SCR1.1
DISPLAY AP100.RAZAO_SOCIAL TO SCR1.2
GOTO TOP
END
[ KEY.UP] BEGIN
FIND_ LT AP100 BY |CI1
DISPLAY AP100.EMPRESA TO SCR1.1
DISPLAY AP100.RAZAO_SOCIAL TO SCR1.2
GOTO TOP
END
[ KEY.FIND] BEGIN
FIND_ GE AP100 BY |CI1
DISPLAY AP100.EMPRESA TO SCR1.1
DISPLAY AP100.RAZAO_SOCIAL TO SCR1.2
GOTO TOP
END
[ KEY.SFIND] BEGIN
FIND_ GE AP100 BY |CI1
DISPLAY AP100.EMPRESA TO SCR1.1
DISPLAY AP100.RAZAO_SOCIAL TO SCR1.2
GOTO TOP
END
[ FINDERR] BEGIN
GOTOXY 24 05
PAUSE ' Empresa NÃO cadastrada - Press ENTER '
CLEARXY 24 00
GOTO TOP
END
MOVE 0 TO SCR1.3

REPRES.1:
ENTRY CR003.REPRESENTANTE SCR1.4 {AUTOFIND,FINDREQ,NOPUT}

IF_ SCR1.4 EQ 0 GOTO REPRES.1

ENTRY CR003.NOME SCR1.5 {DISPLAYONLY}


ENTRY CR003.ENDERECO SCR1.6 {DISPLAYONLY}
ENTRY CR003.CIDADE SCR1.7 {DISPLAYONLY}
ENTRY CR003.ESTADO SCR1.8 {DISPLAYONLY}

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 296


[ KEY.NEXT] BEGIN
FIND_ GT AP100 BY |CI1 // index.1
[FOUND] DISPLAY CR003.EMPRESA TO SCR1.4
[FOUND] DISPLAY CR003.NOME TO SCR1.5
[FOUND] DISPLAY CR003.ENDERECO TO SCR1.6
[FOUND] DISPLAY CR003.CIDADE TO SCR1.7
[FOUND] DISPLAY CR003.ESTADO TO SCR1.8
GOTO REPRES.1
END
[ KEY.PREVIOUS] BEGIN
FIND_ LT AP100 BY |CI1
DISPLAY CR003.NOME TO SCR1.5
DISPLAY CR003.ENDERECO TO SCR1.6
DISPLAY CR003.CIDADE TO SCR1.7
DISPLAY CR003.ESTADO TO SCR1.8
GOTO REPRES.1
END
[ KEY.DOWN] BEGIN
FIND_ GT AP100 BY |CI1
DISPLAY CR003.NOME TO SCR1.5
DISPLAY CR003.ENDERECO TO SCR1.6
DISPLAY CR003.CIDADE TO SCR1.7
DISPLAY CR003.ESTADO TO SCR1.8
GOTO REPRES.1
END
[ KEY.UP] BEGIN
FIND_ LT AP100 BY |CI1
DISPLAY CR003.NOME TO SCR1.5
DISPLAY CR003.ENDERECO TO SCR1.6
DISPLAY CR003.CIDADE TO SCR1.7
DISPLAY CR003.ESTADO TO SCR1.8
GOTO REPRES.1
END
[ KEY.FIND] BEGIN
FIND_ GE AP100 BY |CI1
DISPLAY CR003.EMPRESA TO SCR1.4
DISPLAY CR003.NOME TO SCR1.5
DISPLAY CR003.ENDERECO TO SCR1.6
DISPLAY CR003.CIDADE TO SCR1.7
DISPLAY CR003.ESTADO TO SCR1.8
GOTO REPRES.1
END

[ KEY.SFIND] BEGIN
FIND_ GE AP100 BY |CI1
DISPLAY CR003.EMPRESA TO SCR1.4
DISPLAY CR003.NOME TO SCR1.5
DISPLAY CR003.ENDERECO TO SCR1.6
DISPLAY CR003.CIDADE TO SCR1.7
DISPLAY CR003.ESTADO TO SCR1.8
GOTO REPRES.1
END

IF_ SCR1.4 EQ 0 BEGIN


SCREENMODE 143 ON
ERROR 999 ' Programa NÃO aceita zero '
SCREENMODE 7 ON
GOTO REPRES.1
END
ENDGROUP

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 297


DATE.1:
ACCEPT SCR1.9 // {$C013=31/12/91,31/12/99}
IF_ SCR1.9 EQ 0 GOTO DATE.1

DISPLAY AP100.NUMBER TO SCR1.10


NR.1:
!A [] $1C1 SCR1.10
IF_ SCR1.10 EQ 0 GOTO NR.1
IF_ SCR1.1 EQ 1 MOVE SCR1.10 TO AP100.FACTORY_1
IF_ SCR1.1 EQ 2 MOVE SCR1.10 TO AP100.FACTORY_2
IF_ SCR1.1 EQ 3 MOVE SCR1.10 TO AP100.FACTORY_3
IF_ SCR1.1 EQ 4 MOVE SCR1.10 TO AP100.FACTORY_4
IF_ SCR1.1 EQ 5 MOVE SCR1.10 TO AP100.FACTORY_5
MOVE SCR1.10 TO AP100.NUMBER
SAVERECORD AP100
DATE.2:
ACCEPT SCR1.11 // {$C013=31/12/91,31/12/99}
IF_ SCR1.11 EQ 0 GOTO DATE.2
DATE.3:
ACCEPT SCR1.12 // {$C013=31/12/91,31/12/99}
IF_ SCR1.12 EQ 0 GOTO DATE.3
VLR.1:
ACCEPT SCR1.13 TO XVLR1
IF_ SCR1.13 EQ 0 GOTO VLR.1
MOVE SCR1.13 TO XVLR2
IRRF.1:
ACCEPT SCR1.14
IF_ SCR1.14 EQ 0 GOTO IRRF.1
SCREENMODE 112 ON
MOVE 'Confirma impressão ?' TO SCR1.15
SCREENMODE 7 ON

ACCEPT SCR1.16 {$C028,$C023,$C012='SN'}


IF_ SCR1.16 EQ 'N' GOTO TOP

WRITE COND

PRINT AP100.RAZAO_SOCIAL TO PRT.1


PRINT AP100.INSC_ESTADUAL TO PRT.2
PRINT AP100.CGC TO PRT.3
PRINT AP100.ENDERECO TO PRT.4

PRINT SCR1.5 TO PRT.7


PRINT SCR1.6 TO PRT.9
PRINT SCR1.7 TO PRT.8
PRINT SCR1.8 TO PRT.10
PRINT SCR1.9 TO PRT.5
PRINT SCR1.10 TO PRT.6

PRINT SCR1.11 TO PRT.11


PRINT SCR1.12 TO PRT.12
PRINT SCR1.13 TO PRT.13
PRINT SCR1.14 TO PRT.14
MOVE (ROUND ((SCR1.13 * SCR1.14) / 100)) TO XVLR1
PRINT XVLR1 TO PRT.15
MOVE (XVLR2 - XVLR1) TO XVLR2
PRINT XVLR2 TO PRT.16
PRINT XVLR2 TO PRT.17
OUTPUT PRT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 298


[ FIRST_TIME] BEGIN
OUTPUT BLANK
OUTPUT BLANK
INCREMENT CODE
END

[ ~ FIRST_TIME] BEGIN
OUTPUT BLANK
OUTPUT BLANK
OUTPUT BLANK
OUTPUT BLANK
INCREMENT CODE
END
INDICATE FIRST_TIME FALSE

CLEARFORM SCR1.4 THRU SCR1.8


CLEARFORM SCR1.9 THRU SCR1.14
BLANKFORM SCR1.15 THRU SCR1.16
MOVE 0 TO XVLR1
MOVE 0 TO XVLR2

IF_ CODE EQ 2 GOTO STARTING


GOTO TOP

KEYPROC KEY.DELETE
ENTAGAIN
!A [] $43 |CI0

KEYPROC KEY.UP
KEYPROC KEY.FIELD
KEYPROC ON
BACKFIELD
!A [] $43 |CI0
KEYPROC KEY.CLEAR
KEYPROC ON
CLEARFORM SCR1.1 THRU SCR1.13
CLEAR AP100 CR003
SCREENMODE 7 ON
GOTO TOP
!A [] $43 |CI0

KEYPROC KEY.USER
KEYPROC ON
GOTOXY 24 0
SHOW 'Abortando programa ... '
ABORT
RETURN
OUT:
KEYPROC KEY.ESCAPE
!A [] $146 |CI24 |CI00
STOP
ABORT
!A [] $43 |CI0

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 299


DEAD:
PAGE HELP AT 01 30 COLORS 112 112
ENTAGAIN
PAUSE ''
RETURN

Programa para demonstrar comando TRIM .

/*

STRING XV 15 XE 60 XT 60

OPEN SLANGS

WHILE [FOUND]
FIND_ GT SLANGS BY |CI1
[ FINDERR] ABORT
KEYCHECK ABORT

TRIM SLANGS.VERBO TO XV
TRIM SLANGS.EXPRECAO TO XE
TRIM SLANGS.TRADUCAO TO XT

MOVE XV TO SLANGS.VERBO
MOVE XE TO SLANGS.EXPRECAO
MOVE XT TO SLANGS.TRADUCAO

SAVERECORD SLANGS
END
ABORT

-----------------------------------------------------------

Programa abaixo para demonstrar comando TRIM .

/*
// Para eliminar "espacos em branco"
// no(s) campo(s). CLIENTES

STRING XE 45
OPEN CLIENTES

REPEAT
FIND_ GT CLIENTES BY |CI1
[ FINDERR] ABORT
KEYCHECK ABORT

SHOW '>'

TRIM CLIENTES.ENDER TO XE
MOVE XE TO CLIENTES.ENDER
SAVERECORD CLIENTES
UNTIL [FINDERR]
ABORT

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 300


Segue vários exemplos de programas, com diversos comandos:

/TELAA
╔═══════════════════════════════════════════════════════════════════════╗
║ EMPRESA _____________________________ PRA ║
║───────────────────────────────────────────────────────────────────────║
/TELA
│ │
│ CADASTRO DE EMPRESAS │
│ ════════════════════ │
│ │
│ │
│ │
│ Nome......: <______________________________> │
│ Endereco..: ______________________________ │
│ Cidade....: ____________________ Estado: __ │
│ C.G.C.....: __________________ Inscr.: _______________ │
│ │
│ Data de Encerramento.....: __/__/__ │
│ Ultima Pagina do Registro: __. │
│ Data Atualizacao Custos..: __/__/__ │
│ │
║───────────────────────────────────────────────────────────────────────║
║ [ESC] Retorna Menu [F6] Exclui Regs. [F9] Limpa Data: __/__/__ ║
╚═══════════════════════════════════════════════════════════════════════╝
/HELP1
║ ____________________


║ESC > Quando pressionar esta tecla voce ira retornar ao MENU ANTERIOR.

║ O programa solicitara confirmacao.


║F5 > Esta tecla de funcao ira INSERIR uma linha no pe/fundo do video para

║ fazer calculos, assim voce nao precisa de uma calculadora ao seu lado.║
║ (Esta linha e' a CALCULADORA DO DATAFLEX).

║ O resultado do calculo podera ser inserido/incluido no campo onde o

║ cursor for posicionado.

║F6 > Esta tecla de funcao ira APAGAR/ELIMINAR o registro que estiver na me-

║ moria. Antes de apagar um registro sempre sera solicitado confirmacao.║


║F9 > Esta tecla de funcao ira LIMPAR OS CAMPOS da tela. Se voce comecou a

║ digitar um registro e este estava errado, tecle F9 para limpar o campo║
║ e reiniciar a digitacao. ║

║ Tecle ENTER

╙───────────────────────────────────────────────────────────────────────────╜
/TELA_MENSAGEM
________________________________________ _
/*

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 301


#INCLUDE CM.MCR

PAGE TELAA AT 01 01
SCREENMODE 112 ON
CENTER 'Sistema de Materiais/Custos' TO TELAA.1
SCREENMODE 112 OFF

PAGE SET TELA AT 04 01 COLORS 15 7


PAGE SET TELA_MENSAGEM AT 24 20 COLORS 112 112

DATE DIA HH MM SS
SYSDATE DIA HH MM SS
MOVE DIA TO TELA.10

STRING HTECLA 1 XESTADOS 100 XPONTO 1

MOVE 'RO/AC/AM/RR/PA/AP/MA/PI/CE/RN/PB/PE/AL/FN' TO XESTADOS


APPEND XESTADOS 'SE/BA/MG/ES/RJ/SP/PR/SC/RS/MS/MT/GO/DF'

KEYPROC KEY.HELP GOSUB AJUDA


KEYPROC ON

AUTOPAGE TELA
NAME XNOM
NAME XEND
NAME XEST XCID
NAME XCGC XINSCR
NAME XDTA_ENC
NAME XULT_PAG
NAME XDTA_CUST

AUTOPAGE TELA_MENSAGEM
NAME XMENSAGEM
NAME XCONFIRMA
FORMAT XCONFIRMA {AUTORETURN,CAPSLOCK,CHECK="SN"}

FORMAT TELA.1 THRU TELA.9 {AUTORETURN,AUTOBACK}

OPEN SMCP016

ENTER SMCP016
AUTOPAGE TELA 1

ENTRY SMCP016.NOMEMP XNOM {AUTOFIND,NOPUT}


ENTRY SMCP016.ENDEMP XEND {CAPSLOCK}
ENTRY SMCP016.CIDEMP XCID {CAPSLOCK}
ENTRY SMCP016.ESTEMP XEST {CAPSLOCK,CHECK=XESTADOS}

CGC:
ENTRY SMCP016.CGCEMP XCGC

CGC_CHECK XCGC

[ ERR] BEGIN
ERROR 999 ' C.G.C INVALIDO ... '
GOTO CGC
END

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 302


MID XCGC TO XPONTO 1 3
IF XPONTO EQ '.' GOTO PULA_INSERTS

INSERT '.' IN XCGC AT 3


INSERT '.' IN XCGC AT 7
INSERT '/' IN XCGC AT 11
INSERT '-' IN XCGC AT 16

PULA_INSERTS:
ENTRY SMCP016.INSEMP XINSCR
ENTRY SMCP016.DATENC XDTA_ENC {RANGE=01/01/91,31/12/99}
ENTRY SMCP016.PAGREG XULT_PAG
ENTRY SMCP016.DTATUL XDTA_CUST {RANGE=01/01/91,31/12/99}

DISPLAY "Deseja INCLUIR/ALTERAR este registro ?" TO XMENSAGEM


DISPLAY "S" TO XCONFIRMA
ACCEPT XCONFIRMA
IF XCONFIRMA EQ "S"
CLEARXY 24 00
GOTO ENTER$.SAVE
ELSE
CLEARXY 24 00
GOTO ENTRYSEC
RETURN
ENTEREND
ABORT
KEYPROC KEY.DELETE
KEYPROC ON
[ ~ ENT$QUERY] BEGIN
ERROR 999 "Nao ha registro no BUFFER - SMCP016 (16)"
RETURN ENTRYSEC
END
DISPLAY "Deseja EXCLUIR este registro ?" TO XMENSAGEM
DISPLAY "N" TO XCONFIRMA
ACCEPT XCONFIRMA
IF XCONFIRMA EQ "S"
CLEARXY 24 00
GOTO ENTER$.DELETE
ELSE
CLEARXY 24 00
GOTO ENTRYSEC
RETURN

KEYPROC KEY.ESCAPE
KEYPROC ON
DISPLAY "Deseja retornar ao MENU ?" TO XMENSAGEM
DISPLAY "S" TO XCONFIRMA
ACCEPT XCONFIRMA
IF XCONFIRMA EQ "S"
CLEARSCREEN
CHAIN 'SMCM001'
ELSE
CLEARXY 24 00
GOTO ENTRYSEC
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 303


AJUDA:
PAGE HELP1 AT 03 00 COLORS 15 7
SCREENMODE 112 ON
CENTER 'Materiais & Custos' TO HELP1.1
SCREENMODE 112 OFF
ENTAGAIN
INKEY HTECLA
RETURN

KEYPROC KEY.UP
KEYPROC KEY.FIELD
BACKFIELD
RETURN

/TELA
---------------------------------------------------------------
Nr. do arq. : [__.]
Nome Base : [________________________________________]
Nome p/ usuario : [________________________________________]
Nome p/ Dataflex : [________]
---------------------------------------------------------------

Codigo.......: <_____.>
Cliente......: ____________________
Endereco.....: ____________________
Cep..........: _____.
Salario......: ________.__

---------------------------------------------------------------

<ESC> Sai do programa.


/*
INTEGER XREGS XTAMANHO
NUMBER XSALARIO
OPEN CLIENTS
ENTER CLIENTS
AUTOPAGE TELA 5
ENTRY CLIENTS.CODIGO {AUTOFIND,NOPUT}
ENTRY CLIENTS.CLIENTE {CAPSLOCK}
ENTRY CLIENTS.ENDERECO {CAPSLOCK}
ENTRY CLIENTS.CEP
ENTRY CLIENTS.SALARIO

IF STATUS CLIENTS BEGIN


GOTOXY 24 00
PAUSE ' HA REGISTROS GRAVADOS NO ARQUIVO (CLIENTES)
CLEARXY 24 00
END

SCREENMODE 112 ON
MOVE FILENUMBER TO TELA.1
FILELIST FILENUMBER TO TELA.3 TELA.4
FILELIST PATHNAME TO TELA.2
SCREENMODE 7 ON

GOTOXY 24 00
PAUSE 'Tecle ENTER para gravar o registro '
CLEARXY 24 00
RETURN
ENTEREND
ABORT
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 304
KEYPROC KEY.ESCAPE

COPYFILE 'CLI.FRM' TO 'NOVOCLI.FRM'

CLEARSCREEN

DIRECTORY 'C:\TESTES\NOVOCLI.FRM'

GOTOXY 24 00
PAUSE 'Tecle ENTER para RENOMEAR o arquivo acima '

RENAMEFILE 'NOVOCLI.FRM' TO 'PROG01.TXT'

CLEARSCREEN
DIRECTORY 'C:\TESTES\PROG01.TXT'
GOTOXY 24 00
PAUSE ' Tecle ENTER '

ERASEFILE 'NOVOCLI.FRM'

CLEARSCREEN
DIRECTORY 'C:\TESTES\PROGR01.TXT'
GOTOXY 24 00
PAUSE ' Arquivo ja foi eliminado '

CLEARSCREEN

SUM CLIENTS USING CLIENTS.SALARIO TO XSALARIO

GOTOXY 10 10
SHOWLN 'Total de Salarios no arq. : ' XSALARIO

COUNT CLIENTS TO XREGS

GOTOXY 12 10
SHOWLN 'Total de regs. no arq. : ' XREGS

FILE_SIZE CLIENTS TO XTAMANHO

GOTOXY 14 10
SHOWLN 'Total de regs no arq. : ' XTAMANHO

GOTOXY 24 00
ABORT
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 305


/TELA

LENDO O ARQUIVO DE CLIENTES CRIADO NO EDITOR DE FACIL 7.0


=========================================================

Nome Sobrenome Cep Cidade Estado


==================== ============ ===== ==================== ======
____________________ ____________ ____. ____________________ __
____________________ ____________ ____. ____________________ __
____________________ ____________ ____. ____________________ __
____________________ ____________ ____. ____________________ __
____________________ ____________ ____. ____________________ __
____________________ ____________ ____. ____________________ __
____________________ ____________ ____. ____________________ __

/*

#REM By: Jurandir A. Pellin

STRING XNOME 20
STRING XSOBRENOME 12
INTEGER XCEP
STRING XCIDADE 20
STRING XESTADO 2

MOVE 0 TO WINDOWINDEX
DIRECT_INPUT 'C:\FACIL6\CADASTRO.TXT'

OUTFILE 'TEXTO.DAT'

REPEAT
TOP:
READ XNOME
READ XSOBRENOME
READ XCEP
READ XCIDADE
READ XESTADO
READLN
WRITELN XNOME ' ,' XSOBRENOME ' ,' XCEP ' ,' XCIDADE ' ,' XESTADO

DISPLAY XNOME TO TELA.1&


DISPLAY XSOBRENOME TO TELA.2&
DISPLAY XCEP TO TELA.3&
DISPLAY XCIDADE TO TELA.4&
DISPLAY XESTADO TO TELA.5&

KEYCHECK
[ KEYPRESS] ABORT

MOVE (WINDOWINDEX + 5) TO WINDOWINDEX

IF_ WINDOWINDEX GT 34 BEGIN


PAGE TELA
GOTOXY 24 0
SCREENMODE 112 ON
PAUSE ' Press ENTER to see further recs '
SCREENMODE 7 ON
CLEARXY 24 0

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 306


MOVE 0 TO WINDOWINDEX
CLEARFORM TELA.1& THRU TELA.5&
GOTO TOP
END

UNTIL [ SEQEOF]
CLEARSCREEN
RUNPROGRAM 'TYPE TEXTO.DAT'
ABORT

═════════════════════════════════════════════════════════════════════

Programa para demonstrar campo FIELDINDEX.

/*
OPEN CLIENTES
FOR FIELDINDEX FROM 1 TO 7
FIND GT CLIENTES BY INDEX.1
KEYCHECK
[ KEYPRESS] ABORT
[ KEY.ESCAPE] ABORT
GOTOXY 05 10
SHOWLN CLIENTES.CODIGO
GOTOXY 06 10
SHOWLN CLIENTES.R_SOCIAL
GOTOXY 07 10
SHOWLN CLIENTES.END
GOTOXY 08 10
SHOWLN CLIENTES.BAIRRO
GOTOXY 09 10
SHOWLN CLIENTES.CIDADE
GOTOXY 10 10
SHOWLN CLIENTES.UF
GOTOXY 20 10
SHOWLN CLIENTES.CEP
GOTOXY 20 10
PAUSE 'Tecle ENTER p/ ver + regs ...'
LOOP

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 307


Exemplo de um MENU que faz BACKUP e RESTAURA.

/T1
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█ █ PRINCIPAL █ █
║ └─────────────────┘ ║
║ ║
║ ________ ________ __________ _____ ________║
║ ║
║ Movimente o cursor p/ direita ou esquerda e tecle ENTER ║
█ Tecle ESC p/ sair ou para retornar ao programa anterior █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
/COPIA
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
│ BACK UP │
│ A cópia de segurança dos seus dados DEVE ser feita │
│ todos os dias. LEMBRE-SE isto e muito sério! │
│ │
│ Insira o disco de BACK UP no drive A: e tecle ENTER │
│ │
│ _________________________________________________ │
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
/RESTAURA
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
▌ RESTAURA ▐
▌ O processo de restauração é copiar TODOS os dados ▐
▌ do disco de volta para o winchester. ▐
▌ ▐
▌ Insira o disco de BACK UP no drive A: e tecle ENTER ▐
▌ ▐
▌ ________________________________________ ▐
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
/*

MENU_REQUIRED
STRING T 1 CADX 1 CONSX 1
PAGE T1 AT 2 10 COLORS 77 31

START:
SCREENMODE 10 ON
DISPLAY 'Cadastra' TO T1.1
DISPLAY 'Consulta' TO T1.2
DISPLAY 'Relatorios' TO T1.3
DISPLAY 'Copia' TO T1.4
DISPLAY 'Restaura' TO T1.5

GOSUB HIGH_LIGHT
REPEAT
INKEY T
GOSUB LOW_LIGHT
[ KEY.ESCAPE] BEGIN
SYSTEM
ABORT
END

[ KEY.RIGHT] BEGIN
INCREMENT WINDOWINDEX
IF_ WINDOWINDEX GT 4 MOVE 0 TO WINDOWINDEX
END

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 308


[ KEY.LEFT] BEGIN
MOVE (WINDOWINDEX - 1) TO WINDOWINDEX
IF_ WINDOWINDEX LT 0 MOVE 1 TO WINDOWINDEX
END
[ KEY.RETURN] BEGIN
IF_ WINDOWINDEX EQ 0 CHAIN 'MEN1'
IF_ WINDOWINDEX EQ 1 CHAIN 'MEN3'
IF_ WINDOWINDEX EQ 2 CHAIN 'MEN2'

IF_ WINDOWINDEX EQ 3 BEGIN


PAGE COPIA AT 2 10 COLORS 78 31
SCREENMODE 78 ON
MOVE ' Aguarde um instante COPIA esta em andamento ... ' TO
COPIA.1
SCREENMODE 31 ON
PAUSE ''
RUNPROGRAM WAIT 'PKZIP JUSTME DADOS *.DAT > NUL'
RUNPROGRAM WAIT 'ZIP2EXE DADOS.ZIP > NUL'
RUNPROGRAM WAIT 'ECHO T| COPY DADOS.EXE A:\ > NUL'
CHAIN 'TELA'
END
IF_ WINDOWINDEX EQ 4 BEGIN
PAGE RESTAURA AT 2 10 COLORS 31 27
SCREENMODE 78 ON
MOVE ' RESTAURANDO dados do disco - Aguarde ... ' TO
RESTAURA.1
SCREENMODE 31 ON
PAUSE ''
RUNPROGRAM WAIT 'ECHO T| COPY A:\DADOS.EXE > NUL'
RUNPROGRAM WAIT 'DADOS justme > NUL'
RUNPROGRAM WAIT 'DFINDEX ALL > NUL'
CHAIN 'TELA'
END
END
MOVE 0 TO CURRENT_IMAGE
PAGE T1 AT 2 10 COLORS 77 31
GOTO START
GOSUB HIGH_LIGHT
LOOP

HIGH_LIGHT:
SCREENMODE 78 ON
DISPLAY T1.1& TO T1.1&
RETURN
LOW_LIGHT:
SCREENMODE 27 ON
DISPLAY T1.1& TO T1.1&
RETURN

KEYPROC KEY.ESCAPE
GOTOXY 24 0
CLEARSCREEN
MOVE 0 TO NEXT_MENU
GOTOXY 10 16
SCREENMODE 78 ON
PAUSE ' Voce ja fez a COPIA de seguranca? Nao ESQUECA ! ' WAIT
25000
CLEARSCREEN
SYSTEM
ABORT
RETURN
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 309
Programa MENU mostrando que o acesso pode ser viar SETINHA DIRECIONADORAS
ou selecionado a LETRA da opção desejada.

/T1
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█▀▀▀▀▀▀▀▀▀▀▀▀█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█ █ RELATORIOS █ █
║ └────────────┘ ║
║ ______________ _____________ ______________ ║
║ ______________ _____________ ______________ ║
║ ______________ _____________ ______________ ║
║ ______________ _____________ ______________ ║
║ ______________ <- -> ║
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
/SENHA
Informe sua senha: [___.]
/*
MENU_REQUIRED
STRING T 1
PAGE T1 AT 2 10 COLORS 77 31

START:
SCREENMODE 14 ON
DISPLAY 'A Devedores' TO T1.1
DISPLAY 'B Intimacao' TO T1.2
DISPLAY 'C Instrumento' TO T1.3

DISPLAY 'D Custos C' TO T1.4


DISPLAY 'E Custos P' TO T1.5

DISPLAY 'F Protestado C' TO T1.6


DISPLAY 'G Protestado P' TO T1.7

DISPLAY 'H Cancelado C' TO T1.8


DISPLAY 'I Cancelado P' TO T1.9

DISPLAY 'J Entradas C' TO T1.10


DISPLAY 'K Entradas P' TO T1.11

DISPLAY 'L Protestos C' TO T1.12


DISPLAY 'M Protestos P' TO T1.13

GOSUB HIGH_LIGHT
REPEAT
REPEAT
INKEY T
UPPERCASE T
INDICATE OPCAO AS T IN ' ABCDEFGHIJKLM '
INDICATE SETAS GROUP ANY [ KEY.RIGHT KEY.LEFT KEY.RETURN]
INDICATE OK GROUP ANY [ OPCAO SETAS]
UNTIL [ OK]

[ OPCAO] BEGIN
POS T IN ' ABCDEFGHIJKLM ' TO WINDOWINDEX
DECREMENT WINDOWINDEX
END
GOSUB LOW_LIGHT

[ SETAS] BEGIN
[ KEY.RIGHT] BEGIN
INCREMENT WINDOWINDEX
IF_ WINDOWINDEX GT 12 MOVE 0 TO WINDOWINDEX
END
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 310
[ KEY.LEFT] BEGIN
MOVE (WINDOWINDEX - 1) TO WINDOWINDEX
IF_ WINDOWINDEX LT 0 MOVE 0 TO WINDOWINDEX
END

[ KEY.RETURN] BEGIN
IF_ WINDOWINDEX EQ 0 CHAIN 'NOTA01'
IF_ WINDOWINDEX EQ 1 CHAIN 'NOTA05'
IF_ WINDOWINDEX EQ 2 CHAIN 'NOTA02'
IF_ WINDOWINDEX EQ 3 BEGIN

NOTOK:
PAGE SENHA AT 9 25 COLORS 78 31
SCREENMODE 0 ON
ACCEPT SENHA.1
IF SENHA.1 NE '1012' BEGIN
GOTOXY 24 0
SCREENMODE 78 ON
PAUSE ' Senha Incorreta ! - Tecle ENTER '
SCREENMODE 31 ON
CLEARXY 24 0
CLEARFORM SENHA.1
GOTO NOTOK
END
CHAIN 'NOTA09'
END
IF_ WINDOWINDEX EQ 4 BEGIN
OK1:
PAGE SENHA AT 9 25 COLORS 78 31
SCREENMODE 0 ON
ACCEPT SENHA.1
IF SENHA.1 NE '1012' BEGIN
GOTOXY 24 0
SCREENMODE 78 ON
PAUSE ' Senha Incorreta ! - Tecle ENTER '
SCREENMODE 31 ON
CLEARXY 24 0
CLEARFORM SENHA.1
GOTO OK1
END
CHAIN 'NOTA099'
END
IF_ WINDOWINDEX EQ 5 CHAIN 'NOTA03'
IF_ WINDOWINDEX EQ 6 CHAIN 'NOTA033'
IF_ WINDOWINDEX EQ 7 CHAIN 'NOTA04'
IF_ WINDOWINDEX EQ 8 CHAIN 'NOTA044'
IF_ WINDOWINDEX EQ 9 CHAIN 'NOTA08'
IF_ WINDOWINDEX EQ 10 CHAIN 'NOTA088'
IF_ WINDOWINDEX EQ 11 CHAIN 'NOTA07'
IF_ WINDOWINDEX EQ 12 CHAIN 'NOTA077'
END
END
MOVE 0 TO CURRENT_IMAGE
PAGE T1 AT 2 10 COLORS 77 31

GOTO START
GOSUB HIGH_LIGHT
LOOP

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 311


HIGH_LIGHT:
SCREENMODE 78 ON
DISPLAY T1.1& TO T1.1&
RETURN

LOW_LIGHT:
SCREENMODE 87 ON
DISPLAY T1.1& TO T1.1&
RETURN

KEYPROC KEY.ESCAPE
CHAIN 'MEN01'
RETURN

===========================================================================

/T1
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▌CADASTROS▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
║ ________ _____ _____ _____ _____________ ______ ║
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
/*

MENU_REQUIRED
PAGE T1 AT 2 13 COLORS 77 31
STRING T 1

START:

IF TERMCHAR EQ 67 CHAIN 'CLIENTES' // Codigo da letra C (maiscula) = 67


IF TERMCHAR EQ 99 CHAIN 'CLIENTES' // Codigo da letra c (minuscula)= 99
IF TERMCHAR EQ 78 CHAIN 'NOTAX'
IF TERMCHAR EQ 110 CHAIN 'NOTAX'
IF TERMCHAR EQ 86 CHAIN 'VALOR'
IF TERMCHAR EQ 118 CHAIN 'VALOR'
IF TERMCHAR EQ 88 CHAIN 'CAIXA'
IF TERMCHAR EQ 120 CHAIN 'CAIXA'
IF TERMCHAR EQ 80 CHAIN 'CX'
IF TERMCHAR EQ 112 CHAIN 'CX'
IF TERMCHAR EQ 66 CHAIN 'BANCOS'
IF TERMCHAR EQ 98 CHAIN 'BANCOS'

SCREENMODE 10 ON
DISPLAY 'Clientes' TO T1.1
DISPLAY 'Notas' TO T1.2
DISPLAY 'Valor' TO T1.3
DISPLAY 'caiXa' TO T1.4
DISPLAY 'Pagar/Receber' TO T1.5
DISPLAY 'Bancos' TO T1.6

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 312


GOSUB HIGH_LIGHT
REPEAT
INKEY T
GOSUB LOW_LIGHT
[ KEY.ESCAPE] BEGIN
SYSTEM
ABORT
END
[ KEY.RIGHT] BEGIN
INCREMENT WINDOWINDEX
IF_ WINDOWINDEX GT 5 MOVE 0 TO WINDOWINDEX
END
[ KEY.LEFT] BEGIN
MOVE (WINDOWINDEX - 1) TO WINDOWINDEX
IF_ WINDOWINDEX LT 0 MOVE 1 TO WINDOWINDEX
END
[ KEY.RETURN] BEGIN
IF_ WINDOWINDEX EQ 0 CHAIN 'CLIENTES'
IF_ WINDOWINDEX EQ 1 CHAIN 'NOTAX'
IF_ WINDOWINDEX EQ 2 CHAIN 'VALOR'
IF_ WINDOWINDEX EQ 3 CHAIN 'CAIXA'
IF_ WINDOWINDEX EQ 4 CHAIN 'CX'
IF_ WINDOWINDEX EQ 5 CHAIN 'BANCOS'
END
MOVE 0 TO CURRENT_IMAGE
PAGE T1 AT 2 13 COLORS 77 31
GOTO START

GOSUB HIGH_LIGHT
LOOP
HIGH_LIGHT:
SCREENMODE 78 ON
DISPLAY T1.1& TO T1.1&
RETURN
LOW_LIGHT:
SCREENMODE 27 ON
DISPLAY T1.1& TO T1.1&
RETURN

KEYPROC KEY.ESCAPE
CHAIN 'TELA1'
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 313


/TELA
┌───▌___________▐───────────────────────────────────────────────────────────┐
█ Nr. Orcam: <_____.> █
█ Cliente: <_____.> __________________________________________ █
█ Endereco: ____________________________________ Cep: __________ █
█ Cidade: ___________________________ UF: __ Fone: ____________ █
█ Contato: ___________________________ █
█ Qtde █ Unid █ Descricao █ Preco █ Total █
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█ ____. ____ ______________________________________ ___.____ ________.__ █
█ ____. ____ ______________________________________ ___.____ ________.__ █
█ ____. ____ ______________________________________ ___.____ ________.__ █
█ ____. ____ ______________________________________ ___.____ ________.__ █
█ ____. ____ ______________________________________ ___.____ ________.__ █
█ ____. ____ ______________________________________ ___.____ ________.__ █
█ ____. ____ ______________________________________ ___.____ ________.__ █
█ ____. ____ ______________________________________ ___.____ ________.__ █
█ ____. ____ ______________________________________ ___.____ ________.__ █
█ ____. ____ ______________________________________ ___.____ ________.__ █
█ ▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀ █
█ ____. Data Entrega: __/__/__ ________.__ █
└───────────────────────────────────────────────────────────────────────────┘
ESC-Sai F1-Ajuda F2-Volta F3-Procura F5-Calc F6-Apaga F9-Limpa F10-Grava
/HELP
┌────────────────────────────────────────────────────┐
│ TECLAS DE ATALHO │
│ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ │
│ │
│TAB Mostra na tela o primeiro registro. │
│PgUp Procurar registro - anterior. │
│PgDn Procurar registro - posterior. │
│ F1 Mostra Ajuda disponivel no programa. │
│ F2 Volta de campo em campo. │
│ F3 Procura registros. │
│ F6 Apaga o registro que estiver na tela (memória).│
│ F7 Acessa o programa para apagar contas. │
│ F9 Apaga o registro somente da tela. │
│F10 Grava o registro. │
└────────────────────────────────────────────────────┘

/NOTAS
**************************************************************************
<<< ORCAMENTO >>>
**************************************************************************

Nr. Orcam.: _____.

Cliente: _____. __________________________________________

Endereco: ____________________________________ Cep: __________

Cidade: ___________________________ UF: __

Fone: ____________ Contato: ___________________________

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 314


Qtde Unid Descricao Preco Unit Total
===== ==== ======================================= ========== ===========
_z__. _c__ _c_____________________________________ _z___.____ _z__,___.__

_z__. _c__ _c_____________________________________ _z___.____ _z__,___.__

_z__. _c__ _c_____________________________________ _z___.____ _z__,___.__

_z__. _c__ _c_____________________________________ _z___.____ _z__,___.__

_z__. _c__ _c_____________________________________ _z___.____ _z__,___.__

_z__. _c__ _c_____________________________________ _z___.____ _z__,___.__

_z__. _c__ _c_____________________________________ _z___.____ _z__,___.__

_z__. _c__ _c_____________________________________ _z___.____ _z__,___.__

_z__. _c__ _c_____________________________________ _z___.____ _z__,___.__

_z__. _c__ _c_____________________________________ _z___.____ _z__,___.__

===== ===========
____. ____,___.__

*************************************************************************

Data Entrada: __/__/__

Data Entrega: __/__/__ -------------------------------


Assinatura do Cliente

*************************************************************************
/// ENTREGA DO(S) PEDIDO(S) SOMENTE MEDIANTE PAGAMENTO \\\
/*

MENU_REQUIRED

PAGE TELA AT 1 1 COLORS 31 30

STRING X 1

SCREENMODE 78 ON
MOVE ' ORCAMENTO ' TO TELA.1
SCREENMODE 31 ON

OPEN NOTAX
OPEN CLIENTES

ENTER NOTAX CLIENTES


AUTOPAGE TELA 2

CLEAR NOTAX
MOVE 999999 TO NOTAX.COD_ORCAM
FIND LT NOTAX BY INDEX.1
[ FOUND] DISPLAY NOTAX.COD_ORCAM TO TELA.2

ENTRY NOTAX.COD_ORCAM TELA.2 {$C000,$C002}

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 315


IF TELA.2 EQ 0 BEGIN
GOTOXY 24 15
SCREENMODE 78 ON
PAUSE ' ZERO como codigo NAO sera aceito - Tecle ENTER '
SCREENMODE 31 ON
CLEARXY 24 0
GOTO ENT$LP
END

CLEAR NOTAX
MOVE TELA.2 TO NOTAX.COD_ORCAM
FIND EQ NOTAX BY INDEX.1

ENTRY CLIENTES.COD_CLIENTE TELA.3 {AUTOFIND,FINDREQ,NOPUT}


ENTRY CLIENTES.RAZAO_SOCIAL TELA.4 {DISPLAYONLY}
ENTRY CLIENTES.ENDERECO TELA.5 {DISPLAYONLY}

ENTRY CLIENTES.CEP TELA.6 {DISPLAYONLY}


ENTRY CLIENTES.CIDADE TELA.7 {DISPLAYONLY}
ENTRY CLIENTES.UF TELA.8 {DISPLAYONLY}
ENTRY CLIENTES.FONE TELA.9 {DISPLAYONLY}
ENTRY CLIENTES.CONTATO TELA.10 {DISPLAYONLY}

ENTRY NOTAX.CAMPO_10 TELA.11


ENTRY NOTAX.CAMPO_11 TELA.12
ENTRY NOTAX.CAMPO_12 TELA.13
ENTRY NOTAX.CAMPO_13 TELA.14
CALC (TELA.11 * TELA.14) TO TELA.15
ENTRY NOTAX.CAMPO_14 TELA.15

ENTRY NOTAX.CAMPO_15 TELA.16


IF TELA.16 EQ 0 GOTO TOTAL
ENTRY NOTAX.CAMPO_16 TELA.17
ENTRY NOTAX.CAMPO_17 TELA.18
ENTRY NOTAX.CAMPO_18 TELA.19
CALC (TELA.16 * TELA.19) TO TELA.20
ENTRY NOTAX.CAMPO_19 TELA.20

ENTRY NOTAX.CAMPO_20 TELA.21


IF TELA.21 EQ 0 GOTO TOTAL
ENTRY NOTAX.CAMPO_21 TELA.22
ENTRY NOTAX.CAMPO_22 TELA.23
ENTRY NOTAX.CAMPO_23 TELA.24
CALC (TELA.21 * TELA.24) TO TELA.25
ENTRY NOTAX.CAMPO_24 TELA.25

ENTRY NOTAX.CAMPO_25 TELA.26


IF TELA.26 EQ 0 GOTO TOTAL
ENTRY NOTAX.CAMPO_26 TELA.27
ENTRY NOTAX.CAMPO_27 TELA.28
ENTRY NOTAX.CAMPO_28 TELA.29
CALC (TELA.26 * TELA.29) TO TELA.30
ENTRY NOTAX.CAMPO_29 TELA.30

ENTRY NOTAX.CAMPO_30 TELA.31


IF TELA.30 EQ 0 GOTO TOTAL
ENTRY NOTAX.CAMPO_31 TELA.32
ENTRY NOTAX.CAMPO_32 TELA.33
ENTRY NOTAX.CAMPO_33 TELA.34
CALC (TELA.31 * TELA.34) TO TELA.35
ENTRY NOTAX.CAMPO_34 TELA.35
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 316
ENTRY NOTAX.CAMPO_35 TELA.36
IF TELA.36 EQ 0 GOTO TOTAL
ENTRY NOTAX.CAMPO_36 TELA.37
ENTRY NOTAX.CAMPO_37 TELA.38

ENTRY NOTAX.CAMPO_38 TELA.39


CALC (TELA.36 * TELA.39) TO TELA.40
ENTRY NOTAX.CAMPO_39 TELA.40

ENTRY NOTAX.CAMPO_40 TELA.41


IF TELA.41 EQ 0 GOTO TOTAL
ENTRY NOTAX.CAMPO_41 TELA.42
ENTRY NOTAX.CAMPO_42 TELA.43
ENTRY NOTAX.CAMPO_43 TELA.44
CALC (TELA.41 * TELA.44) TO TELA.45
ENTRY NOTAX.CAMPO_44 TELA.45

ENTRY NOTAX.CAMPO_45 TELA.46


IF TELA.46 EQ 0 GOTO TOTAL
ENTRY NOTAX.CAMPO_46 TELA.47
ENTRY NOTAX.CAMPO_47 TELA.48
ENTRY NOTAX.CAMPO_48 TELA.49
CALC (TELA.46 * TELA.49) TO TELA.50
ENTRY NOTAX.CAMPO_49 TELA.50

ENTRY NOTAX.CAMPO_50 TELA.51


IF TELA.51 EQ 0 GOTO TOTAL
ENTRY NOTAX.CAMPO_51 TELA.52
ENTRY NOTAX.CAMPO_52 TELA.53
ENTRY NOTAX.CAMPO_53 TELA.54
CALC (TELA.51 * TELA.54) TO TELA.55
ENTRY NOTAX.CAMPO_54 TELA.55

ENTRY NOTAX.CAMPO_55 TELA.56


IF TELA.56 EQ 0 GOTO TOTAL
ENTRY NOTAX.CAMPO_56 TELA.57
ENTRY NOTAX.CAMPO_57 TELA.58
ENTRY NOTAX.CAMPO_58 TELA.59
CALC (TELA.56 * TELA.59) TO TELA.60
ENTRY NOTAX.CAMPO_59 TELA.60

TOTAL:
CALC (TELA.11 + TELA.16 + TELA.21 + TELA.26 + TELA.31 + TELA.36 + ;
TELA.41 + TELA.46 + TELA.51 + TELA.56) TO TELA.61
ENTRY NOTAX.CAMPO_60 TELA.61

ENTRY NOTAX.DATA_ENTREGA TELA.62

CALC (TELA.15 + TELA.20 + TELA.25 + TELA.30 + TELA.35 + TELA.40 + ;


TELA.45 + TELA.50 + TELA.55 + TELA.60) TO TELA.63
ENTRY NOTAX.CAMPO_61 TELA.63

GOTOXY 24 0
SCREENMODE 78 ON
PAUSE ' Imprimir NOTA agora (S/N) ? ' WAIT X
SCREENMODE 31 ON
IF_ X IN 'Ss' GOTO NT
IF_ X IN 'Nn' GOTO VOLTA

CLEARXY 24 0
VOLTA:
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 317
CLEARXY 24 0

RETURN

ENTER.SAVE:
CALC (CLIENTES.CONTROLE + 1) TO CLIENTES.CONTROLE
RETURN

ENTER.EDIT:
CALC (CLIENTES.CONTROLE - 1) TO CLIENTES.CONTROLE
RETURN
ENTEREND
ABORT

NT:
PRINT TELA.2 TO NOTAS.1
PRINT TELA.3 TO NOTAS.2
PRINT TELA.4 TO NOTAS.3
PRINT TELA.5 TO NOTAS.4
PRINT TELA.6 TO NOTAS.5
PRINT TELA.7 TO NOTAS.6
PRINT TELA.8 TO NOTAS.7
PRINT TELA.9 TO NOTAS.8
PRINT TELA.10 TO NOTAS.9
PRINT TELA.11 TO NOTAS.10
PRINT TELA.12 TO NOTAS.11
PRINT TELA.13 TO NOTAS.12
PRINT TELA.14 TO NOTAS.13
PRINT TELA.15 TO NOTAS.14
PRINT TELA.16 TO NOTAS.15
PRINT TELA.17 TO NOTAS.16
PRINT TELA.18 TO NOTAS.17
PRINT TELA.19 TO NOTAS.18
PRINT TELA.20 TO NOTAS.19
PRINT TELA.21 TO NOTAS.20
PRINT TELA.22 TO NOTAS.21
PRINT TELA.23 TO NOTAS.22
PRINT TELA.24 TO NOTAS.23
PRINT TELA.25 TO NOTAS.24
PRINT TELA.26 TO NOTAS.25
PRINT TELA.27 TO NOTAS.26
PRINT TELA.28 TO NOTAS.27
PRINT TELA.29 TO NOTAS.28
PRINT TELA.30 TO NOTAS.29
PRINT TELA.31 TO NOTAS.30
PRINT TELA.32 TO NOTAS.31
PRINT TELA.33 TO NOTAS.32
PRINT TELA.34 TO NOTAS.33
PRINT TELA.35 TO NOTAS.34
PRINT TELA.36 TO NOTAS.35
PRINT TELA.37 TO NOTAS.36
PRINT TELA.38 TO NOTAS.37
PRINT TELA.39 TO NOTAS.38
PRINT TELA.40 TO NOTAS.39
PRINT TELA.41 TO NOTAS.40
PRINT TELA.42 TO NOTAS.41
PRINT TELA.43 TO NOTAS.42
PRINT TELA.44 TO NOTAS.43
PRINT TELA.45 TO NOTAS.44
PRINT TELA.46 TO NOTAS.45
PRINT TELA.47 TO NOTAS.46
PRINT TELA.48 TO NOTAS.47
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 318
PRINT TELA.49 TO NOTAS.48
PRINT TELA.50 TO NOTAS.49
PRINT TELA.51 TO NOTAS.50
PRINT TELA.52 TO NOTAS.51
PRINT TELA.53 TO NOTAS.52
PRINT TELA.54 TO NOTAS.53
PRINT TELA.55 TO NOTAS.54
PRINT TELA.56 TO NOTAS.55
PRINT TELA.57 TO NOTAS.56
PRINT TELA.58 TO NOTAS.57
PRINT TELA.59 TO NOTAS.58
PRINT TELA.60 TO NOTAS.59
PRINT TELA.61 TO NOTAS.60 // QTDE PECAS
PRINT TELA.62 TO NOTAS.63
PRINT TELA.63 TO NOTAS.61
SYSDATE NOTAS.62
OUTPUT NOTAS
FORMFEED
SCREENMODE 31 ON
GOTO VOLTA
KEYPROC KEY.HELP
PAGE HELP AT 06 19 COLORS 31 78
INKEY PAGEEND
ENTAGAIN
RETURN
KEYPROC KEY.ESCAPE
CHAIN 'TELA2'
RETURN

/*

// Este programa remove os pontos, barra e hifen (../-) do CGC.


// Isto é necessário para transforma-lo somente em número.
// CGC = > 83.127.345/0001-20
// CGC = > 83127345000120

STRING C 18 C1 2 C2 3 C3 3 C4 4 C5 2
STRING CGC 14

MOVE '83.127.345/0001-20' TO C

LEFT C TO C1 2
MID C TO C2 3 4 // nr 3 é o nr de letras p/ extrair, 4 é posiç╞o inicial.
MID C TO C3 3 8
MID C TO C4 4 12
RIGHT C TO C5 2
MOVE '' TO CGC
APPEND CGC C1 C2 C3 C4 C5

GOTOXY 10 10
SHOW ' CGC : ' C1
GOTOXY 11 10
SHOW ' CGC : ' C2
GOTOXY 12 10
SHOW ' CGC : ' C3
GOTOXY 13 10
SHOW ' CGC : ' C4
GOTOXY 14 10
SHOW ' CGC : ' C5
GOTOXY 16 10
SHOW ' CGC COMPLETO SEM ( . . / - ) => ' CGC

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 319


/TELAA
╔═══════════════════════════════════════════════════════════════════════════╗
║ Empresa _____________________________

║───────────────────────────────────────────────────────────────────────────║
/TELA
│ │
│ CADASTRO DE EMPRESAS

│ ════════════════════

│ │



│ Nome......: <______________________________>

│ Endereco..: ______________________________

│ Cidade....: ____________________ Estado: __

│ C.G.C.....: __________________ Inscr.: _______________



│ Data de Encerramento.....: __/__/__

│ Ultima Pagina do Registro: __.

│ Data Atualizacao Custos..: __/__/__



║───────────────────────────────────────────────────────────────────────────║
║ [ESC] Retorna Menu [F6] Exclui Regs. [F9] Limpa Campos Data: __/__/__
╚═══════════════════════════════════════════════════════════════════════════╝
/HELP1
║░░░░░░░░░░░░░░░░░░░░░░░░░░░░____________________░░░░░░░░░░░░░░░░░░░░░░░░░░║

║ESC Quando pressionar esta tecla voce ira retornar ao MENU ANTERIOR. ║
║ O programa solicitara confirmacao. ║

║F5 Esta tecla de funcao ira INSERIR uma linha no pe/fundo do video para ║
║ fazer calculos, assim voce nao precisa de uma calculadora ao seu lado.║
║ (Esta linha e' a CALCULADORA DO DATAFLEX). ║
║ O resultado do calculo podera ser inserido/incluido no campo onde o ║
║ cursor for posicionado. ║


║F6 Esta tecla de funcao ira APAGAR/ELIMINAR o registro que estiver na me-║
║ moria. Antes de apagar um registro sempre sera solicitado confirmacao.║


║F9 Esta tecla de funcao ira LIMPAR OS CAMPOS da tela. Se voce comecou a ║
║ digitar um registro e este estava errado, tecle F9 para limpar o campo║
║ e reiniciar a digitacao. ║

║ Tecle ENTER ║
╙──────────────────────────────────────────────────────────────────────────╜

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 320


/TELA_MENSAGEM
________________________________________ _
/*

#INCLUDE CM.MCR

PAGE TELAA AT 01 01
SCREENMODE 112 ON
CENTER 'Sistema de Materiais/Custos' TO TELAA.1
SCREENMODE 112 OFF

PAGE SET TELA AT 04 01 COLORS 15 7


PAGE SET TELA_MENSAGEM AT 24 20 COLORS 112 112

DATE DIA HH MM SS
SYSDATE DIA HH MM SS
MOVE DIA TO TELA.10

STRING HTECLA 1 XESTADOS 100 XPONTO 1

MOVE 'RO/AC/AM/RR/PA/AP/MA/PI/CE/RN/PB/PE/AL/FN' TO XESTADOS


APPEND XESTADOS 'SE/BA/MG/ES/RJ/SP/PR/SC/RS/MS/MT/GO/DF'

KEYPROC KEY.HELP GOSUB AJUDA


KEYPROC ON

AUTOPAGE TELA
NAME XNOM
NAME XEND
NAME XCID XEST
NAME XCGC XINSCR
NAME XDTA_ENC
NAME XULT_PAG
NAME XDTA_CUST

AUTOPAGE TELA_MENSAGEM
NAME XMENSAGEM
NAME XCONFIRMA
FORMAT XCONFIRMA {AUTORETURN,CAPSLOCK,CHECK="SN"}

FORMAT TELA.1 THRU TELA.9 {AUTORETURN,AUTOBACK}

OPEN SMCP016

ENTER SMCP016
AUTOPAGE TELA 1

ENTRY SMCP016.NOMEMP XNOM {AUTOFIND,NOPUT}


ENTRY SMCP016.ENDEMP XEND {CAPSLOCK}

ENTRY SMCP016.CIDEMP XCID {CAPSLOCK}


ENTRY SMCP016.ESTEMP XEST {CAPSLOCK,CHECK=XESTADOS}

CGC:
ENTRY SMCP016.CGCEMP XCGC

CGC_CHECK XCGC
[ ERR] BEGIN
ERROR 999 ' C.G.C INVALIDO ... '
GOTO CGC
END
Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 321
MID XCGC TO XPONTO 1 3
IF XPONTO EQ '.' GOTO PULA_INSERTS

INSERT '.' IN XCGC AT 3


INSERT '.' IN XCGC AT 7
INSERT '/' IN XCGC AT 11
INSERT '-' IN XCGC AT 16

PULA_INSERTS:
ENTRY SMCP016.INSEMP XINSCR
ENTRY SMCP016.DATENC XDTA_ENC {RANGE=01/01/91,31/12/99}
ENTRY SMCP016.PAGREG XULT_PAG
ENTRY SMCP016.DTATUL XDTA_CUST {RANGE=01/01/91,31/12/99}

DISPLAY "Deseja INCLUIR/ALTERAR este registro ?" TO XMENSAGEM


DISPLAY "S" TO XCONFIRMA
ACCEPT XCONFIRMA
IF XCONFIRMA EQ "S"
CLEARXY 24 00
GOTO ENTER$.SAVE
ELSE
CLEARXY 24 00
GOTO ENTRYSEC
RETURN
ENTEREND
ABORT
//------F6-------------------------------------------------------------------
KEYPROC KEY.DELETE
KEYPROC ON
[ ~ ENT$QUERY] BEGIN
ERROR 999 "Nao ha registro no BUFFER - SMCP016 (16)"
RETURN ENTRYSEC
END
DISPLAY "Deseja EXCLUIR este registro ?" TO XMENSAGEM
DISPLAY "N" TO XCONFIRMA
ACCEPT XCONFIRMA

IF XCONFIRMA EQ "S"
CLEARXY 24 00
GOTO ENTER$.DELETE
ELSE
CLEARXY 24 00
GOTO ENTRYSEC
RETURN

//------ESC------------------------------------------------------------------
KEYPROC KEY.ESCAPE
KEYPROC ON
DISPLAY "Deseja retornar ao MENU ?" TO XMENSAGEM
DISPLAY "S" TO XCONFIRMA
ACCEPT XCONFIRMA
IF XCONFIRMA EQ "S"
CLEARSCREEN
CHAIN 'SMCM001'
ELSE
CLEARXY 24 00
GOTO ENTRYSEC
RETURN

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 322


//------F1-------------------------------------------------------------------
AJUDA:
PAGE HELP1 AT 03 00 COLORS 15 7
SCREENMODE 112 ON
CENTER 'Materiais & Custos' TO HELP1.1
SCREENMODE 112 OFF
ENTAGAIN
INKEY HTECLA
RETURN
//---------------------------------------------------------------------------
KEYPROC KEY.UP
KEYPROC KEY.FIELD
BACKFIELD
RETURN
//---------------------------------------------------------------------------

/TELA
┌────▌________▐────────────────────────────────────────────┐
█ █
█ Cod. Banco:<___.> █
█ Nome Banco: _c______________________________________ █
█ Agencia: _c_____________ Conta: _c_______________ █
█ Cidade: _c_______________________ Fone: ____________ █
█ █
└──────────────────────────────────────────────────────────┘
ESC-Sai F2-Volta F3-Procura F6-Apaga F10-Grava
/*

MENU_REQUIRED

PAGE TELA AT 07 10 COLORS 31 30

SCREENMODE 78 ON
MOVE ' BANCOS ' TO TELA.1
SCREENMODE 31 ON

OPEN BANCOS

ENTER BANCOS
AUTOPAGE TELA 2

MOVE 9999 TO BANCOS.COD_BANCO // para mostrar último código


FIND LT BANCOS BY INDEX.1
[ FOUND] DISPLAY BANCOS.COD_BANCO TO TELA.2

ENTRY BANCOS.COD_BANCO TELA.2 {AUTOFIND,NOPUT}

CLEAR BANCOS
MOVE TELA.2 TO BANCOS.COD_BANCO
FIND EQ BANCOS BY INDEX.1

IF TELA.2 EQ 0 BEGIN
GOTOXY 24 0
SCREENMODE 78 ON
SHOW ' Zero NAO e codigo - Tecle ENTER '
INKEY PAGEEND
SCREENMODE 31 ON
CLEARXY 24 0
GOTO ENT$LP
END

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 323


ENTRY BANCOS.NOME_BANCO TELA.3
ENTRY BANCOS.AGENCIA TELA.4
ENTRY BANCOS.CONTA TELA.5

ENTRY BANCOS.CIDADE TELA.6


ENTRY BANCOS.FONE TELA.7
RETURN
ENTEREND
ABORT

KEYPROC KEY.ESCAPE
CHAIN 'TELA2'
RETURN

The end ☺ ( I made thi tutorial in 1995 I guess... lol )

Dataflex 2.3b ( for Ms-Dos ) - by Jurandir A. Pellin 324

Das könnte Ihnen auch gefallen