
Obter dados digitados e atribuí-los a variáveis.
@ <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>}]
|
<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. |
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.
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
$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( ).
