Codificador de Telas de Aplicação para COBOL
Comparada com a técnica de tratamento de telas via DISPLAY/ACCEPT posicionados, o uso dos recursos da SCREEN SECTION facilita bastante a identificação dos elementos das telas já que ficam concentrados em um só bloco independente da lógica do programa, mas ainda assim não se pode visualizar a tela e a declaração dos números de posicionando é pouco amigável.
Utilizando um gabarito de tela que pode ser definido com um editor de textos qualquer e transformando-o em declarações SCREEN SECTION com o CTAC, ganha-se bastante produtividade e legibilidade.
A linguagem de definição do gabarito é praticamente a mesma tradicionalmente usada nas antigas folhas de codificação.
A letra X maiúscula equivale a uma posição de um campo alfanumérico. Para que o codificador não interprete palavras que contenham a letra X como declaração de variáveis (Máscara de edição), é necessário que a cadeia de caracteres apresente pelo menos uma repetição de si próprio ou de outro caractere reconhecido como PICTURE COBOL, ou entre espaços, do contrário será tratada como literal. Para definir uma variável com apenas um byte de tamanho, foi convencionado o caractere @.
Para os campos numéricos, é aplicado o mesmo princípio utilizando os caracteres 9 e #. Para campos numéricos com supressão de zeros não significativos, os caracteres são Z e ?.
Para atribuir nomes a variáveis criadas na codificação, é necessário definir uma tabela de nomes que será previamente carregada, e durante a codificação os nomes serão atribuídos a cada máscara de edição na mesma sequencia.
O símbolo =( posicionado na primeira coluna indica início da tabela de nomes, a vírgula indica fim do nome. Apesar da linguagem COBOL não aceitar nomes com espaços, um espaço em branco não indica fim do nome pois além do nome outros atributos suportados pela linguagem COBOL podem ser declarados na sequencia.
Por fim, o símbolo )= indica o fim do último campo e da tabela de nomes.
Espaços em brancos só tem efeito para posicionamento. Para declarar um espaço em branco na tela, é preciso utilizar o caractere undescore "_".
Exemplo:
Gabarito definido com o editor.
Matrícula XXXX X Nome XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Sexo X Cargo XBXBXBXBXBXBXBXBXBX Salário ZZ.ZZZ.ZZ9,99 Situação X Tipos X X X X X Admissão 99/99/9999 Obs XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX =( CTAC-MATRICULA USING FILE-MATRICULA CTAC-MATRICULA USING FILE-DV CTAC-NOME USING FILE-NOME CTAC-SEXO USING FILE-SEXO CTAC-CARGO USING FILE-CARGO CTAC-SALARIO USING FILE-SALARIO BLANK ZERO CTAC-SITUACAO USING FILE-SITUACAO CTAC-TIPOS USING FILE-TIPO1 CTAC-TIPOS USING FILE-TIPO2 CTAC-TIPOS USING FILE-TIPO3 CTAC-TIPOS USING FILE-TIPO4 CTAC-TIPOS USING FILE-TIPO5 CTAC-ADMISSAO USING FILE-ADMISSAO CTAC-OBSERVACAO USING FILE-OBSERVACAO CTAC-MENSAGEM FROM MENSAGEM-ERRO)= |
Se o editor em uso for o Kedit, basta comandar CTAC na linha de comando em plena edição do gabarito.
Supondo que o gabarito tenha sido salvo como EXEMPLO.CTA, o comando CTAC EXEMPLO teria o seguinte efeito:
COBOLware 7.0 C:\COBOLware>CTAC EXEMPLO CTAC Codificador de Telas de Aplicação para COBOL COBOLware 6.0 Copyright (C) 1984-2024 COBOLware Services Ltda. Codificando EXEMPLO.CTA... Trecho de SCREEN SECTION codificado em: EXEMPLO.LAY COBOLware C:\COBOLware> |
Conteúdo do arquivo gerado [EXEMPLO.LAY]:
01 CTAC-LIT-EXEMPLO. 05 LINE 02 COLUMN 04 VALUE "Matrícula". 05 LINE 04 COLUMN 04 VALUE "Nome". 05 LINE 06 COLUMN 04 VALUE "Sexo". 05 LINE 08 COLUMN 04 VALUE "Cargo". 05 LINE 10 COLUMN 04 VALUE "Salário". 05 LINE 12 COLUMN 04 VALUE "Situação". 05 LINE 14 COLUMN 04 VALUE "Tipos". 05 LINE 16 COLUMN 04 VALUE "Admissão". 05 LINE 18 COLUMN 04 VALUE "Obs". 01 CTAC-VAR-EXEMPLO. 05 CTAC-MATRICULA. 10 LINE 02 COLUMN 17 PIC X(004) USING FILE-MATRICULA. 10 LINE 02 COLUMN 22 PIC X(001) USING FILE-DV. 05 CTAC-NOME. 10 LINE 04 COLUMN 17 PIC X(030) USING FILE-NOME. 05 CTAC-SEXO. 10 LINE 06 COLUMN 17 PIC X(001) USING FILE-SEXO. 05 CTAC-CARGO. 10 LINE 08 COLUMN 17 PIC XBXBXBXBXBXBXBXBXBX USING FILE-CARGO. 05 CTAC-SALARIO. 10 LINE 10 COLUMN 17 PIC ZZ.ZZZ.ZZ9,99 USING FILE-SALARIO BLANK ZERO. 05 CTAC-SITUACAO. 10 LINE 12 COLUMN 17 PIC X(001) USING FILE-SITUACAO. 05 CTAC-TIPOS. 10 LINE 14 COLUMN 17 PIC X(001) USING FILE-TIPO1. 10 LINE 14 COLUMN 19 PIC X(001) USING FILE-TIPO2. 10 LINE 14 COLUMN 21 PIC X(001) USING FILE-TIPO3. 10 LINE 14 COLUMN 23 PIC X(001) USING FILE-TIPO4. 10 LINE 14 COLUMN 25 PIC X(001) USING FILE-TIPO5. 05 CTAC-ADMISSAO. 10 LINE 16 COLUMN 17 PIC 99/99/9999 USING FILE-ADMISSAO. 05 CTAC-OBSERVACAO. 10 LINE 18 COLUMN 17 PIC X(030) USING FILE-OBSERVACAO. |
Se o gabarito original for preservado, manutenções futuras também serão bem mais simples bastando retificar o gabarito e tornar a executar o codificador.
Caracteres especiais como molduras podem ser utilizados e serão tratados como literais, contudo este procedimento é pouco recomendável pois a codificação ASCII das molduras pode variar de um ambiente para outro prejudicando a portabilidade.