Você está na página 1de 14

**==============================================================*

IDENTIFICATION DIVISION.
**==============================================================*

PROGRAM-ID. CBAR1800.
AUTHOR. ONOFRE.
*===============================================================*
* C P M S I S T E M A S *
*---------------------------------------------------------------*
* *
* PROGRAMA : CBAR1800 *
* ANALISTA : MONICA - CPM/ALP *
* PROGRAMADOR : ONOFRE - CPM/ALP *
* DATA : 12/11/2003 *
* *
* OBJETIVO : *
* GERACAO DE ARQUIVO DE SOLICITACAO DE EXTRACAO DAS *
* TABELAS CBARB055 E YMARB000. *
* *
* ARQUIVOS: *
* DDNAME INCLUDE/BOOK *
* ARQSOLIC -------- *
* *
* BANCO DE DADOS: *
* DB2 *
* TABLE INCLUDE/BOOK *
* DB2PRD.CTRL_EXTRC_ARQ CBARB054 *
* DB2PRD.EMPR_TRNSM_PCIAL CBARB056 *
* *
* MODULOS CHAMADOS: *
* *
* -POOL1050 - CONEXAO COM DB2. *
* -POOL7100 - FORMATAR TELA DE ERRO DB2/IMS. *
* -POOL7600 - OBTER DATA E HORA CORRENTES. *
* -POOL1205 - OBTER INDICADOR DE DIA UTIL. *
* *
*===============================================================*
* ULTIMA ALTERACAO *
*---------------------------------------------------------------*
* *
* ANALISTA : EMERSON MARIA *
* PROGRAMADOR : EMMO *
* DATA : DEZEMBRO / 2005 *
* OBJETIVO : PROCEDIMENTOS FINAL DE ANO *
* *
*---------------------------------------------------------------*
* ULTIMA ALTERACAO *
*---------------------------------------------------------------*
* *
* ANALISTA : PRISCILLA DE AMORIM - G&P *
* DATA : DEZEMBRO / 2006 *
* OBJETIVO : PROCEDIMENTOS FINAL DE ANO *
* *
*---------------------------------------------------------------*
*---------------------------------------------------------------*
* A L T E R A C A O *
*---------------------------------------------------------------*
* *
* PROGRAMADOR : ALINE COUTINHO - G&P *
* ANALISTA : ALINE COUTINHO - G&P *
* DATA : JULHO/2007 *
* *
* OBJETIVO : *
* PROCEDIMENTOS FINAL DE ANO. *
* ALTERAR PARA CHAMAR O MODULO CBAR0007. *
* *
*===============================================================*
7COM01* A L T E R A C A O *
. *---------------------------------------------------------------*
. * *
. * PROGRAMADOR : FABRICA - 7COMM *
. * ANALISTA : FABIO MOREIRA - 7COMM *
. * DATA : JULHO/2019 *
. * *
. * OBJETIVO : *
. * ATENDIMENTO DO IN3153322 *
. * CORRECAO NO CALCULO DO HORARIO DE INICIO/TERMINO DE *
. * EXTRACAO EM FUNCAO DO TEMPO DE ESTORNO *
. * *
7COM01*===============================================================*

*===============================================================*
ENVIRONMENT DIVISION.
*===============================================================*

*---------------------------------------------------------------*
CONFIGURATION SECTION.
*---------------------------------------------------------------*

SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.

EJECT
*---------------------------------------------------------------*
INPUT-OUTPUT SECTION.
*---------------------------------------------------------------*

FILE-CONTROL.

SELECT ARQSOLIC ASSIGN TO UT-S-ARQSOLIC


FILE STATUS IS WRK-FS-ARQSOLIC.

EJECT
*===============================================================*
DATA DIVISION.
*===============================================================*

*---------------------------------------------------------------*
FILE SECTION.
*---------------------------------------------------------------*

*---------------------------------------------------------------*
* INPUT : EXTRACAO DAS TABELAS CBARB055 E YMARB000 *
* ORG. SEQUENCIAL - LRECL = 063 *
*---------------------------------------------------------------*

