| 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: |
|
 |
|
|
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; |
|
 |
|
|
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), ou então copie o
arquivo C:\Windows\VisRel.exe para a sua pasta de
programas.
IMPORTANTE: Se você tem clientes
com Windows 95 ou 98 e se optar por copiar o VisRel.exe,
copie também o arquivo Msvbvm60.dll (sempre
deste link) para a sua pasta de programas! Nunca copie o arquivo
Msvbvm60.dll da pasta system de um computador para outro, ou para a
sua pasta de programas, pois cada versão ou service pack do
Windows tem sua própria
DLL (exceto o Windows 9x). |
|
|
Obs.: 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.
|
|