Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 16

******************************************************************

IDENTIFICATION DIVISION.
******************************************************************
PROGRAM-ID. CBAR1Y89.
AUTHOR. 7COMM.

*================================================================*
* 7 C O M M *
*----------------------------------------------------------------*
* *
* PROGRAMA : CBAR1Y89 *
* PROGRAMADOR : FABRICA - 7COMM *
* DATA : DEZEMBRO/2020 *
* *
* OBJETIVO : *
* SELECIONA REGISTROS PARA INCLUSAO NO MOVIMENTO DE RAJA- *
* DA DE CODIGO DE BARRAS *
* *
* ARQUIVOS *
* *
* INPUT : *
* MOVTOSEL - EMPRESAS SELECIONADAS PARA GERACAO DO ARQUIVO *
* *
* TABELAS DB2 *
* CBARB00A - DB2PRD.THIST_PGTO_ISTAN *
* *
* MODULOS CHAMADOS *
* *
* CBAR4000 - INCLUI NO MOVIMENTO DE RAJADA *
* BRAD7100 - MODULO DE TRATAMENTO DE ERROS *
* *
*================================================================*

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

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

SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.

*----------------------------------------------------------------*
INPUT-OUTPUT SECTION.
*----------------------------------------------------------------*
FILE-CONTROL.

SELECT MOVTOSEL ASSIGN TO UT-S-MOVTOSEL


FILE STATUS IS WRK-FS-MOVTOSEL.

******************************************************************
DATA DIVISION.
******************************************************************

*----------------------------------------------------------------*
FILE SECTION.
*----------------------------------------------------------------*
*----------------------------------------------------------------*
* INPUT LRECL = 100 *
*----------------------------------------------------------------*

FD MOVTOSEL
LABEL RECORD STANDARD
BLOCK CONTAINS 0 RECORDS
RECORDING F.

01 FD-REG-MOVTOSEL PIC X(100).

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

77 FILLER PIC X(50) VALUE


'*** INICIO DA WORKING-STORAGE ***'.

*----------------------------------------------------------------*
* AREAS PARA TESTE DE FILE STATUS *
*----------------------------------------------------------------*

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


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

01 WRK-MSG-FS-ERRO.
03 FILLER PIC X(08) VALUE SPACES.
03 FILLER PIC X(02) VALUE '* '.
03 FILLER PIC X(05) VALUE 'ERRO'.
03 WRK-OPERACAO PIC X(13) VALUE SPACES.
03 FILLER PIC X(12) VALUE
' DO ARQUIVO '.
03 WRK-NOME-ARQ PIC X(08) VALUE SPACES.
03 FILLER PIC X(17) VALUE
' - FILE-STATUS = '.
03 WRK-FILE-STATUS PIC X(02) VALUE SPACES.
03 FILLER PIC X(02) VALUE ' *'.

77 WRK-BATCH PIC X(08) VALUE 'BATCH'.


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

*----------------------------------------------------------------*
* AREA DO ARQUIVO DE ENTRADA *
*----------------------------------------------------------------*

COPY 'I#CBAR88'.

*----------------------------------------------------------------*
01 FILLER PIC X(050) VALUE
'BOOK UTILIZADO PARA ACESSAR CKRS0105'.
*----------------------------------------------------------------*

COPY 'I#CKRS04'.

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

77 WRK-ACU-LIDOS-MOVTOSEL PIC S9(007) COMP-3 VALUE ZEROS.


77 WRK-ACU-DESPR-MOVTOSEL PIC S9(007) COMP-3 VALUE ZEROS.
77 WRK-ACU-LIDOS-CBARB00G PIC S9(007) COMP-3 VALUE ZEROS.
77 WRK-ACU-DESPR-CBARB00G PIC S9(007) COMP-3 VALUE ZEROS.
77 WRK-ACU-UPDAT-CBARB00G PIC S9(007) COMP-3 VALUE ZEROS.
77 WRK-ACU-EFETIVA PIC S9(007) COMP-3 VALUE ZEROS.
77 WRK-1000 PIC S9(007) COMP-3 VALUE 1000.

*----------------------------------------------------------------*
* AREA DE CHAVES *
*----------------------------------------------------------------*

77 WRK-CHAVE-PIX-ATU PIC X(74) VALUE SPACES.