FD ARQSOLIC
RECORDING MODE IS F
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0 RECORDS.

01 SOLIC-AREA.
03 SOLIC-SGMTO PIC 9(01).
03 SOLIC-EMPR PIC 9(09).
03 SOLIC-HORA-INIC PIC X(26).
03 SOLIC-HORA-FIM PIC X(26).
03 SOLIC-ARQ-VAZIO PIC X(01).

EJECT
*---------------------------------------------------------------*
WORKING-STORAGE SECTION.
*---------------------------------------------------------------*

77 FILLER PIC X(32) VALUE '* INICIO DA WORKING CBAR1800 *'.

*---TESTE-FS-STATUS---------------------------------------------*

77 WRK-FS-ARQSOLIC PIC X(02) VALUE SPACES.

*---MENSAGEM-FS-STATUS------------------------------------------*

77 WRK-OPERACAO PIC X(13) VALUE SPACES.


77 WRK-ABERTURA PIC X(13) VALUE
'NA ABERTURA'.
77 WRK-GRAVACAO PIC X(13) VALUE
'NA GRAVACAO'.
77 WRK-FECHAMENTO PIC X(13) VALUE
'NO FECHAMENTO'.

*---------------------------------------------------------------*
* ACUMULADORES *
*---------------------------------------------------------------*

77 ACU-LIDOS-CBARB056 PIC 9(09) VALUE ZEROS.


77 ACU-GRAVA-ARQSOLIC PIC 9(09) VALUE ZEROS.
77 ACU-GRAVA-CBARB054 PIC 9(09) VALUE ZEROS.

*---------------------------------------------------------------*
* AREA AUXILIAR *
*---------------------------------------------------------------*

77 WRK-MODULO PIC X(08) VALUE SPACES.

77 WRK-ABEND PIC S9(04) COMP VALUE +1111.


77 WRK-BATCH PIC X(08) VALUE 'BATCH'.
77 WRK-MASCARA PIC Z.ZZZ.ZZ9.
77 WRK-FIM PIC X(01) VALUE 'N'.
77 AUX-HH PIC 9(02) VALUE ZEROS.
77 AUX-HH2 PIC 9(02) VALUE ZEROS.

77 WRK-HORA-ESTRN PIC S9(07) VALUE ZEROS.

77 WRK-TEMPO-ESTRN PIC S9(03) COMP VALUE ZEROS.

77 WRK-MINU-DIFER PIC S9(07) VALUE ZEROS.


77 WRK-HORAS-DIA PIC S9(07) VALUE ZEROS.
77 WRK-MINU-ATUAL PIC S9(07) VALUE ZEROS.
77 WRK-MINU-ANTER PIC S9(07) VALUE ZEROS.

01 WRK-AREA.
03 WRK-DIA-UTIL-UM PIC X(01) VALUE SPACES.
03 WRK-DIA-UTIL-DOIS PIC X(01) VALUE SPACES.

03 WRK-TIMESTAMP-FIM.
05 WRK-TIMESTAMP-AAAA-FIM PIC 9(04) VALUE ZEROS.
05 FILLER PIC X(01) VALUE '-'.
05 WRK-TIMESTAMP-MM-FIM PIC 9(02) VALUE ZEROS.
05 FILLER PIC X(01) VALUE '-'.
05 WRK-TIMESTAMP-DD-FIM PIC 9(02) VALUE ZEROS.
05 FILLER PIC X(01) VALUE '-'.
05 WRK-TIMESTAMP-HH-FIM PIC 9(02) VALUE ZEROS.
05 FILLER PIC X(01) VALUE '.'.
05 WRK-TIMESTAMP-MIN-FIM PIC 9(02) VALUE ZEROS.
05 FILLER PIC X(01) VALUE '.'.
05 WRK-TIMESTAMP-SS-FIM PIC 9(02) VALUE ZEROS.
05 FILLER PIC X(01) VALUE '.'.
05 WRK-TIMESTAMP-MSS-FIM PIC 9(06) VALUE ZEROS.

