Curso de COBOL - Aula 6

Notas da aula de 20.12.2008 (Aula #6) do Curso de COBOL da

Escola Alcides Maya com o Professor Roberto Cabral de Mello Borges

Comandos de tela e teclado

 DISPLAY

 ACCEPT

 “SCREEN SECTION”

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

Sintaxe do DISPLAY:

DISPLAY (posição) (ERASE) (, variável, string) UPON mnemonico

Posição: (linha, coluna)

* ERASE +-= clearscreen 

Exemplos de DISPLAY:

 DISPLAY A, B, C.

 DISPLAY “X = ”, X.

 DISPLAY (2, 10) A

 DISPLAY (LIN, COL) B

 DISPLAY ERASE

 DISPLAY (LIN, 12) UPON TELA1

01 DATAS.

03 DATA-1.

05 DIA PIC 99.

05 MES PIC 99.

05 ANO PIC 99.

03 DATA-2.

05 DIAS PIC 999.

05 ANO-2 PIC 99.

03 HORARIO.

05 HORA PIC 99.

05 MINUTO PIC 99.

05 SEGUNDOS PIC 9999.

* Alternativa para os segundos sem centésimos:

05 SEGUNDOS PIC 99.

05 FILLER PIC 99.

03 TECLA PIC 99.

* 00-ENTERdoTecladoAlfabético, 01-ESC, 02a11-F1aF10

* (só estas são reconhecidas como dois dígitos)

77 CIDADE PIC X(25) VALUE “PORTO ALEGRE”.

77 CIDADE PIC XX VALUE “RS”.

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

Sintaxe do ACCEPT:

ACCEPT variável FROM (DATE, DAY, TIME, ESCAPE KEY).

ACCEPT (linha, coluna) variável.

ACCEPT (linha, coluna) variável WITH opção.

Opção: (PROMPT, UPDATE, AUTO-SKIP, SPACE-FILL, ZERO-FILL,

TRAILING SIGN, LENGTH-CHECK, BEEP, LEFT-JUSTIFIED,

RIGHT-JUSTIFIED, EMPTY-CHECK, NO-ECHO)

Exemplos do ACCEPT:

 ACCEPT X.

 ACCEPT DATA-1 FROM DATE. * DATE tem 6 dígitos

 ACCEPT DATA-2 FROM DAY. * DAY tem 6 dígitos

 ACCEPT HORARIO FROM TIME. * TIME tem 8 dígitos

 ACCEPT TECLA FROM ESCAPE KEY.



 ACCEPT (8, 5) x.

 ACCEPT (LIN, 9) Y.

 ACCEPT (10, COL) Z.



 ACCEPT (3, 5) NOME WITH PROMPT.

 ACCEPT (3, 50) DATA-NASC WITH PROMPT.

 ACCEPT (8, 1) CIDADE WITH UPDATE.

* traz da variável o valor atual (sugere um default) 

 ACCEPT (2, 4) CEP WITH AUTO-SKIP.

* salta direto para o próximo campo quando se termina de preencher o campo.

 ACCEPT (LIN, 4) NOME WITH SPACE-FILL.

* preenche com espaços (SPACE-FILL) ou zeros (ZERO-FILL) as posições não preenchidas

 ACCEPT (LIN, 48) FONE WITH SPACE-FILL.

* padrão para campos PIC A ou PIC X é preencher à direita, e para PIC 9, à esquerda.

 ACCEPT (LIN, 60) VALOR WITH ZERO-FILL.

 ACCEPT (LIN, 6) DATA-NASC WITH LEFT-JUSTIFY.

 ACCEPT (LIN, 20) DATA-ADM WITH RIGHT-JUSTIFY.

 ACCEPT (6, 6) VALOR WITH TRAILING-SIGN.

* “trailing” o que vem atrás (trailer) :-P  sinal vai depois (à direita) do número.

 ACCEPT (12, 15) CPF WITH LENGTH-CHECK.

* verifica o comprimento do campo (cursor fica parado no campo) ignora enter e tab.

 ACCEPT (20, 10) RESPOSTA WITH BEP

* Faz soar o “BEEP” da máquina.

 ACCEPT (4, 20) SENHA WITH NO-ECHO.

* ***** (não exibe o caractere digitado.)

 ACCEPT (LIN, 12) E-MAIL WITH EMPTY-CHECK.

* não permite sair de campos obrigatórios que estejam vazios.

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

“SCREEN SECTION”

DATA DIVISION. * tem que ser nesta ordem:

FILE SECTION.

WORKING-STORAGE SECTION.

SCREEN SECTION.

REPORT SECTION.

Sintaxe da SCREEN SECTION:

01 nome-tela (AUTO) (SECURE).

* AUTO: salta automaticamente para o próximo campo ao encerrar um campo.

* SECURE: (é o NO-ECHO) preenche todos os campos digitados com “*”.

* se a opção vai no nível 01, vale para todos os subníveis!

02 a 49 (BLANK SCREEN, LINE (PLUS #), COLUMN (PLUS #),

BLANK LINE, BELL (* BEEP), (HIGHLIGHT, BLINK),

VALUE string, PIC string,

FROM campo-1, TO campo-2, USING campo-3,

BLANK WHEN ZERO, JUSTIFIED RIGHT, AUTO, SECURE)

SCREEN SECTION.

01 LIMPA-TELA.

03 LINHA BLANK SCREEN.

01 TELA-CADASTRO.

03 LINE 2.

05 COLUMN 1 PIC X(6) VALUE “NOME: “.

05 COLUMN 7 PIC A(36) FROM NOME.

* só apresenta a informação na tela (tem que ser por campo).

05 COLUMN 7 PIC A(36) TO NOME.

* só captura as informações digitadas (tem que ser por campo – tem uns que não pode mudar!).

05 COLUMN 7 PIC A(36) USING NOME.

* apresenta e permite alterar (tem que ser por campo)! 

05 COLUMN 47 PIC X(11) VALUE “DATA-NASC”.

05 COLUMN 58 PIC 99/99/99 USING DATA-N.

05 COLUMN 68 PIC X(6) VALUE “SEXO”.

05 COLUMN 75 PIC A USING SEXO.

03 SEXO-EXTENSO.

05 FILLER PIC X(18) VALUE “MASCULINO

- “FEMININO

- “”.

03 SEXO-RED REDEFINES SEXO-EXTENSO.

05 TAB-SEXO PIC X(9) OCCURS 2 TIMES.

03 LINE 4. * linha 3 ficou “em branco” (pulamos).

05 COLUMN 1 PIC X(4) VALUE “RUA”.

05 COLUMN 5 PIC X(25) USING RUA.

05 COLUMN 32 PIC X(10) VALUE “NUM/COMPL”.

05 COLUMN 42 PIC X(10) USING COMPLEMENTO.

05 COLUMN 54 PIC X(4) VALUE “CEP”.

* cuidar para que o conteúdo dos últimos campos não passe da coluna 80

05 COLUMN 58 PIC 9(8) USING CEP HIGHLIGHT.

* HIGHLIGHT = negrito (ou HIGHLIGHT, ou BLINK) (são excludentes)

03 LINE 6. * linha 5 ficou “em branco” (pulamos).

05 COLUMN 1 PIC X(6) VALUE “FONE”.

05 COLUMN 7 PIC X(11) USING FONE JUSTIFIED RIGHT.

* se digitar sem o DDD, ficam vazias essas posições, não as últimas.

05 COLUMN 20 PIC X(7) VALUE “E-MAIL”.

05 COLUMN 27 PIC X(50) USING E-MAIL UNDERLINE.

* campo E-MAIL aparece sublinhado! (e preserva o underscore)

03 LINE 7.

05 COLUMN 1 PIC X(6) VALUE “SENHA”.

05 COLUMN 7 PIC X(12) USING SENHA SECURE.

05 COLUMN 20 PIC X(11) VALUE “NUM.FILHOS”.

05 COLUMN 32 PIC 99 USING FILHOS BLANK WHEN ZEROS.

* seria deselegante o cadastro dizer “00 filhos”

E agora, a parte mais legal!  Como fazer essa tela aparecer “na tela”?

PROCEDURE DIVISION.

DISPLAY LIMPA-TELA.

LOOP.

DISPLAY TELA-CADASTRO.

ACCEPT TELA-CADASTRO.

READ ...

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

Acesso a arquivos

 Discos: seqüencial, randômico, indexado

 Outros meios: só seqüencial

SELECT DISCO-1 ASSIGN TO DISK

ORGANIZATION IS (SEQUENTIAL, INDEXED, RELATIVE)

ACCESS MODE (SEQUENTIAL, RANDOM, DYNAMIC)

(RELATIVE KEY, RECORD KEY) chave-acesso.

* Chave-acesso é um campo do arquivo que deve ser único!

* Chave serve para READ e WRITE (“file status”)

 READ DISCO-1 INVALID KEY comando.

 READ NEXT DISCO-1 AT END comando.

 NEXT: acesso sequencial num arquivo randômico ou indexado.

Curiosidades:

 Tamanho máximo dos textos é de 1920 posições (24 linhas x 80 colunas) (80 colunas do cartão perfurado!)

 Eleições dos Estados Unidos em 2008 usaram cartões em dois estados.

 Proporções: telas-padrão: 4:3 (+-= 1,33); wide-screen: 16:9 (+-= 1,77), + próxima da proporção de ouro (1,66).

 Data do COBOL em formato “gregoriano” (usual - DATE): 20/12/08 ou formato “Juliano” (DAY) 355/08 (economiza um byte :-P e facilita operações)

 Enter do teclado numérico no mac tem função diferente do Enter do teclado alfabético – no Excel, por exemplo, entra a variável sem mudar de célula.

 PROMPT: marcador de inserção: COBOL pode marcar o campo a receber dados com “....” ou “---“ marcando quantos caracteres ou dígitos tem!

 O Hotmail não presta, nem o Terra, pq tem muuuuuuito spam, e há servidores que já deletam direto.

 Número da agência de qualquer banco tem 4 dígitos por padrão do Banco Central. Número da conta geralmente tem 6 dígitos.

 Senhas de contas em bancos têm dígitos, e outra senha tem letras. Geralmente a tela para a de letras não é amigável: embaralha letras e os números. :-P

 Padrão dos interruptores é Liga pra cima, Desliga para baixo (nos verticais); Liga para dentro, Desliga para fora (na direção da porta) (nos horizontais).

 “Síndrome de Windows”: programas que fazem perguntas bobas (“Tem certeza?”) para atividades que têm volta. (deveria perguntar só para as irreversíveis)

 Fontes de letras Verdana e Geórgia (as da Microsoft) fazem o sublinhado (underline) passar POR CIMA (esconder) o underscore! 