77 WRK-CHAVE-PIX-ANT PIC X(74) VALUE SPACES.

*----------------------------------------------------------------*
* INDICADORES DE NULIDADE *
*----------------------------------------------------------------*

01 WRK-CBARB00A-NULL.
03 WRK-CSGMTO-EMPR-NULL PIC S9(04) COMP VALUE +0.
03 WRK-CEMPR-CONVN-ARRE-NULL PIC S9(04) COMP VALUE +0.

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

77 WRK-CKRS0105 PIC X(008) VALUE


'CKRS0105'.

01 WRK-VRECBD-DOCTO PIC 999999999999999,99-


VALUE ZEROS.
01 FILLER REDEFINES WRK-VRECBD-DOCTO.
03 FILLER PIC 9(06).
03 WRK-VRECBD-DOCTO-INT PIC 9(09).
03 FILLER PIC X(01).
03 WRK-VRECBD-DOCTO-DEC PIC 9(02).
03 FILLER PIC X(01).

01 WRK-VLR-OPERACAO PIC 9(09)V99 VALUE ZEROS.


01 FILLER REDEFINES WRK-VLR-OPERACAO.
03 WRK-VLR-OPERACAO-INT PIC 9(09).
03 WRK-VLR-OPERACAO-DEC PIC 9(02).
01 WRK-VLR-OPERACAO-X REDEFINES WRK-VLR-OPERACAO
PIC X(11).

01 WRK-CSGMTO-EMPR-X PIC X(01) VALUE SPACES.


01 FILLER REDEFINES WRK-CSGMTO-EMPR-X.
03 WRK-CSGMTO-EMPR PIC 9(01).

01 WRK-CEMPR-CONVN-ARRE-X PIC X(08) VALUE SPACES.


01 FILLER REDEFINES WRK-CEMPR-CONVN-ARRE-X.
03 WRK-CEMPR-CONVN-ARRE PIC 9(08).

01 WRK-BARRA PIC X(43) VALUE SPACES.


01 FILLER REDEFINES WRK-BARRA.
03 WRK-TAB-BARRA PIC 9(01) OCCURS 43 TIMES.

01 WRK-TAB-MOD10 PIC X(43) VALUE


'2121212121212121212121212121212121212121212'.
01 FILLER REDEFINES WRK-TAB-MOD10.
03 WRK-TAB-MOD10-MULT PIC 9(01) OCCURS 43 TIMES.

01 WRK-TAB-MOD11 PIC X(43) VALUE


'4329876543298765432987654329876543298765432'.
01 FILLER REDEFINES WRK-TAB-MOD11.
03 WRK-TAB-MOD11-MULT PIC 9(01) OCCURS 43 TIMES.

77 WRK-IND-BARRA PIC 9(02) COMP-3


VALUE ZEROS.

77 WRK-TOTAL PIC 9(05) COMP-3


VALUE ZEROS.

77 WRK-VALOR-CALC-P PIC 9(02) COMP-3


VALUE ZEROS.

01 WRK-VALOR-CALC PIC 9(02) VALUE ZEROS.


01 FILLER REDEFINES WRK-VALOR-CALC.
03 WRK-VALOR-CALC-1 PIC 9(01).
03 WRK-VALOR-CALC-2 PIC 9(01).

77 WRK-DIVISAO PIC 9(05) COMP-3


VALUE ZEROS.

77 WRK-RESTO PIC 9(02) COMP-3


VALUE ZEROS.

77 WRK-TAB-BARRA-P PIC 9(01) COMP-3


VALUE ZEROS.

77 WRK-TAB-MULTI-P PIC 9(01) COMP-3


VALUE ZEROS.

77 WRK-VALOR-CALC-1-P PIC 9(01) COMP-3


VALUE ZEROS.

77 WRK-VALOR-CALC-2-P PIC 9(01) COMP-3


VALUE ZEROS.

77 WRK-DIGITO-P PIC 9(01) COMP-3


VALUE ZEROS.

01 WRK-DIGITO PIC X(01) VALUE SPACES.


01 FILLER REDEFINES WRK-DIGITO.
03 WRK-DIGITO-N PIC 9(01).

77 WRK-DIGITO-11-P PIC 9(02) COMP-3