7COM01 03 WRK-TIMESTAMP-DB2 PIC X(26) VALUE SPACES.


. 03 FILLER REDEFINES WRK-TIMESTAMP-DB2.
. 05 WRK-TIMESTAMP-AAAA-DB2 PIC 9(04).
. 05 FILLER PIC X(01).
. 05 WRK-TIMESTAMP-MM-DB2 PIC 9(02).
. 05 FILLER PIC X(01).
. 05 WRK-TIMESTAMP-DD-DB2 PIC 9(02).
. 05 FILLER PIC X(01).
. 05 WRK-TIMESTAMP-HH-DB2 PIC 9(02).
. 05 FILLER PIC X(01).
. 05 WRK-TIMESTAMP-MIN-DB2 PIC 9(02).
. 05 FILLER PIC X(01).
. 05 WRK-TIMESTAMP-SS-DB2 PIC 9(02).
. 05 FILLER PIC X(01).
7COM01 05 WRK-TIMESTAMP-MSS-DB2 PIC 9(06).

*---AREA-POOL7600------------------------------------------------*

01 WRK-DT-AAAAMMDD-R.
03 FILLER PIC 9(01).
03 WRK-DT-AMD PIC 9(08).

01 WRK-DATA-HORA.
03 WRK-DT-JULIANA PIC 9(05) COMP-3 VALUE ZEROS.
03 WRK-DT-AAMMDD PIC 9(07) COMP-3 VALUE ZEROS.
03 WRK-DT-AAAAMMDD PIC 9(09) COMP-3 VALUE ZEROS.
03 WRK-TI-HHMMSS PIC 9(07) COMP-3 VALUE ZEROS.
03 WRK-TI-HHMMSSMMMMMM PIC 9(13) COMP-3 VALUE ZEROS.
03 WRK-TIMESTAMP.
05 WRK-TIMESTAMP-AAAA PIC 9(04) VALUE ZEROS.
05 WRK-TIMESTAMP-MM PIC 9(02) VALUE ZEROS.
05 WRK-TIMESTAMP-DD PIC 9(02) VALUE ZEROS.
05 WRK-TIMESTAMP-HH PIC 9(02) VALUE ZEROS.
05 WRK-TIMESTAMP-MIN PIC 9(02) VALUE ZEROS.
05 WRK-TIMESTAMP-SS PIC 9(02) VALUE ZEROS.
05 WRK-TIMESTAMP-MSS PIC 9(06) VALUE ZEROS.

01 WRK-DH-R.
03 WRK-DATA.
05 WRK-DATA-D PIC 9(02).
05 WRK-DATA-M PIC 9(02).
05 WRK-DATA-A PIC 9(04).
03 WRK-DATA-R REDEFINES WRK-DATA
PIC 9(08).
03 WRK-HORA.
05 WRK-HH2 PIC 9(02).
05 WRK-MIN PIC 9(02).
05 WRK-SS PIC 9(02).
05 WRK-MSS PIC 9(06).

01 WRK-AREA-POOL0015.
03 WRK-DATA-SUPERIOR PIC 9(09) COMP-3 VALUE ZEROS.
03 WRK-DATA-INFERIOR PIC 9(09) COMP-3 VALUE ZEROS.
03 WRK-DIAS PIC S9(05) COMP-3 VALUE ZEROS.

*---AREA-POOL1205-----------------------------------------------*

77 MENSAGEM PIC X(50) VALUE SPACES.

01 LISTA-CAMPOS.
03 DT-ENVIADA PIC 9(08) COMP-3.
03 OPCAO PIC X(01).
03 DT-JULIANA PIC 9(07) COMP-3.
03 DT-EDITADA PIC X(10).
03 DT-GREGORI PIC 9(08).
03 DIA-SEMANA PIC X(13).
03 MES-EXTENSO PIC X(09).
03 DIA-UT-ANTER PIC 9(08).
03 DIA-UT-POSTE PIC 9(08).

*---AREA-POOL7100-----------------------------------------------*

