Exemplos »»

Muitas vezes desejamos que algumas informações não apareçam no corpo do relatório e sim no cabeçalho. O VisRel permite criar até 100 variáveis que podem ser utilizadas apenas no cabeçalho e/ou rodapé, e são alteradas durante a geração do corpo do relatório. 

O exemplo abaixo demonstra como visualizar e imprimir uma listagem do cadastro de produtos com dados variáveis no cabeçalho (Gerente, Supervisor e Setor) utilizando a sintaxe do Cobol Micro Focus 4.5:

VisRel

1º Faça o download dos arquivos deste exemplo clicando aqui;

2º Abra o layout do relatório chamado "CADGER.vrl";

3º Veja abaixo que foram inseridas 3 variáveis (%_01_%) até (%_03_%), que serão substituídas depois pelo valor (texto ou número) atribuido durante a geração do corpo do relatório;

VisRelEdit

4º O programa abaixo foi configurado para que a cada alteração do nome do gerente durante a leitura do arquivo seja feita uma quebra de página (em azul) e alterados os campos no cabeçalho (em vermelho).

Obs.: Existem também as variáveis de <%_01_%> até <%_99_%>, que assumem o último valor setado na página anterior, exceto é claro se for a primeira página, nesse caso assumem o primeiro valor da mesma página. E as variáveis (%_01_%) até (%_99_%) assumem sempre o último valor setado na página corrente.

      $set ans85 noosvs mf
        environment division.
        configuration section.
        special-Names.
             decimal-point is comma.
        input-output section.
             select ARQ1
                    assign to disk
                    file status is w-seq-st.

             select seq-arq
                    assign to        disk
                    organization     line sequential
                    lock mode is     manual
                    status           w-seq-st.

        data division.
        file section.
        fd      ARQ1
                label record is standard
                value of file-id is w-nome-arq.
        01      REG1.
                03 fd-codigo         pic 9(04).
                03 fd-produto        pic x(30).
                03 fd-valunit        pic 9(6)v99.
                03 fd-gerente        pic x(30).
                03 fd-supervisor     pic x(30).
                03 fd-setor          pic x(30).

        fd      seq-arq
                value of file-id w-seq-id
                record is varying in size depending on w-seq-size.
        01      seq-reg.
                02 w-linha           pic x(1200).

        working-storage section.

        01      w-nome-arq           pic x(20)     value spaces.

        01      VisRel.
                03 w-numrel          pic x(10)     value "Rel0001".
                03 w-cod             pic 9(4).
                03 w-descr           pic x(30)     value spaces.
                03 w-valor           pic zz.zz9,99.
                03 w-conta           pic 9(4)      value zeros.
                03 w-gerente         pic x(30)     value spaces.
                03 w-supervisor      pic x(30)     value spaces.
                03 w-setor           pic x(30)     value spaces.

        01      w-status.
                02 w-seq-id          pic x(20)     value spaces.
                02 w-seq-st          pic xx        value zeros.
                02 w-seq-size        pic 9(06)     value zeros.

        01      w-texto.
                02 w-texto-A         pic x(26)     value spaces.
                02 w-texto-B         pic x(1174)   value spaces.

        01      w-RH.
                02 w-RH-A            pic x(2)      value spaces.
                02 filler            pic x(1)      value spaces.
                02 w-RH-B            pic x(1197)   value spaces.

        77      FUNCAO-35            pic x comp-x  value 35.
        77      CODERRO-2            pic x comp-x  value 0.
        01      COMANDO              pic x(250)    value spaces.
        01      COMMAND-LIN.
                02 COMMAND-LIN-LEN   pic x comp-x  value 0.

        screen section.

        procedure division.

        Inicio. 