VALUE ZEROS.

01 WRK-DIGITO-11-N PIC 9(02) VALUE ZEROS.


01 FILLER REDEFINES WRK-DIGITO-11-N.
03 FILLER PIC 9(01).
03 WRK-DIGITO-11 PIC 9(01).
*----------------------------------------------------------------*
* AREA PARA TRATAMENTO DE ERRO *
*----------------------------------------------------------------*

COPY 'I#BRAD7C'.

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

EXEC SQL
INCLUDE SQLCA
END-EXEC.

EXEC SQL
INCLUDE CBARB00A
END-EXEC.

EXEC SQL
INCLUDE CBARB00G
END-EXEC

EXEC SQL DECLARE CSR01-CBARB00G CURSOR FOR


SELECT CNRO_SEQ_TRANS
,CPTCAO_TBELA
,CCTA_BCRIA_CLI
,HATULZ
,VRECBD_DOCTO
,CBARRA_DOCTO
,CAUTEN_PGTO_ISTAN
,CSGMTO_EMPR
,CEMPR_CONVN_ARRE
,CIDTFD_PGTO_ISTAN
,CIDTFD_TPO_COD
,CBCO
,CAG_BCRIA_ORIGE
,CCTA_BCRIA_ORIGE
,CIDTFD_TRANS_ISTAN
,CSIT_TRNSM_ONLINE
,CSIT_GERAC_CONSL
FROM DB2PRD.TMOVTO_PGTO_ISTAN
WHERE CSGMTO_EMPR = :CBARB00G.CSGMTO-EMPR
AND CEMPR_CONVN_ARRE = :CBARB00G.CEMPR-CONVN-ARRE
FOR UPDATE OF CSIT_TRNSM_ONLINE,
CBARRA_DOCTO
END-EXEC.

01 FILLER PIC X(50) VALUE


'*** FIM DA WORKING-STORAGE ***'.

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

*----------------------------------------------------------------*
0000-ROTINA-PRINCIPAL SECTION.
*----------------------------------------------------------------*

PERFORM 1000-INICIO.
PERFORM 5000-PROCESSO UNTIL WRK-FS-MOVTOSEL EQUAL '10'.

PERFORM 8000-FINALIZA.

GOBACK.

*----------------------------------------------------------------*
0000-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
1000-INICIO SECTION.
*----------------------------------------------------------------*

CALL 'CKRS1000'

MOVE 'C' TO PARM-OP.

PERFORM 7000-CHAMAR-CKRS0105.

OPEN INPUT MOVTOSEL.

MOVE WRK-ABERTURA TO WRK-OPERACAO.

PERFORM 1100-TESTAR-FS-MOVTOSEL.

PERFORM 1200-LER-MOVTOSEL.

IF WRK-FS-MOVTOSEL EQUAL '10'


DISPLAY '********* CBAR1Y89 *********'
DISPLAY '* *'
DISPLAY '* ARQUIVO MOVTOSEL VAZIO *'
DISPLAY '* PROGRAMA SERA FINALIZADO *'
DISPLAY '* *'
DISPLAY '********* CBAR1Y89 *********'
END-IF.

*----------------------------------------------------------------*
1000-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
1100-TESTAR-FS-MOVTOSEL SECTION.
*----------------------------------------------------------------*

IF WRK-FS-MOVTOSEL NOT EQUAL '00'


MOVE 'APL' TO ERR-TIPO-ACESSO
MOVE 'MOVTOSEL' TO WRK-NOME-ARQ
MOVE WRK-FS-MOVTOSEL TO WRK-FILE-STATUS
MOVE WRK-MSG-FS-ERRO TO ERR-TEXTO
PERFORM 9999-ROTINA-ERRO
END-IF.

*----------------------------------------------------------------*
1100-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
1200-LER-MOVTOSEL SECTION.
*----------------------------------------------------------------*

READ MOVTOSEL INTO REG-MOVTOSEL.

IF WRK-FS-MOVTOSEL EQUAL '00'


