Sunteți pe pagina 1din 5

*----------------------------------------------------------------*

IDENTIFICATION DIVISION.
*----------------------------------------------------------------*
PROGRAM-ID. GPAZ0320.
AUTHOR. ANDRE.
*----------------------------------------------------------------*
ENVIRONMENT DIVISION.
*----------------------------------------------------------------*
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT RELREPO ASSIGN TO UT-S-RELREPO
FILE STATUS IS FS-RELREPO
.
*----------------------------------------------------------------*
DATA DIVISION.
*----------------------------------------------------------------*
FILE SECTION.
FD RELREPO
LABEL RECORD STANDARD
BLOCK CONTAINS 0 RECORDS
RECORDING MODE IS F
RECORD CONTAINS 80 CHARACTERS
DATA RECORD IS REG-RELREPO
.
01 REG-RELREPO PIC X(80).
WORKING-STORAGE SECTION.
EXEC SQL
INCLUDE PRODUTO
END-EXEC
EXEC SQL
INCLUDE SQLCA
END-EXEC
01 WS-CABEC1.
05 WS-DATA-CABEC1 PIC X(10).
05 FILLER PIC X(02) VALUE SPACES.
05 WS-HORA-CABEC1 PIC X(08).
05 FILLER PIC X(02) VALUE SPACES.
05 FILLER PIC X(45) VALUE
"RESUMO DE PRODUTOS".
05 FILLER PIC X(11) VALUE
" PAG. ".
05 WS-PAG-CABEC1 PIC Z9.
01 WS-CABEC2 PIC X(80) VALUE ALL "-".
01 WS-CABEC3.
05 FILLER PIC X(40) VALUE
" CODIGO DESCRICAO ".
05 FILLER PIC X(40) VALUE
"PRECO LUCRO ESTOQUE REPOSICAO".
01 WS-CABEC4.
05 FILLER PIC X(80) VALUE ALL "-".
01 WS-LINDET.
05 FILLER PIC X(2) VALUE SPACES.
05 LD-CODPROD PIC X(4).
05 FILLER PIC X(3) VALUE SPACES.
05 LD-DESCRICAO PIC X(25).
05 FILLER PIC X(05) VALUE " R".
05 LD-PRECO PIC $ZZZ.ZZ9,99.
05 FILLER PIC X(3) VALUE " R".
05 LD-LUCRO PIC $Z.ZZ9,99+.
05 FILLER PIC X(3) VALUE SPACES.
05 LD-ESTOQUE PIC ZZZZ9.
05 FILLER PIC X(3) VALUE SPACES.
05 LD-REPOSICAO PIC ZZZZ9.
05 FILLER PIC X(2) VALUE SPACES.
01 WS-RODAPE1 PIC X(80) VALUE ALL "-".
01 WS-RODAPE2.
05 FILLER PIC X(40) VALUE
"INDUSTRIAS LOST LTDA. ".
05 FILLER PIC X(40) VALUE
" SERVIMOS BEM PARA SERVIR SEMPRE".
01 WS-REG-PRDSEQM.
05 WS-CODPROD-M PIC X(04).
05 WS-DESCPROD-M PIC X(20).
05 WS-UNIDPROD-M PIC X(05).
05 WS-LOCALPROD-M PIC X(05).
05 WS-QTDEST-M PIC 9(05).
05 WS-QTDMAX-M PIC 9(05).
05 WS-QTDMIN-M PIC 9(05).
05 WS-PRECOCOMPRA-M PIC 9(06)V99.
05 WS-PRECOVENDA-M PIC 9(06)V99.
05 WS-PERCOMIS-M PIC 9(02)V99.
01 WS-DATA-SYS.
05 WS-ANO PIC 99.
05 WS-MES PIC 99.
05 WS-DIA PIC 99.
01 WS-HORA-SYS.
05 WS-HORA PIC 99.
05 WS-MINUTO PIC 99.
05 WS-SEGUNDO PIC 99.
01 WS-DATA-FORMATADA.
05 WS-DIA PIC 99.
05 FILLER PIC X(01) VALUE "/".
05 WS-MES PIC 99.
05 FILLER PIC X(03) VALUE "/20".
05 WS-ANO PIC 99.
01 WS-HORA-FORMATADA.
05 WS-HORA PIC 99.
05 FILLER PIC X(01) VALUE ":".
05 WS-MINUTO PIC 99.
05 FILLER PIC X(01) VALUE ":".
05 WS-SEGUNDO PIC 99.
77 WS-LUCRO PIC 9(4)V99.
77 WS-REPOSICAO PIC 9(5).
77 WS-SQLCODE PIC +++++++++9.
77 FS-PRDSEQM PIC X(02).
77 FS-RELREPO PIC X(02).
77 WS-CTLIDO PIC 9(03).
77 WS-CTIMP PIC 9(03).
77 WS-PULA PIC 9(02).
77 WS-CTLINHA PIC 9(02).
77 WS-CTPAG PIC 9(02).
77 WS-MSG PIC X(60).
77 WS-FS PIC X(02).
*----------------------------------------------------------------*
PROCEDURE DIVISION.
*----------------------------------------------------------------*
PERFORM 010-INICIALIZAR
PERFORM 030-PROCESSAR UNTIL SQLCODE = +100
PERFORM 070-TERMINO
STOP RUN
.
010-INICIALIZAR.
MOVE 0 TO WS-CTLIDO
MOVE 0 TO WS-CTIMP
MOVE 0 TO WS-CTPAG
MOVE 99 TO WS-CTLINHA
OPEN OUTPUT RELREPO
IF FS-RELREPO NOT = "00"
MOVE "ERRO ABERTURA DO RELATORIO" TO WS-MSG
MOVE FS-RELREPO TO WS-FS
GO TO 999-ERRO
END-IF
EXEC SQL
DECLARE REPOSICAO CURSOR FOR
SELECT *
FROM PRODUTO
WHERE QTDEST < QTDMIN
ORDER BY CODPROD
END-EXEC
EXEC SQL
OPEN REPOSICAO
END-EXEC
IF SQLCODE NOT = 0 AND NOT = +100
MOVE "ERRO NA ABERTURA DO ARQ CURSOR" TO WS-MSG
MOVE SQLCODE TO WS-SQLCODE
GO TO 999-ERRO
END-IF
PERFORM 999-FORMATA-DATA-HORA
PERFORM 020-LER-REPOSICAO
.
020-LER-REPOSICAO.
EXEC SQL
FETCH REPOSICAO INTO :DCLPRODUTO
END-EXEC
IF SQLCODE = 0
ADD 1 TO WS-CTLIDO
ELSE
IF SQLCODE NOT = +100
MOVE "ERRO NA LEITURA DA REPOSICAO" TO WS-MSG
MOVE SQLCODE TO WS-SQLCODE
GO TO 999-ERRO
END-IF
END-IF
.
030-PROCESSAR.
IF WS-CTLINHA > 59
PERFORM 040-IMPRIME-CABECALHO
END-IF
PERFORM 050-IMPRIME-DETALHE
IF WS-CTLINHA = 58
PERFORM 060-IMPRIME-RODAPE
END-IF
PERFORM 020-LER-REPOSICAO
.
040-IMPRIME-CABECALHO.
MOVE WS-DATA-FORMATADA TO WS-DATA-CABEC1
MOVE WS-HORA-FORMATADA TO WS-HORA-CABEC1
ADD 1 TO WS-CTPAG
MOVE WS-CTPAG TO WS-PAG-CABEC1
WRITE REG-RELREPO FROM WS-CABEC1 AFTER PAGE
IF FS-RELREPO NOT = "00"
MOVE "ERRO IMPRESSAO WS-CABEC1" TO WS-MSG
MOVE FS-RELREPO TO WS-FS
GO TO 999-ERRO
END-IF
WRITE REG-RELREPO FROM WS-CABEC2
IF FS-RELREPO NOT = "00"
MOVE "ERRO IMPRESSAO WS-CABEC2" TO WS-MSG
MOVE FS-RELREPO TO WS-FS
GO TO 999-ERRO
END-IF
WRITE REG-RELREPO FROM WS-CABEC3
IF FS-RELREPO NOT = "00"
MOVE "ERRO IMPRESSAO WS-CABEC3" TO WS-MSG
MOVE FS-RELREPO TO WS-FS
GO TO 999-ERRO
END-IF
WRITE REG-RELREPO FROM WS-CABEC4
IF FS-RELREPO NOT = "00"
MOVE "ERRO IMPRESSAO WS-CABEC4" TO WS-MSG
MOVE FS-RELREPO TO WS-FS
GO TO 999-ERRO
END-IF
MOVE 4 TO WS-CTLINHA
.
050-IMPRIME-DETALHE.
MOVE CODPROD TO LD-CODPROD
MOVE DESCPROD TO LD-DESCRICAO
MOVE PRECOVENDA TO LD-PRECO
COMPUTE WS-LUCRO = PRECOVENDA - PRECOCOMPRA
MOVE WS-LUCRO TO LD-LUCRO
MOVE QTDEST TO LD-ESTOQUE
COMPUTE WS-REPOSICAO = QTDMAX - QTDMIN
MOVE WS-REPOSICAO TO LD-REPOSICAO
WRITE REG-RELREPO FROM WS-LINDET
IF FS-RELREPO NOT = "00"
MOVE "ERRO IMPRESSAO LINDET" TO WS-MSG
MOVE FS-RELREPO TO WS-FS
GO TO 999-ERRO
END-IF
ADD 1 TO WS-CTLINHA
ADD 1 TO WS-CTIMP
.
060-IMPRIME-RODAPE.
COMPUTE WS-PULA = 59 - WS-CTLINHA
WRITE REG-RELREPO FROM WS-RODAPE1 AFTER WS-PULA LINES
IF FS-RELREPO NOT = "00"
MOVE "ERRO IMPRESSAO WS-RODAPE1" TO WS-MSG
MOVE FS-RELREPO TO WS-FS
GO TO 999-ERRO
END-IF
WRITE REG-RELREPO FROM WS-RODAPE2
IF FS-RELREPO NOT = "00"
MOVE "ERRO IMPRESSAO WS-RODAPE2" TO WS-MSG
MOVE FS-RELREPO TO WS-FS
GO TO 999-ERRO
END-IF
MOVE 60 TO WS-CTLINHA
.
070-TERMINO.
IF WS-CTLINHA < 60
PERFORM 060-IMPRIME-RODAPE
END-IF
DISPLAY "TOTAL DE REGISTROS LIDOS: " WS-CTLIDO
DISPLAY "TOTAL DE REGISTROS IMPRESSOS: " WS-CTIMP
EXEC SQL
CLOSE REPOSICAO
END-EXEC
IF SQLCODE NOT = 0
MOVE "ERRO FECHAMENTO REPOSICAO" TO WS-MSG
MOVE SQLCODE TO WS-SQLCODE
GO TO 999-ERRO
END-IF
.
999-ERRO.
DISPLAY WS-MSG
DISPLAY WS-FS
.
999-FORMATA-DATA-HORA.
ACCEPT WS-DATA-SYS FROM DATE
ACCEPT WS-HORA-SYS FROM TIME
MOVE CORRESPONDING WS-DATA-SYS TO WS-DATA-FORMATADA
MOVE CORRESPONDING WS-HORA-SYS TO WS-HORA-FORMATADA
.

S-ar putea să vă placă și