-INC POL7100C

EJECT
*---TABELAS-DB2-------------------------------------------------*

EXEC SQL
INCLUDE SQLCA
END-EXEC.

EXEC SQL
INCLUDE CBARB056
END-EXEC.

EXEC SQL
INCLUDE CBARB054
END-EXEC.

*-- CURSOR DA TABELA CBARB056 ----------------------------------*

*---------------------------------------------------------------*
* *
* SELECIONA TODAS AS EMPRESAS VALIDAS, QUE ESTEJAM DENTRO *
* DE SEU PERIODO DE EXTRACAO. CASO A HR INICIO SEJA MAIOR *
* QUE HR FIM, A HR INICIO DEVERA SER <= A HORA CORRENTE OU *
* A HR FIM DEVERA SER >= A HORA CORRENTE. *
* *
* CASO A HR INICIO SEJA <= HR FIM, A HORA CORRENTE DEVERA *
* ESTAR EXATAMENTE ENTRE O INTERVALO CADASTRADO. *
* *
*---------------------------------------------------------------*

EXEC SQL DECLARE C1 CURSOR FOR SELECT


CSGMTO_EMPR,
CEMPR_CONVN_ARRE,
QTEMPO_ESTRN,
CINDCD_ENVIO_ARQ,
QPER_ENVIO
FROM DB2PRD.EMPR_TRNSM_PCIAL
WHERE DVALDD_INIC_TRNSM <= CURRENT DATE
AND DVALDD_FIM_TRNSM >= CURRENT DATE
AND (((HINIC_TRNSM > HFIM_TRNSM)
AND (HINIC_TRNSM <= CURRENT TIME
OR HFIM_TRNSM >= CURRENT TIME))
OR ((HINIC_TRNSM <= HFIM_TRNSM)
AND (HINIC_TRNSM <= CURRENT TIME
AND HFIM_TRNSM >= CURRENT TIME)))
AND CINDCD_DIA_UTIL IN (:WRK-DIA-UTIL-UM,
:WRK-DIA-UTIL-DOIS)
ORDER BY CSGMTO_EMPR,
CEMPR_CONVN_ARRE
END-EXEC.

01 FILLER PIC X(32) VALUE '* FIM DA WORKING CBAR1800 *'.

EJECT

*===============================================================*
PROCEDURE DIVISION.
*===============================================================*

*---------------------------------------------------------------*
0000-INICIAR SECTION.
*---------------------------------------------------------------*

CALL 'POOL1050'.

PERFORM 1000-INICIALIZAR.

PERFORM 3000-PROCESSAR UNTIL WRK-FIM = 'S'.

PERFORM 4000-FINALIZAR.

*---------------------------------------------------------------*
0000-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
1000-INICIALIZAR SECTION.
*---------------------------------------------------------------*

OPEN OUTPUT ARQSOLIC.

MOVE WRK-ABERTURA TO WRK-OPERACAO.


PERFORM 1100-TESTAR-FS-ARQSOLIC.
PERFORM 1200-ACESSAR-POOL-7600-1205.
PERFORM 1300-1-OPEN-CURSOR.
PERFORM 1300-2-FETCH-CURSOR.

*---------------------------------------------------------------*
1000-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
1100-TESTAR-FS-ARQSOLIC SECTION.
*---------------------------------------------------------------*

IF WRK-FS-ARQSOLIC NOT EQUAL '00'


DISPLAY '************** CBAR1800 **************'
DISPLAY '* ERRO ' WRK-OPERACAO ' DO ARQUIVO *'
DISPLAY '* ARQSOLIC *'
DISPLAY '* FILE STATUS = ' WRK-FS-ARQSOLIC
' *'
DISPLAY '************** CBAR1800 **************'
CALL 'ILBOABN0' USING WRK-ABEND
END-IF.

*---------------------------------------------------------------*
1100-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
1200-ACESSAR-POOL-7600-1205 SECTION.
*---------------------------------------------------------------*

CALL 'POOL7600' USING WRK-DATA-HORA.