ADD 1 TO WRK-ACU-LIDOS-MOVTOSEL
IF MOVTOSEL-CINDCD-TRNSM-UNFCA EQUAL 'N'
OR MOVTOSEL-EXTRAI-MOV EQUAL 'N'
ADD 1 TO WRK-ACU-DESPR-MOVTOSEL
GO TO 1200-LER-MOVTOSEL
END-IF
ELSE
IF WRK-FS-MOVTOSEL NOT EQUAL '10'
MOVE WRK-LEITURA TO WRK-OPERACAO
PERFORM 1100-TESTAR-FS-MOVTOSEL
END-IF
END-IF.

*----------------------------------------------------------------*
1200-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
* ABERTURA DO CURSOR CSR01-CBARB00G *
*----------------------------------------------------------------*
1500-OPEN-CSR01-CBARB00G SECTION.
*----------------------------------------------------------------*

MOVE MOVTOSEL-CSGMTO-EMPR TO CSGMTO-EMPR


OF CBARB00G.

MOVE MOVTOSEL-CEMPR-CONVN-ARRE TO CEMPR-CONVN-ARRE


OF CBARB00G.

EXEC SQL
OPEN CSR01-CBARB00G
END-EXEC.

IF ( SQLCODE NOT = ZEROS) OR


( SQLWARN0 = 'W' )
MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'TMOVTO_PGTO_ISTAN' TO ERR-DBD-TAB
MOVE 'OPEN ' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0010' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO
END-IF.

*----------------------------------------------------------------*
1500-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
* LEITURA DO CURSOR CSR01-CBARB00G *
*----------------------------------------------------------------*
1600-FETCH-CSR01-CBARB00G SECTION.
*----------------------------------------------------------------*
EXEC SQL
FETCH CSR01-CBARB00G
INTO :CBARB00G.CNRO-SEQ-TRANS
,:CBARB00G.CPTCAO-TBELA
,:CBARB00G.CCTA-BCRIA-CLI
,:CBARB00G.HATULZ
,:CBARB00G.VRECBD-DOCTO
,:CBARB00G.CBARRA-DOCTO
,:CBARB00G.CAUTEN-PGTO-ISTAN
,:CBARB00G.CSGMTO-EMPR
,:CBARB00G.CEMPR-CONVN-ARRE
,:CBARB00G.CIDTFD-PGTO-ISTAN
,:CBARB00G.CIDTFD-TPO-COD
,:CBARB00G.CBCO
,:CBARB00G.CAG-BCRIA-ORIGE
,:CBARB00G.CCTA-BCRIA-ORIGE
,:CBARB00G.CIDTFD-TRANS-ISTAN
,:CBARB00G.CSIT-TRNSM-ONLINE
,:CBARB00G.CSIT-GERAC-CONSL
END-EXEC.

IF ( SQLCODE NOT = ZEROS AND +100) OR


( SQLWARN0 = 'W' )
MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'TMOVTO_PGTO_ISTAN' TO ERR-DBD-TAB
MOVE 'FETCH ' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0020' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO
END-IF.

IF SQLCODE EQUAL ZEROS


ADD 1 TO WRK-ACU-LIDOS-CBARB00G
MOVE CIDTFD-PGTO-ISTAN OF CBARB00G
TO WRK-CHAVE-PIX-ATU
ELSE
IF SQLCODE EQUAL +100
GO TO 1600-99-FIM
END-IF
END-IF.

IF CSIT-TRNSM-ONLINE OF CBARB00G NOT EQUAL 'A'


ADD 1 TO WRK-ACU-DESPR-CBARB00G
GO TO 1600-FETCH-CSR01-CBARB00G
END-IF.

*----------------------------------------------------------------*
1600-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
* FECHAMENTO DO CURSOR CSR01-CBARB00G *
*----------------------------------------------------------------*
1700-CLOSE-CSR01-CBARB00G SECTION.
*----------------------------------------------------------------*

EXEC SQL
CLOSE CSR01-CBARB00G
END-EXEC.

IF ( SQLCODE NOT = ZEROS) OR


( SQLWARN0 = 'W' )
MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'TMOVTO_PGTO_ISTAN' TO ERR-DBD-TAB
MOVE 'CLOSE ' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0030' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO
END-IF.

*----------------------------------------------------------------*
1700-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
5000-PROCESSO SECTION.
*----------------------------------------------------------------*

PERFORM 1500-OPEN-CSR01-CBARB00G.

PERFORM 1600-FETCH-CSR01-CBARB00G.