******** Inicializar o arquivo com alguns registros ********
           move "CADGER.DAT" to w-nome-arq
           open output ARQ1

           perform 30 times
              add 1 to w-conta
              move w-conta to fd-codigo
              string "Produto ", w-conta
                     delimited by size into fd-produto
              compute fd-valunit = 100 * w-conta

              move "Fredi"  to fd-gerente
              move "Rosana" to fd-supervisor
              move "0001"   to fd-setor

              write REG1
           end-perform

           perform 100 times
              add 1 to w-conta
              move w-conta to fd-codigo
              string "Produto ", w-conta
                     delimited by size into fd-produto
              compute fd-valunit = 100 * w-conta

              move "Silvana"  to fd-gerente
              move "Eva" to fd-supervisor
              move "0002"   to fd-setor

              write REG1
           end-perform

           perform 150 times
              add 1 to w-conta
              move w-conta to fd-codigo
              string "Produto ", w-conta
                     delimited by size into fd-produto
              compute fd-valunit = 100 * w-conta

              move "Ricardo"  to fd-gerente
              move "Lucia" to fd-supervisor
              move "0003"   to fd-setor

              write REG1
           end-perform

           close ARQ1

           perform inicio-visrel

           open input ARQ1.

           move spaces to w-gerente
           move spaces to w-supervisor
           move spaces to w-setor

           go to le-arquivo.
           .

        inicio-visrel.
           move "CADGER.Rel" to w-seq-id
           open output seq-arq
           copy "cadger.cpy".

        le-arquivo.
           read arq1 next at end go to fecha-arquivo.

           if fd-gerente <> w-gerente
********     Mudou o gerente!
             if w-gerente <> spaces
********       Quebrar a página!
               move spaces to w-linha
               move "QP" to w-linha
               move function length(w-linha) to w-seq-size
               write seq-reg

             end-if

             move fd-gerente    to w-gerente
             move fd-supervisor to w-supervisor
             move fd-setor      to w-setor

********     Atribuir os valores das váriáveis de cabeçalho!
             move spaces to w-linha
             string "01 ", w-gerente
                    delimited by size into w-linha
             move function length(w-linha) to w-seq-size
             write seq-reg
             move spaces to w-linha
             string "02 ", w-supervisor
                    delimited by size into w-linha
             move function length(w-linha) to w-seq-size
             write seq-reg
             move spaces to w-linha
             string "03 ", w-setor
                    delimited by size into w-linha
             move function length(w-linha) to w-seq-size
             write seq-reg

           end-if

           move fd-codigo  to w-cod.
           move fd-produto to w-descr.
           move fd-valunit to w-valor.

           perform imp-dados.
           go to le-arquivo.

        fecha-arquivo.
            perform imp-rodape.
            close ARQ1.

        final-visrel.
            close seq-arq.
         
            STRING "C:\Windows\VisRel.exe ",
                   "/g ",
                   w-seq-id,
                   " /t Cadastro de produtos por gerente"
                   DELIMITED BY SIZE INTO COMANDO.

            DISPLAY COMANDO UPON COMMAND-LINE.
            CALL X"91" USING CODERRO-2, FUNCAO-35, COMMAND-LIN.
            exit program.
            goback.

No computador de seus clientes instale apenas a Run-Time do VisRel (RunTimeVisRel.exe).

Para evitar alguns dos problemas com permissão de acesso ao registro ou instalação de arquivos no Windows XP SP3 e mais recentes como Vista e Win7, foi criada uma nova opção de instalação na pasta "Instalar no cliente" do VisRelEdit com o nome de "Versão Compacta.zip", com os arquivos abaixo:

VisRel.exe
VisRel.exe.manifest
VisRelPDF.dll
MSMAPI32.ocx
MSWINSCK.ocx
RICHTX32.ocx
vbPDF417.dll
vbZip232.dll

Obs.: Basta copiar esses arquivos para a sua pasta de programas, ou para a pasta C:\Windows do usuário.

IMPORTANTE: Ao utilizar o DialogSystem do NetExpress é necessário adicionar na linha de comando o parâmetro /SV, caso contrário a tela do VisRel pode ficar oculta pelo seu programa. E no caso de relatórios no modo gráfico (VisRelEdit), selecione o menu Configurar - Manter o relatório visível. Isso ocorre devido ao comando "REFRESH-OBJECT" que é disparado depois do comando "RETC".

Veja mais detalhes das linhas de comando do VisRel clicando aqui.


Página Principal Página Principal Página Principal Página Principal Página Principal Comprar Comprar Comprar Comprar Comprar Comprar Contato Contato Contato Contato Contato Contato + Produtos + Produtos + Produtos + Produtos + Produtos + Produtos Download Download Download Download Download Download Sobre Sobre Sobre Sobre Sobre Sobre