CLIC

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-2020 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.

Veja também

Print Report
PDFWrite
Spool
Spool File
Relator