PERFORM 5200-LER-CSR-CBARB00G UNTIL SQLCODE EQUAL +100.

PERFORM 7000-CHAMAR-CKRS0105.

PERFORM 1700-CLOSE-CSR01-CBARB00G.

PERFORM 1200-LER-MOVTOSEL.

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

*----------------------------------------------------------------*
5100-ACESSA-CBARB00A SECTION.
*----------------------------------------------------------------*

MOVE CIDTFD-PGTO-ISTAN OF CBARB00G


TO CIDTFD-PGTO-ISTAN OF CBARB00A.
* MOVER????????????? OF CBARB00G
MOVE '04.12.2021' TO DINIC-VGCIA-ISTAN OF CBARB00A
DFIM-VGCIA-ISTAN OF CBARB00A.

EXEC SQL
SELECT
CIDTFD_PGTO_ISTAN,
DINIC_VGCIA_ISTAN,
CTPO_IDTFD_PGTO,
CSGMTO_EMPR,
CEMPR_CONVN_ARRE,
CINDCD_COMPS_BARRA,
CIDTFD_COMPS_TRANS,
DFIM_VGCIA_ISTAN,
CUSUAR_SENHA,
HATULZ
INTO
:CBARB00A.CIDTFD-PGTO-ISTAN,
:CBARB00A.DINIC-VGCIA-ISTAN,
:CBARB00A.CTPO-IDTFD-PGTO,
:CBARB00A.CSGMTO-EMPR
:WRK-CSGMTO-EMPR-NULL,
:CBARB00A.CEMPR-CONVN-ARRE
:WRK-CEMPR-CONVN-ARRE-NULL,
:CBARB00A.CINDCD-COMPS-BARRA,
:CBARB00A.CIDTFD-COMPS-TRANS,
:CBARB00A.DFIM-VGCIA-ISTAN,
:CBARB00A.CUSUAR-SENHA,
:CBARB00A.HATULZ
FROM DB2PRD.THIST_PGTO_ISTAN
WHERE CIDTFD_PGTO_ISTAN = :CBARB00A.CIDTFD-PGTO-ISTAN
AND DINIC_VGCIA_ISTAN <= :CBARB00A.DINIC-VGCIA-ISTAN
AND DFIM_VGCIA_ISTAN >= :CBARB00A.DFIM-VGCIA-ISTAN
END-EXEC.

IF ( SQLCODE NOT = ZEROS AND -811 AND +100 ) OR


( SQLWARN0 = 'W' )
MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'THIST_PGTO_ISTAN ' TO ERR-DBD-TAB
MOVE 'SELECT ' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0040' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO
END-IF.

IF SQLCODE EQUAL ZEROS OR -811


IF WRK-CSGMTO-EMPR-NULL LESS ZEROS
MOVE ZEROS TO CSGMTO-EMPR OF CBARB00A
END-IF
IF WRK-CEMPR-CONVN-ARRE-NULL LESS ZEROS
MOVE ZEROS TO CEMPR-CONVN-ARRE
OF CBARB00A
END-IF
END-IF.

*----------------------------------------------------------------*
5100-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
5200-LER-CSR-CBARB00G SECTION.
*----------------------------------------------------------------*

IF WRK-CHAVE-PIX-ATU NOT EQUAL WRK-CHAVE-PIX-ANT


MOVE WRK-CHAVE-PIX-ATU TO WRK-CHAVE-PIX-ANT
PERFORM 5100-ACESSA-CBARB00A
END-IF

PERFORM 6000-CHAMAR-CBAR4000.

PERFORM 1600-FETCH-CSR01-CBARB00G.

*----------------------------------------------------------------*
5200-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
6000-CHAMAR-CBAR4000 SECTION.
*----------------------------------------------------------------*

MOVE CIDTFD-PGTO-ISTAN OF CBARB00G TO SAI-CHAVE-PIX.