200612 IF WRK-DT-AAAAMMDD EQUAL 20061229


MOVE 'S' TO WRK-DIA-UTIL-UM
WRK-DIA-UTIL-DOIS
GO TO 1200-99-FIM.

MOVE WRK-DT-AAAAMMDD TO WRK-DT-AMD

MOVE WRK-DT-AMD TO DT-ENVIADA.


MOVE SPACES TO OPCAO.
200707 MOVE 'CBAR0007' TO WRK-MODULO.
CALL WRK-MODULO USING LISTA-CAMPOS MENSAGEM.
* CALL 'POOL1205' USING LISTA-CAMPOS MENSAGEM.

IF OPCAO EQUAL 'F'


MOVE 'S' TO WRK-DIA-UTIL-UM WRK-DIA-UTIL-DOIS
ELSE
MOVE 'N' TO WRK-DIA-UTIL-UM
MOVE 'S' TO WRK-DIA-UTIL-DOIS.

*---------------------------------------------------------------*
1200-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
1300-1-OPEN-CURSOR SECTION.
*---------------------------------------------------------------*

EXEC SQL
OPEN C1
END-EXEC.

IF ( SQLCODE NOT EQUAL ZEROS ) OR


( SQLWARN0 EQUAL 'W' )
MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'EMPR_TRNSM_PCIAL ' TO ERR-DBD-TAB
MOVE 'OPEN C1 ' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0001' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO.

*---------------------------------------------------------------*
1300-1-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
1300-2-FETCH-CURSOR SECTION.
*---------------------------------------------------------------*

EXEC SQL FETCH C1 INTO


:CBARB056.CSGMTO-EMPR,
:CBARB056.CEMPR-CONVN-ARRE,
:CBARB056.QTEMPO-ESTRN,
:CBARB056.CINDCD-ENVIO-ARQ,
:CBARB056.QPER-ENVIO
END-EXEC.

IF ( SQLCODE NOT EQUAL ZEROS AND +100) OR


( SQLWARN0 EQUAL 'W' )
MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'EMPR_TRNSM_PCIAL ' TO ERR-DBD-TAB
MOVE 'FETCH C1' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0002' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO
ELSE
IF (SQLCODE EQUAL +100)
MOVE 'S' TO WRK-FIM
GO TO 1300-2-99-FIM.

ADD 1 TO ACU-LIDOS-CBARB056.

*---------------------------------------------------------------*
1300-2-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
1300-3-CLOSE-CURSOR SECTION.
*---------------------------------------------------------------*

EXEC SQL
CLOSE C1
END-EXEC.
IF ( SQLCODE NOT EQUAL ZEROS ) OR
( SQLWARN0 EQUAL 'W' )
MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'EMPR_TRNSM_PCIAL ' TO ERR-DBD-TAB
MOVE 'CLOSE C1' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0003' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO.

*---------------------------------------------------------------*
1300-3-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
3000-PROCESSAR SECTION.
*---------------------------------------------------------------*

INITIALIZE WRK-AREA.

MOVE WRK-TIMESTAMP TO WRK-DH-R.

PERFORM 3300-TRATA-HORARIO-EXTRACAO.

IF WRK-MINU-DIFER LESS QPER-ENVIO OF CBARB056 AND


SQLCODE NOT EQUAL +100
PERFORM 1300-2-FETCH-CURSOR
GO TO 3000-99-FIM.

MOVE WRK-TIMESTAMP-AAAA TO WRK-TIMESTAMP-AAAA-FIM.


MOVE WRK-TIMESTAMP-MM TO WRK-TIMESTAMP-MM-FIM.
MOVE WRK-TIMESTAMP-DD TO WRK-TIMESTAMP-DD-FIM.
MOVE WRK-TIMESTAMP-HH TO WRK-TIMESTAMP-HH-FIM.
MOVE WRK-TIMESTAMP-MIN TO WRK-TIMESTAMP-MIN-FIM.
MOVE WRK-TIMESTAMP-SS TO WRK-TIMESTAMP-SS-FIM.
MOVE WRK-TIMESTAMP-MSS TO WRK-TIMESTAMP-MSS-FIM.

