Eu não faria como o GVC. Sistemas de informações normalmente utilizam as siglas dos Estados em vários pontos do programa. Se tivermos que fazer esse teste várias vezes, desperdiçamos espaço à toa. Descontamos aí o fato do colega GVC também ter feito um código de exemplo. Coisa simples, rápida e ficou isso aí. Mais uma vez, se alguém ver e tomar como a solução correta, vai atropelar os detalhes não tão óbvios. Meu exemplo, mais elaborado:
Código: Selecionar todos
cUF := Space(2)
@ 1,2 say "Estado:" get cUF picture "@A !!" valid AScan(UFsList(),cUF) > 0
read
function UFsList()
return {"XX","YY","ZZ",...}
Mas ainda há uma alternativa. Haja vista que as siglas dos Estados tem a única finalidade de conferência, é válido também apenas utilizar uma só string:
Código: Selecionar todos
cUF := Space(2)
@ 1,2 say "Estado:" get cUF picture "@A !!" valid cUF $ UFsList()
read
function UFsList()
return "XX,YY,ZZ,...
Um pouco mais simples e até mais econômico no processamento, embora isso não conte muito. Mas fica também mais legível.
De qualquer forma que seja, sendo UFsList() uma função global, de biblioteca, tenho apenas um pouco de espaço alocado para uma lista constante. Economizo no tamanho do EXE e facilito a manutenção.
Na verdade não faço de nenhuma dessas formas. Meu VALID teria uma função externa para emitir um aviso qualquer para o usuário, sinalizando o erro. Aliás, sou de opinião de que se o usuário errou, ele deve ser avisado, seja da forma que for. Se o teste já ficar no VALID não tem jeito. Por isso não uso essa forma.
Mas como utilizo comandos customizados, não vou entrar nos detalhes, pra não embaralhar a didática. Apenas deixo no ar a idéia básica da unicidade das funções. Vale o ditado: "cada macaco no seu galho". Se misturar várias tarefas em funções de apoio, só se perde. Trabalha mais? Em um primeiro momento sim. Mas ganha-se muito mais lá na frente.
Aliás, pra quem tem tempo pra estudar, aconselho a leitura de um livro qualquer sobre Projeto Estruturado de Sistemas. Recomento o da dupla Meiler/Page-Jones. É o tipo de leitura esclarecedora e gratificante.