MOVE CIDTFD-TPO-COD OF CBARB00G TO SAI-TIPO-QR-CODE.
MOVE CBCO OF CBARB00G TO SAI-BCO-ORIGEM.
MOVE CAG-BCRIA-ORIGE OF CBARB00G TO SAI-AGEN-ORIGEM.
MOVE CCTA-BCRIA-ORIGE OF CBARB00G TO SAI-CTA-ORIGEM.
* MOVER????????????? OF CBARB00G
MOVE 3963 TO SAI-AGEN-DESTINO.
MOVE CCTA-BCRIA-CLI OF CBARB00G TO SAI-CTA-DESTINO.
MOVE CIDTFD-TRANS-ISTAN OF CBARB00G TO SAI-TXID.
* MOVER????????????? OF CBARB00G
MOVE 20211212 TO SAI-DT-PGTO.
* MOVER????????????? OF CBARB00G
MOVE 20211212 TO SAI-DT-CRED.
MOVE VRECBD-DOCTO OF CBARB00G TO WRK-VRECBD-DOCTO.
MOVE WRK-VRECBD-DOCTO-INT TO WRK-VLR-OPERACAO-INT.
MOVE WRK-VRECBD-DOCTO-DEC TO WRK-VLR-OPERACAO-DEC.
MOVE WRK-VLR-OPERACAO TO SAI-VLR-OPERACAO.
MOVE ZEROS TO SAI-COD-MIDIA.
MOVE CAUTEN-PGTO-ISTAN OF CBARB00G TO SAI-NRO-AUTENTICACAO.
* MOVER????????????? OF CBARB00G
MOVE 20211212150501 TO SAI-DATA-HORA-TRANS.
MOVE CSGMTO-EMPR OF CBARB00G TO SAI-CD-SEGMENTO.
MOVE CEMPR-CONVN-ARRE OF CBARB00G TO SAI-CD-EMPRESA.

IF CINDCD-COMPS-BARRA OF CBARB00A EQUAL 'S' OR 'X'


PERFORM 6100-FORMATAR-BARRA
ELSE
IF CIDTFD-COMPS-TRANS OF CBARB00A EQUAL 1
IF CSGMTO-EMPR OF CBARB00A EQUAL 6
MOVE CIDTFD-TRANS-ISTAN OF CBARB00G (1:21)
TO SAI-COD-BARRA
ELSE
MOVE CIDTFD-TRANS-ISTAN OF CBARB00G (1:25)
TO SAI-COD-BARRA
END-IF
ELSE
MOVE CIDTFD-TRANS-ISTAN OF CBARB00G (1:30)
TO SAI-COD-BARRA
END-IF
END-IF.

WRITE FD-REG-MOVTOSAI FROM REG-MVTOSAI.

IF WRK-FS-MOVTOSAI EQUAL '00'


ADD 1 TO WRK-ACU-GRAVS-MOVTOSAI
ELSE
MOVE WRK-GRAVACAO TO WRK-OPERACAO
PERFORM 1110-TESTAR-FS-MOVTOSAI
END-IF.

PERFORM 6200-ATUALIZAR-CBARB00G.
*----------------------------------------------------------------*
6000-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
6100-FORMATAR-BARRA SECTION.
*----------------------------------------------------------------*

MOVE '8' TO SAI-COD-BARRA (01:01).

IF CIDTFD-COMPS-TRANS OF CBARB00A EQUAL 1


MOVE CSGMTO-EMPR OF CBARB00A
TO WRK-CSGMTO-EMPR
MOVE WRK-CSGMTO-EMPR-X TO SAI-COD-BARRA (02:01)
MOVE CEMPR-CONVN-ARRE OF CBARB00A
TO WRK-CEMPR-CONVN-ARRE
IF CSGMTO-EMPR OF CBARB00A EQUAL 6
MOVE WRK-CEMPR-CONVN-ARRE-X
TO SAI-COD-BARRA (16:08)
MOVE CIDTFD-TRANS-ISTAN OF CBARB00G (01:21)
TO SAI-COD-BARRA (24:21)
ELSE
MOVE WRK-CEMPR-CONVN-ARRE-X (05:04)
TO SAI-COD-BARRA (16:04)
MOVE CIDTFD-TRANS-ISTAN OF CBARB00G (01:25)
TO SAI-COD-BARRA (20:25)
END-IF
ELSE
MOVE CIDTFD-TRANS-ISTAN OF CBARB00G (01:01)
TO SAI-COD-BARRA (02:01)
IF CIDTFD-TRANS-ISTAN OF CBARB00G (01:01) EQUAL '6'
MOVE CIDTFD-TRANS-ISTAN OF CBARB00G (02:08)
TO SAI-COD-BARRA (16:08)
MOVE CIDTFD-TRANS-ISTAN OF CBARB00G (10:21)
TO SAI-COD-BARRA (24:21)
ELSE
MOVE CIDTFD-TRANS-ISTAN OF CBARB00G (02:04)
TO SAI-COD-BARRA (16:04)
MOVE CIDTFD-TRANS-ISTAN OF CBARB00G (06:25)
TO SAI-COD-BARRA (20:25)
END-IF
END-IF.