MOVE CSGMTO-EMPR OF CBARB056


TO SOLIC-SGMTO.
MOVE CEMPR-CONVN-ARRE OF CBARB056
TO SOLIC-EMPR.
MOVE HEXTRC-MOVTO OF CBARB054
TO SOLIC-HORA-INIC.
MOVE WRK-TIMESTAMP-FIM TO SOLIC-HORA-FIM.
MOVE CINDCD-ENVIO-ARQ OF CBARB056
TO SOLIC-ARQ-VAZIO.

DISPLAY '*********************** CBAR1800 *******************


- '****'.
DISPLAY '* SEGMENTO ...............: ' SOLIC-SGMTO
' *'
DISPLAY '* EMPRESA ................: ' SOLIC-EMPR
' *'
DISPLAY '* GERA ARQUIVO VAZIO .....: ' SOLIC-ARQ-VAZIO
' *'
DISPLAY '* PERIODO INICIO EXTRACAO : ' SOLIC-HORA-INIC
' *'
DISPLAY '* PERIODO FINAL EXTRACAO : ' SOLIC-HORA-FIM
' *'
DISPLAY '*********************** CBAR1800 *******************
- '****'.

MOVE WRK-GRAVACAO TO WRK-OPERACAO.


WRITE SOLIC-AREA.
PERFORM 1100-TESTAR-FS-ARQSOLIC.
ADD 1 TO ACU-GRAVA-ARQSOLIC.

PERFORM 3400-ATUALIZA-HORA-EXTRACAO.

PERFORM 1300-2-FETCH-CURSOR.

*---------------------------------------------------------------*
3000-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
3200-HORARIO-EXTRACAO SECTION.
*---------------------------------------------------------------*

EXEC SQL
SELECT HEXTRC_MOVTO
INTO :CBARB054.HEXTRC-MOVTO
FROM DB2PRD.CTRL_EXTRC_ARQ
WHERE CSGMTO_EMPR = :CBARB056.CSGMTO-EMPR AND
CEMPR_CONVN_ARRE = :CBARB056.CEMPR-CONVN-ARRE
END-EXEC.

IF (SQLCODE NOT EQUAL ZEROS AND +100) OR


(SQLWARN0 EQUAL 'W')
MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'CTRL_EXTRC_ARQ' TO ERR-DBD-TAB
MOVE 'SELECT ' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0004' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO.

*---------------------------------------------------------------*
3200-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
3300-TRATA-HORARIO-EXTRACAO SECTION.
*---------------------------------------------------------------*

CALL 'POOL7600' USING WRK-DATA-HORA.

*================================================================*
* DIMINUICAO DO TEMPO DE ESTORNO DA HORA DE EXTRACAO ATUAL *
*================================================================*

IF QTEMPO-ESTRN OF CBARB056 GREATER 0


