Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!

@ ... GET ...

Propósito

Obter dados digitados e atribuí-los a variáveis.

Sintaxe

@ <exp.N1>,<exp.N2> [SAY <exp> ...] GET <var> [PIC[TURE] <exp.C1> ] [<atrib1>] [WHEN <exp.L1>] [RANGE <exp.N3>,<exp.N4>] [VALID {[<exp.L2>] [DOUBLE]} MESSAGE <exp.C2> [<atrib2>]] [CASE <exp.L3> {EXIT|SKIP <exp.N5>}]

Argumentos

<exp.N1> e <exp.N2>

representam as coordenadas na tela do terminal: linha e coluna respectivamente.

SAY

determina que <exp> será exibida na posição especificada.

<var>

representa a variável que receberá o valor digitado.

PICTURE <exp.C1>

especifica uma máscara de edição para a variável.

<atrib1>

representa o modo de vídeo em que será exibida a variável.

WHEN <exp.L1>

especifica uma condição a ser satisfeita para que seja possível editar o GET. Quando a condição não for satisfeita o GET corrente é ignorado e o cursor move-se para o GET seguinte.

RANGE <exp.N3>,<exp.N4>

especifica um intervalo para aceitação dos dados.

<exp.N3>

representa o limite inferior

<exp.N4>

representa o limite superior do intervalo, onde <exp.N3> não deve ser maior que <exp.N4>.

VALID {[<exp.L2>] [DOUBLE]}[MESSAGE <exp.C2> [<atrib2>]]

especifica que só serão aceitos os dados que satisfaçam a condição e/ou os dados que forem digitados duas vezes consecutivas. <exp.L2> representa a condição a ser testada. Caso retorne falso o cursor retorna ao GET para que o usuário digite um novo valor. A cláusula DOUBLE faz com que valores digitados duas vezes consecutivas sejam aceitos mesmo que não satisfaçam <exp.L2>.

MESSAGE

determina que uma mensagem seja exibida na linha de mensagem quando <exp.L2> retornar falso (.F.) ou durante a primeira digitação quando a cláusula DOUBLE estiver presente no comando.

<atrib2>

é o modo de vídeo em que será exibida a mensagem.

CASE <exp.L3> {EXIT | SKIP <exp.N5>}

especifica que um desvio de GETs ocorrerá, caso uma condição retorne verdade (.T.). a cláusula EXIT determina o encerramento do READ. A cláusula SKIP <exp.N5> determina o sentido e o número de GETs que serão saltados dependendo do valor de <exp.N5>, se negativo desvia para GETs anteriores, se positivo para GETs posteriores.

Utilização

O comando @ ... GET ... é um dos mais utilizados para entrada de dados via teclado pois possibilita criticar, verificar consistência, formatar e editar dados em tempo de digitação.

Se utilizada a opção SAY <exp>, a digitação da variável é aguardada a direita de <exp>.

Para formatar a variável basta utilizar a opção PICTURE <exp.C1> caso contrário a variável não é formatada e será apresentada com o tamanho de acordo com o tipo da variável.

As opções WHEN e VALID determinam uma pré-condição e uma pós-condição, respectivamente.

A opção WHEN é efetuada antes da execução do GET.

A opção VALID é avaliada após o término do GET.

As opções WHEN, RANGE, VALID e CASE são muito úteis, pois a validação dos dados é feita durante a fase da digitação, reduzindo a necessidade de conferências posteriores.

Exemplo

O exemplo a seguir mostra-nos a utilização da cláusula RANGE. Note que os valores digitados estarão em modo de vídeo realçado (BOLD).

num = 0

@ 10,10 SAY "digite um numero entre 0 e 10 " rev;

GET num BOLD RANGE 1,9

READ

O exemplo a seguir demonstra a utilização das cláusulas WHEN, VALID, DOUBLE e MESSAGE.

No primeiro GET só será permitido digitar "SIM" ou "NAO". Qualquer outro valor será recusado e será emitida a mensagem "resposta errada". No segundo GET só serão aceitos valores entre 0 e 5, inclusive, ou qualquer outro valor numérico que seja digitado duas vezes consecutivas. O último GET só será executado se o valor da variável <simnao> for "SIM".

simnao = ""

filhos = 0

sal = 0

@ 10,10 SAY "Trabalha SIM ou NAO ? " GET simnao; PIC "!!!" VALID simnao = "SIM" .or. simnao = "NAO" ;

MESSAGE "Resposta Errada"

@ 11,10 SAY "Numero de Filhos ? " GET filhos PIC "99";

VALID filhos >=0 .and. filhos <=5 DOUBLE

@ 12,10 SAY "Salario " GET sal PIC "zzz.zzz,99" ;

WHEN simnao = "SIM"

READ

Consulte

$NOGET,$NOSCREEN,ACCEPT,FUNCTION, INPUT,PICTURE,PROCEDURE, READ TEXT, WAIT, SET ALARM, SET ALIGN, SET ATRIBUTE, SET BREAK SET CLEAR, SET CONFIRM, SET CURSOR, SET DECIMALS, SET DELIMITERS , SET EDIT, SET INTENSITY, SET KEY, SET PF,SET POINT,SET ROLL,SET TAB,SET UPDATE CONF( ), INKEY( ), LASTKEY( ), READKEY( ), READVAR( ) e TRANSFORM( ).

Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!