IF CINDCD-COMPS-BARRA OF CBARB00A EQUAL 'S'


MOVE '6' TO SAI-COD-BARRA (03:01)
ELSE
MOVE '8' TO SAI-COD-BARRA (03:01)
END-IF.
MOVE WRK-VLR-OPERACAO-X TO SAI-COD-BARRA (05:11).

PERFORM 6110-CALCULA-DIG-GERAL.
MOVE WRK-DIGITO TO SAI-COD-BARRA (04:01).

*----------------------------------------------------------------*
6100-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
6110-CALCULA-DIG-GERAL SECTION.
*----------------------------------------------------------------*

MOVE SAI-COD-BARRA (01:03) TO WRK-BARRA (01:03).


MOVE SAI-COD-BARRA (05:40) TO WRK-BARRA (04:40).

MOVE ZEROS TO WRK-TOTAL.

IF SAI-COD-BARRA(03:01) EQUAL '6' OR '7'


PERFORM VARYING WRK-IND-BARRA FROM 1 BY 1
UNTIL WRK-IND-BARRA
GREATER 43
MOVE WRK-TAB-BARRA (WRK-IND-BARRA) TO WRK-TAB-BARRA-P
MOVE WRK-TAB-MOD10-MULT (WRK-IND-BARRA)
TO WRK-TAB-MULTI-P
COMPUTE WRK-VALOR-CALC-P = WRK-TAB-BARRA-P *
WRK-TAB-MULTI-P
MOVE WRK-VALOR-CALC-P TO WRK-VALOR-CALC
MOVE WRK-VALOR-CALC-1 TO WRK-VALOR-CALC-1-P
MOVE WRK-VALOR-CALC-2 TO WRK-VALOR-CALC-2-P
COMPUTE WRK-TOTAL = WRK-TOTAL +
WRK-VALOR-CALC-1-P +
WRK-VALOR-CALC-2-P
END-PERFORM
DIVIDE WRK-TOTAL BY 10 GIVING WRK-DIVISAO
REMAINDER WRK-RESTO
COMPUTE WRK-DIGITO-P = 10 - WRK-RESTO
MOVE WRK-DIGITO-P TO WRK-DIGITO-N
ELSE
PERFORM VARYING WRK-IND-BARRA FROM 1 BY 1
UNTIL WRK-IND-BARRA
GREATER 43
MOVE WRK-TAB-BARRA (WRK-IND-BARRA) TO WRK-TAB-BARRA-P
MOVE WRK-TAB-MOD11-MULT (WRK-IND-BARRA)
TO WRK-TAB-MULTI-P
COMPUTE WRK-TOTAL = WRK-TOTAL +
(WRK-TAB-BARRA-P *
WRK-TAB-MULTI-P)
END-PERFORM
DIVIDE WRK-TOTAL BY 11 GIVING WRK-DIVISAO
REMAINDER WRK-RESTO

IF WRK-RESTO EQUAL 0 OR 1
MOVE 0 TO WRK-DIGITO-11-N
ELSE
IF WRK-RESTO EQUAL 10
MOVE 1 TO WRK-DIGITO-11-N
ELSE
COMPUTE WRK-DIGITO-11-P = 11 - WRK-RESTO
MOVE WRK-DIGITO-11-P TO WRK-DIGITO-11-N
END-IF
END-IF
MOVE WRK-DIGITO-11 TO WRK-DIGITO-N
END-IF.

*----------------------------------------------------------------*
6110-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
6200-ATUALIZAR-CBARB00G SECTION.
*----------------------------------------------------------------*

MOVE 'C' TO CSIT-TRNSM-ONLINE OF CBARB00G.


MOVE SAI-COD-BARRA TO CBARRA-DOCTO OF CBARB00G.