7COM01 MOVE ' - - - . . . '
. TO WRK-TIMESTAMP-DB2
. MOVE WRK-TIMESTAMP-AAAA TO WRK-TIMESTAMP-AAAA-DB2
. MOVE WRK-TIMESTAMP-MM TO WRK-TIMESTAMP-MM-DB2
. MOVE WRK-TIMESTAMP-DD TO WRK-TIMESTAMP-DD-DB2
. MOVE WRK-TIMESTAMP-HH TO WRK-TIMESTAMP-HH-DB2
. MOVE WRK-TIMESTAMP-MIN TO WRK-TIMESTAMP-MIN-DB2
. MOVE WRK-TIMESTAMP-SS TO WRK-TIMESTAMP-SS-DB2
. MOVE WRK-TIMESTAMP-MSS TO WRK-TIMESTAMP-MSS-DB2
. MOVE QTEMPO-ESTRN OF CBARB056
. TO WRK-TEMPO-ESTRN
.
. COMPUTE WRK-TEMPO-ESTRN = WRK-TEMPO-ESTRN * (-1)
.
. EXEC SQL
. SET :WRK-TIMESTAMP-DB2 =
. TIMESTAMPADD(4, :WRK-TEMPO-ESTRN,
. TIMESTAMP(:WRK-TIMESTAMP-DB2))
. END-EXEC
.
. MOVE WRK-TIMESTAMP-AAAA-DB2 TO WRK-TIMESTAMP-AAAA
. MOVE WRK-TIMESTAMP-MM-DB2 TO WRK-TIMESTAMP-MM
. MOVE WRK-TIMESTAMP-DD-DB2 TO WRK-TIMESTAMP-DD
. MOVE WRK-TIMESTAMP-HH-DB2 TO WRK-TIMESTAMP-HH
. MOVE WRK-TIMESTAMP-MIN-DB2 TO WRK-TIMESTAMP-MIN
. MOVE WRK-TIMESTAMP-SS-DB2 TO WRK-TIMESTAMP-SS
. MOVE WRK-TIMESTAMP-MSS-DB2 TO WRK-TIMESTAMP-MSS
. END-IF.
.
7COM01 PERFORM 3200-HORARIO-EXTRACAO.

IF SQLCODE EQUAL +100


MOVE '0001-01-01-00.00.00.000000'
TO HEXTRC-MOVTO OF CBARB054
MOVE ZEROS TO WRK-MINU-DIFER
ELSE
MOVE HEXTRC-MOVTO OF CBARB054
TO WRK-TIMESTAMP-FIM

*================================================================*
* MOVIMENTACAO DE DATAS PARA CALCULO DE DIFERENCA DE DIAS *
*================================================================*

MOVE WRK-TIMESTAMP-AAAA-FIM TO WRK-DATA-A


MOVE WRK-TIMESTAMP-MM-FIM TO WRK-DATA-M
MOVE WRK-TIMESTAMP-DD-FIM TO WRK-DATA-D
MOVE WRK-DATA-R TO WRK-DATA-INFERIOR

MOVE WRK-TIMESTAMP-AAAA TO WRK-DATA-A


MOVE WRK-TIMESTAMP-MM TO WRK-DATA-M
MOVE WRK-TIMESTAMP-DD TO WRK-DATA-D
MOVE WRK-DATA-R TO WRK-DATA-SUPERIOR

CALL 'POOL0015' USING WRK-DATA-INFERIOR


WRK-DATA-SUPERIOR
WRK-DIAS

IF RETURN-CODE NOT EQUAL ZEROS


DISPLAY '************** CBAR1800 **************'
DISPLAY '* *'
DISPLAY '* ERRO AO ACESSO A POOL0015 *'
DISPLAY '* PROGRAMA CANCELADO *'
DISPLAY '* *'
DISPLAY '************** CBAR1800 **************'
CALL 'ILBOABN0' USING WRK-ABEND
END-IF

*================================================================*
* TRANSFORMA EM MINUTOS A DATA/HORA ATUAL *
*================================================================*

COMPUTE WRK-HORAS-DIA = (WRK-DIAS * 24) * 60

COMPUTE WRK-MINU-ATUAL = ((WRK-TIMESTAMP-HH * 60) +


WRK-TIMESTAMP-MIN ) +
WRK-HORAS-DIA

*================================================================*
* TRANSFORMA EM MINUTOS A DATA/HORA ULTIMA EXTRACAO *
*================================================================*

COMPUTE WRK-MINU-ANTER = (WRK-TIMESTAMP-HH-FIM * 60) +


WRK-TIMESTAMP-MIN-FIM.

*================================================================*
* CALCULA DIFERENCA DE TEMPO ENTRE ULTIMA EXTRACAO E HORA ATUAL *
*================================================================*

COMPUTE WRK-MINU-DIFER = WRK-MINU-ATUAL -


WRK-MINU-ANTER.

*---------------------------------------------------------------*
3300-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
3400-ATUALIZA-HORA-EXTRACAO SECTION.
*---------------------------------------------------------------*

MOVE WRK-TIMESTAMP-FIM TO HEXTRC-MOVTO OF CBARB054.

