Codificador de Linhas de Impressão para COBOL
Definir um layout de impressão em COBOL exige bastante codificação e algumas horas de trabalho. Com este utilitário, esta tarefa é simplificada e acelerada.
O gabarito de impressão pode ser definido com um editor de textos qualquer e convertido em definições de linhas de impressão em COBOL.
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 do contrário será tratada como literal. Para definir uma variável com apenas um byte de tamanho foi convencionado o caractere @.
Para 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 de campos e =[ indica inicio da tabela de nomes de linhas. A vírgula indica fim do nome. A linguagem COBOL não aceita nomes com espaços mas 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.
Na definição de nome de campo, pode ser usada a cláusula FROM indicando que o nome deve ser usado para referência do campo de origem no preenchimento automático.
Por fim, o símbolo )= indica o fim do último campo e da tabela de nomes de campos e ]= o fim da tabela de nomes de linhas.
Exemplo:
Gabarito definido com o editor.
COBOLware Services Ltda. RELACAO DE FUNCIONARIOS PAGINA ZZZ.ZZ9 FP0010 EMISSAO 99/99/99 ------------------------------------------------------------------------------------------------------------------------------------ MATR NOME S CARGO SALARIO TIPOS ADMISSAO DEMISSAO OBSERVACAO ------------------------------------------------------------------------------------------------------------------------------------ XXXXXX-X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9 XBXBXBXBXBX ZZ.ZZZ.ZZ9,99 ##### 99/99/99 99@99@99 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX T O T A L G E R A L ZZ.ZZZ.ZZZ.ZZ9,99 =[CAB-01]= =(PAGINA,DATA-EMISSAO)= =[CAB-02,TRACOS-01,CAB-03,TRACOS-02]= =[DETALHE]= =(FROM MATR,FROM DV,FROM NOME,FROM SEXO,FROM CARGO,FROM SALARIO BLANK ZERO FROM TIPO1,FROM TIPO2,FROM TIPO3,FROM TIPO4,FROM TIPO5 FROM ADMISSAO,FROM DD-DEM BLANK ZERO,FROM "/",FROM MM-DEM BLANK ZERO,FROM "/",FROM AA-DEM BLANK ZERO OBSERVACAO)= =[TOTAIS]= =(FROM TOTAL-GERAL BLANK ZERO)= |
Se o editor em uso for o Kedit, basta comandar CLIC na linha de comando em plena edição do gabarito.
Supondo que o gabarito tenha sido salvo como EXEMPLO.CLI, o comando CLIC EXEMPLO teria o seguinte efeito:
COBOLware C:\COBOLware>CLIC EXEMPLO CLIC Codificador de Linhas de Impressão para COBOL COBOLware 6.1 Copyright (C) 1984-2024 COBOLware Services Ltda. Codificando EXEMPLO.CLI... Trecho de WORKING-STORAGE SECTION codificado em: EXEMPLO.LAY Trecho de PROCEDURE DIVISION codificado em: EXEMPLO.CPY COBOLware C:\COBOLware> |
Conteúdo do arquivo gerado [EXEMPLO.LAY]: EXEMPLO.LAY:
01 LINHAS-DE-IMPRESSAO-CLIC. 02 CAB-01. 05 FILLER PIC X(055) VALUE "COBOLware Services Ltda. ". 05 FILLER PIC X(054) VALUE " RELACAO DE FUNCIONARIOS ". 05 FILLER PIC X(016) VALUE " PAGINA ". 05 PAGINA PIC ZZZ.ZZ9. 02 CAB-02. 05 FILLER PIC X(055) VALUE "FP0010 ". 05 FILLER PIC X(054) VALUE SPACES. 05 FILLER PIC X(015) VALUE " EMISSAO ". 05 DATA-EMISSAO PIC 99/99/99. 02 TRACOS-01 PIC X(132) VALUE ALL "-". 02 CAB-03. 05 FILLER PIC X(055) VALUE "MATR NOME S CARGO ". 05 FILLER PIC X(047) VALUE " SALARIO TIPOS ADMISSAO DEMISSAO OBSERVACAO". 02 TRACOS-02 PIC X(132) VALUE ALL "-". 02 DETALHE. 05 CLIC-0001 PIC X(006) VALUE SPACES. 05 FILLER PIC X(001) VALUE "-". 05 CLIC-0002 PIC X(001) VALUE SPACE. 05 FILLER PIC X(001) VALUE SPACE. 05 CLIC-0003 PIC X(030) VALUE SPACES. 05 FILLER PIC X(001) VALUE SPACE. 05 CLIC-0004 PIC 9(001) VALUE ZERO. 05 FILLER PIC X(001) VALUE SPACE. 05 CLIC-0005 PIC XBXBXBXBXBX. 05 FILLER PIC X(001) VALUE SPACE. 05 CLIC-0006 BLANK ZERO PIC ZZ.ZZZ.ZZ9,99. 05 FILLER PIC X(001) VALUE SPACE. 05 CLIC-0007 PIC 9(001) VALUE ZERO. 05 CLIC-0008 PIC 9(001) VALUE ZERO. 05 CLIC-0009 PIC 9(001) VALUE ZERO. 05 CLIC-0010 PIC 9(001) VALUE ZERO. 05 CLIC-0011 PIC 9(001) VALUE ZERO. 05 FILLER PIC X(001) VALUE SPACE. 05 CLIC-0012 PIC 99/99/99. 05 FILLER PIC X(001) VALUE SPACE. 05 CLIC-0013 BLANK ZERO PIC 9(002) VALUE ZEROS. 05 CLIC-0014 PIC X(001) VALUE SPACE. 05 CLIC-0015 BLANK ZERO PIC 9(002) VALUE ZEROS. 05 CLIC-0016 PIC X(001) VALUE SPACE. 05 CLIC-0017 BLANK ZERO PIC 9(002) VALUE ZEROS. 05 FILLER PIC X(001) VALUE SPACE. 05 OBSERVACAO PIC X(040) VALUE SPACES. 02 DETALHE. 05 FILLER PIC X(009) VALUE SPACES. 05 FILLER PIC X(041) VALUE "T O T A L G E R A L ". 05 CLIC-0018 BLANK ZERO PIC ZZ.ZZZ.ZZZ.ZZ9,99. 02 CLIC-LINHA PIC X(030) VALUE ALL "-". |
Conteúdo do arquivo gerado [EXEMPLO.CPY]: EXEMPLO.CPY:
EVAUATE CLIC-LINHA WHEN "DETALHE" MOVE MATR TO CLIC-0001 MOVE DV TO CLIC-0002 MOVE NOME TO CLIC-0003 MOVE SEXO TO CLIC-0004 MOVE CARGO TO CLIC-0005 MOVE SALARIO TO CLIC-0006 MOVE TIPO(1) TO CLIC-0007 MOVE TIPO(2) TO CLIC-0008 MOVE TIPO(3) TO CLIC-0009 MOVE TIPO(4) TO CLIC-0010 MOVE TIPO(5) TO CLIC-0011 MOVE ADMISSAO TO CLIC-0012 MOVE DD-DEM TO CLIC-0013 MOVE "/" TO CLIC-0014 MOVE MM-DEM TO CLIC-0015 MOVE "/" TO CLIC-0016 MOVE AA-DEM TO CLIC-0017 WHEN "TOTAIS" MOVE TOTAL-GERAL TO CLIC-0018 END-EVAUATE |
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.