EXEC SQL
UPDATE DB2PRD.TMOVTO_PGTO_ISTAN
SET CSIT_TRNSM_ONLINE = :CBARB00G.CSIT-TRNSM-ONLINE
,CBARRA_DOCTO = :CBARB00G.CBARRA-DOCTO
WHERE CURRENT OF CSR01-CBARB00G
END-EXEC.

IF SQLCODE NOT EQUAL ZEROS OR


SQLWARN0 EQUAL 'W'
MOVE 'DB2' TO ERR-TIPO-ACESSO
MOVE 'CBAR1985' TO ERR-PGM
MOVE 'TMOVTO_PGTO_ISTAN'
TO ERR-DBD-TAB
MOVE 'UPDATE' TO ERR-FUN-COMANDO
MOVE SQLCODE TO ERR-SQL-CODE
MOVE '0050' TO ERR-LOCAL
MOVE SPACES TO ERR-SEGM
PERFORM 9999-ROTINA-ERRO
END-IF.

ADD 1 TO WRK-ACU-UPDAT-CBARB00G
WRK-ACU-EFETIVA.

IF WRK-ACU-EFETIVA NOT LESS WRK-1000


PERFORM 7000-CHAMAR-CKRS0105
MOVE ZEROS TO WRK-ACU-EFETIVA
END-IF.

*----------------------------------------------------------------*
6200-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
* ROTINA PARA CONEXAO E DESCONEXAO COM DB2 *
*----------------------------------------------------------------*
7000-CHAMAR-CKRS0105 SECTION.
*----------------------------------------------------------------*

MOVE 'DB2 ' TO PARM-SSID


MOVE SPACES TO PARM-PLAN

CALL WRK-CKRS0105 USING PARM-CKRS0105

IF RETURN-CODE NOT EQUAL ZEROS


NEXT SENTENCE
END-IF.

*----------------------------------------------------------------*
7000-99-FIM. EXIT.
*----------------------------------------------------------------*

*----------------------------------------------------------------*
8000-FINALIZA SECTION.
*----------------------------------------------------------------*

DISPLAY '**************** CBAR1Y89 **************'


DISPLAY '* *'
DISPLAY '* FIM DE PROCESSAMENTO *'
DISPLAY '* *'
DISPLAY '* *'
DISPLAY '* TOTAL MOVTOSEL - LIDOS = ' WRK-ACU-LIDOS-MOVTOSEL
' *'
DISPLAY '* *'
DISPLAY '* TOTAL MOVTOSEL - DESPR = ' WRK-ACU-DESPR-MOVTOSEL
' *'
DISPLAY '* *'
DISPLAY '* TOTAL CBARB00A - LIDOS = ' WRK-ACU-LIDOS-CBARB00G
' *'
DISPLAY '* *'
DISPLAY '* TOTAL CBARB00A - DESPR = ' WRK-ACU-DESPR-CBARB00G
' *'
DISPLAY '* *'
DISPLAY '* TOTAL CBARB00A - UPDAT = ' WRK-ACU-UPDAT-CBARB00G
' *'
DISPLAY '* *'
DISPLAY '* TOTAL MOVTOSAI - GRAVS = ' WRK-ACU-GRAVS-MOVTOSAI
' *'
DISPLAY '* *'
DISPLAY '* *'
DISPLAY '**************** CBAR1Y89 **************'

CLOSE MOVTOSEL
MOVTOSAI.

MOVE WRK-FECHAMENTO TO WRK-OPERACAO.

PERFORM 1100-TESTAR-FS-MOVTOSEL.
PERFORM 1110-TESTAR-FS-MOVTOSAI.

MOVE 'D' TO PARM-OP.

PERFORM 7000-CHAMAR-CKRS0105.

*----------------------------------------------------------------*
8000-99-FIM. EXIT.
*----------------------------------------------------------------*

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

MOVE 'CBAR1Y89' TO ERR-PGM

IF ERR-TIPO-ACESSO EQUAL 'DB2'


CALL 'BRAD7100' USING WRK-BATCH
ERRO-AREA
SQLCA
ELSE
CALL 'BRAD7100' USING WRK-BATCH
ERRO-AREA
END-IF.
GOBACK.

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

You might also like