EXEC SQL UPDATE DB2PRD.CTRL_EXTRC_ARQ


SET HEXTRC_MOVTO = :CBARB054.HEXTRC-MOVTO
WHERE CSGMTO_EMPR = :CBARB056.CSGMTO-EMPR AND
CEMPR_CONVN_ARRE = :CBARB056.CEMPR-CONVN-ARRE
END-EXEC.

IF (SQLCODE NOT EQUAL ZEROS AND +100) OR


(SQLWARN0 EQUAL 'W')
MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'CTRL_EXTRC_ARQ' TO ERR-DBD-TAB
MOVE 'UPDATE ' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0005' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO
ELSE
IF SQLCODE EQUAL +100
EXEC SQL INSERT INTO DB2PRD.CTRL_EXTRC_ARQ
(CSGMTO_EMPR,
CEMPR_CONVN_ARRE,
HEXTRC_MOVTO)
VALUES (:CBARB056.CSGMTO-EMPR,
:CBARB056.CEMPR-CONVN-ARRE,
:CBARB054.HEXTRC-MOVTO)
END-EXEC
IF (SQLCODE NOT EQUAL ZEROS AND +100) OR
(SQLWARN0 EQUAL 'W')
MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'CTRL_EXTRC_ARQ' TO ERR-DBD-TAB
MOVE 'INSERT ' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0006' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO
END-IF
END-IF
END-IF.

ADD 1 TO ACU-GRAVA-CBARB054.

*---------------------------------------------------------------*
3400-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
4000-FINALIZAR SECTION.
*---------------------------------------------------------------*

PERFORM 4100-EMITIR-DISPLAY.
PERFORM 1300-3-CLOSE-CURSOR.

CLOSE ARQSOLIC.

MOVE WRK-FECHAMENTO TO WRK-OPERACAO.


PERFORM 1100-TESTAR-FS-ARQSOLIC.

PERFORM 5000-COMMIT.

GOBACK.

*---------------------------------------------------------------*
4000-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT
*---------------------------------------------------------------*
4100-EMITIR-DISPLAY SECTION.
*---------------------------------------------------------------*

DISPLAY '************************* CBAR1800 '


'*************************'
DISPLAY '* '
' *'
MOVE ACU-LIDOS-CBARB056 TO WRK-MASCARA.
DISPLAY '* CBARB056 - TOTAL DE REGS LIDOS..............:'
' ' WRK-MASCARA ' *'.

MOVE ACU-GRAVA-ARQSOLIC TO WRK-MASCARA.


DISPLAY '* ARQSOLIC - TOTAL DE REGISTROS GRAVADOS......:'
' ' WRK-MASCARA ' *'.

MOVE ACU-GRAVA-CBARB054 TO WRK-MASCARA.


DISPLAY '* CBARB054 - TOTAL DE REGISTROS GRAVADOS......:'
' ' WRK-MASCARA ' *'.
DISPLAY '* '
' *'
DISPLAY '************************* CBAR1800 '
'*************************'.

*---------------------------------------------------------------*
4100-99-FIM. EXIT.
*---------------------------------------------------------------*
EJECT

*---------------------------------------------------------------*
5000-COMMIT SECTION.
*---------------------------------------------------------------*

EXEC SQL
COMMIT
END-EXEC.

IF ( SQLCODE NOT EQUAL ZEROS )


MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'COMMIT' TO ERR-DBD-TAB
MOVE 'COMMIT' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0007' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO.

*---------------------------------------------------------------*
5000-99-FIM. EXIT.
*---------------------------------------------------------------*

EJECT

*---------------------------------------------------------------*
9999-ROTINA-ERRO SECTION.
*---------------------------------------------------------------*

MOVE 'CBAR1800' TO ERR-PGM.

CALL 'POOL7100' USING WRK-BATCH


ERRO-AREA
SQLCA.

GOBACK.

*---------------------------------------------------------------*
9999-99-FIM. EXIT.
*---------------------------------------------------------------*

Você também pode gostar