Inicialmente este blog foi criado para armazenar algumas dicas e links de UNIX/Linux, OpenVMS, linguagem C, Assembly, TCP/IP e nerdezas afins. No entanto devido ao autor ter abandonado o seu plano de ser um super hacker e dominar o mundo (devido esposa, família, filhos, trabalho), a partir de 2012 este blog tem um tipo de nerdeza mais light (Android, Linux, RetroPie (retrogames), produtividade, e por aí vai). Estas dicas raramente serão criações minhas.

Mostrando postagens com marcador DCL. Mostrar todas as postagens
Mostrando postagens com marcador DCL. Mostrar todas as postagens

domingo, 19 de agosto de 2007

segunda-feira, 16 de julho de 2007

DCL: READ x INQUIRE

Dica para OpenVMS. Nada a ver com Linux, UNIX, FreeBSD e muito menos Windows.

Essa eu aprendi em algum texto encontrado em http://www.kgbreport.com/dcl.html, só não me lembro qual.

Usar READ no lugar de INQUIRE para entrada de dados faz com que o dado entrado NÃO fique no buffer do RECALL (ou seta para cima). O READ também não converte a string entrada para maiúsculo como o INQUIRE faz. Estas características do READ são favoráveis em vários momentos.

Exemplo:

$ READ SYS$COMMAND SIMBOLO /PROMPT="Entre com o dado: "


Execute o seguinte código e observe o que acontece:
$ INQUIRE I_STRING "INQUIRE PROMPT"
$ READ SYS$COMMAND R_STRING /PROMPT="READ PROMPT: "
$ WRITE SYS$OUTPUT "I_STRING: ",I_STRING
$ WRITE SYS$OUTPUT "R_STRING: ",R_STRING

Sugestão: entre com caracteres maiúsculos e minúsculos (exemplo: seu nome com a primeira letra maiúscula) e repita a entrada nas duas solicitações (read e inquire). Quando retornar ao prompt use seta para cima no teclado para observar o que está no buffer.

Quem gosta de fuçar VMS vai poder ler vários textos encontrados no endereço mencionado. Este é o único lugar na web em que achei tanto material instigante sobre VMS, sem ser os manuais da Digital (ou Compaq, ou HP, sei lá!).

Imprimindo caracteres com altura dupla no OpenVMS

Dica para OpenVMS. Nada a ver com Linux, UNIX, FreeBSD e muito menos Windows.

Isso e muitas outras coisas eu aprendi em http://www.kgbreport.com/dcl/198703.txt

Imprimir caracteres com altura dupla fica bem bonito! ;-) Veja o código:

$ ESC[0,32] = %X1B
$ ALTDC = ESC+"#3" ! parte de cima da string
$ ALTDB = ESC+"#4" ! parte de baixo da string
$ WRITE SYS$OUTPUT ALTDC,"Exemplo: meleu eh nerd!"
$ WRITE SYS$OUTPUT ALTDB,"Exemplo: meleu eh nerd!"

O código fica assim mesmo, muito esquisitão. Mas lendo o texto indicado acima e fuçando os códigos escritos lá tudo fica mais claro

Limpar a tela do terminal no OpenVMS

Dica para OpenVMS. Nada a ver com Linux, UNIX, FreeBSD e muito menos Windows.

Ainda não descobri um comando que limpa o terminal no OpenVMS. Um equivalente ao 'cls' no DOS ou um 'clear' nos shells do UNIX. Sendo assim eu costumo fazer a seguinte gambiarra:

$ CLS:==TYPE/PAGE NL:

e coloco isso no meu "LOGIN.COM". Agora é só usar 'CLS' no shell que ele limpará a tela do terminal.

Se o problema for muita poeira, é melhor usar um paninho levemente umedecido (he... he... he... piadinha sem graça...).

Atribuicao binaria a símbolos no DCL

Dica para OpenVMS. Nada a ver com Linux, UNIX, FreeBSD e muito menos Windows.

Para fazer atribuição bit-a-bit a um símbolo no DCL (variável do shell) utiliza-se o seguinte formato:

$ SIMBOLO[posicao_do_bit,numero_de_bits]=expressão

Por exemplo:
$ STRING[16,8]=90

atribui a letra 'Z' ao terceiro caracter de STRING. Só lembrando: primeiro caractere começa no bit 0, segundo caractere no bit 8, e terceiro caractere no bit 16.

E para se fazer uma atribuição em hexadecimal faz-se como no exemplo a seguir:
$ ESC[0,32]=%x1B

tags