Sie sind auf Seite 1von 6

CBL LIB 004

ID DIVISION.
PROGRAM-ID. AC040008.
AUTHOR. MARIANA.
*---------------------------------------------------------------*
* BALANCE LINE ENTRE ARQUIVOS CADCLI E ALTCLI. *
* GRAVA ARQUIVO CADCLIN DE ACORDO COM O RECADASTRAMENTO DOS CADA*
* STRADOS E INCLUSOS. *
*---------------------------------------------------------------*
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CADCLI ASSIGN TO CADCLI
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-STATUS-CADCLI.
SELECT ALTCLI ASSIGN TO ALTCLI
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-STATUS-ALTCLI.
SELECT CADCLIN ASSIGN TO CADCLIN
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS WS-STATUS-CADCLIN.
*
DATA DIVISION.
FILE SECTION.
FD CADCLI
RECORDING MODE IS F
LABEL RECORD STANDARD
BLOCK CONTAINS 0 RECORDS
RECORD CONTAINS 86 CHARACTERS
DATA RECORD IS REGISTRO-CADCLI.
01 REGISTRO-CADCLI PIC X(86).
FD ALTCLI
RECORDING MODE IS F
LABEL RECORD STANDARD
BLOCK CONTAINS 0 RECORDS
RECORD CONTAINS 84 CHARACTERS
DATA RECORD IS REGISTRO-ALTCLI.
01 REGISTRO-ALTCLI PIC X(84).
FD CADCLIN
RECORDING MODE IS F
LABEL RECORD STANDARD
BLOCK CONTAINS 0 RECORDS
RECORD CONTAINS 105 CHARACTERS
DATA RECORD IS REGISTRO-CADCLIN.
01 REGISTRO-CADCLIN PIC X(105).
*
WORKING-STORAGE SECTION.
*---------------------------------------------------------------*
* AREA DE COPY BOOK. *
*---------------------------------------------------------------*
COPY WSCADCLI.
COPY WSALTCLI.
COPY WSCADCLN.
COPY POOL0010.
*---------------------------------------------------------------*
* VARIAVEIS DE STATUS DE ARQUIVOS *
*---------------------------------------------------------------*
01 WS-STATUS-ARQUIVOS.
03 WS-STATUS-CADCLI PIC X(02).
88 WS-STATUS-CADCLI-OK VALUE '00'.
88 WS-STATUS-CADCLI-FIM VALUE '10'.
03 WS-STATUS-ALTCLI PIC X(02).
88 WS-STATUS-ALTCLI-OK VALUE '00'.
88 WS-STATUS-ALTCLI-FIM VALUE '10'.
03 WS-STATUS-CADCLIN PIC X(02).
88 WS-STATUS-CADCLIN-OK VALUE '00'.
*---------------------------------------------------------------*
* VARIAVEIS ESPELHO QUE SERVEM PARA MOVER AS CHAVES *
*---------------------------------------------------------------*
01 WS-CADCLI-ESPELHO.
03 CHAVE-CADCLI.
05 CADCLI-AGENCIA-AUX PIC 9(05).
05 CADCLI-NUMERO-CONTA-AUX PIC 9(10).
03 CADCLI-NOME-CLIENTE-AUX PIC X(40).
03 CADCLI-TELEFONE-AUX PIC 9(08).
03 CADCLI-SALDO-ATUAL-AUX PIC S9(11)V99 COMP-3.
03 CADCLI-DATA-GRAVACAO-AUX.
05 CADCLI-ANO-GRAVACAO-AUX PIC 9(04).
05 CADCLI-MES-GAVACAO-AUX PIC 9(02).
05 CADCLI-DIA-GRAVACAO-AUX PIC 9(02).
03 CADCLI-HORA-GRAVACAO-AUX PIC 9(08).
01 WS-ALTCLI-ESPELHO.
03 CHAVE-ALTCLI.
05 ALTCLI-AGENCIA-AUX PIC 9(05).
05 ALTCLI-NUMERO-CONTA-AUX PIC 9(10).
03 ALTCLI-NOME-CLIENTE-AUX PIC X(40).
03 ALTCLI-TELEFONE-AUX PIC 9(08).
03 ALTCLI-RENDA-MENSAL-AUX PIC 9(11)V99 COMP-3.
03 ALTCLI-DATA-RECAD-AUX.
05 ALTCLI-ANO-RECAD-AUX PIC 9(04).
05 ALTCLI-MES-RECAD-AUX PIC 9(02).
05 ALTCLI-DIA-RECAD-AUX PIC 9(02).
*---------------------------------------------------------------*
* CONTADORES E MARCARAS DE CONTADORES *
*---------------------------------------------------------------*
01 WS-CONTADORES.
03 WS-ACUM-CADCLI PIC 9(09) COMP VALUE ZEROS.
03 WS-ACUM-ALTCLI PIC 9(09) COMP VALUE ZEROS.
03 WS-ACUM-INCLUIDOS PIC 9(09) COMP VALUE ZEROS.
03 WS-ACUM-ALTERADOS PIC 9(09) COMP VALUE ZEROS.
03 WS-ACUM-EXCLUIDOS PIC 9(09) COMP VALUE ZEROS.
01 VARIAVEIS-MASC.
05 WS-ACUM-CADCLI-MASC PIC ZZ.ZZ9.
05 WS-ACUM-ALTCLI-MASC PIC ZZ.ZZ9.
03 WS-ACUM-INCLUIDOS-MASC PIC ZZ.ZZ9.
03 WS-ACUM-ALTERADOS-MASC PIC ZZ.ZZ9.
03 WS-ACUM-EXCLUIDOS-MASC PIC ZZ.ZZ9.
*---------------------------------------------------------------*
* VARIAVEL UTILIZADA PARA CHAMAR O PROGRAMA AC040010 *
*---------------------------------------------------------------*
01 WS-PROGRAMA PIC X(08).
*---------------------------------------------------------------*
* PROCEDURE DIVISION *
*---------------------------------------------------------------*
PROCEDURE DIVISION.
*
00000-PRINCIPAL.
PERFORM 01000-INICIALIZAR
PERFORM 02000-PROCESSAR UNTIL WS-STATUS-CADCLI-FIM AND
WS-STATUS-ALTCLI-FIM
PERFORM 03000-FINALIZAR
GOBACK.
*
01000-INICIALIZAR.
PERFORM 01100-ABRIR-ARQUIVOS
PERFORM 09100-LER-CADCLI
IF WS-STATUS-CADCLI-FIM
DISPLAY 'ARQUIVO CADCLI VAZIO: ' WS-STATUS-CADCLI
PERFORM 09900-ABEND
END-IF
PERFORM 09200-LER-ALTCLI
IF WS-STATUS-ALTCLI-FIM
DISPLAY 'ARQUIVO ALTCLI VAZIO: ' WS-STATUS-ALTCLI
PERFORM 09900-ABEND
END-IF
PERFORM 01200-INICIALIZAR-VARIAVEIS.
*
01100-ABRIR-ARQUIVOS.
OPEN INPUT CADCLI
IF NOT WS-STATUS-CADCLI-OK
DISPLAY 'ERRO ABERTURA CADCLI ' WS-STATUS-CADCLI
PERFORM 09900-ABEND
END-IF
OPEN INPUT ALTCLI
IF NOT WS-STATUS-ALTCLI-OK
DISPLAY 'ERRO ABERTURA ALTCLI ' WS-STATUS-ALTCLI
PERFORM 09900-ABEND
END-IF
OPEN OUTPUT CADCLIN
IF NOT WS-STATUS-CADCLIN-OK
DISPLAY 'ERRO ABERTURA CADCLIN ' WS-STATUS-CADCLIN
PERFORM 09900-ABEND
END-IF.
*
01200-INICIALIZAR-VARIAVEIS.
INITIALIZE WS-CONTADORES.
*
02000-PROCESSAR.
PERFORM 02100-VALIDAR-DATA
IF LS-DATA-NAO-OK
PERFORM 02200-DATA-INVALIDA
ELSE IF CHAVE-CADCLI = CHAVE-ALTCLI
PERFORM 02300-GRAVAR-ALTERACAO
PERFORM 09100-LER-CADCLI
PERFORM 09200-LER-ALTCLI
ELSE IF CHAVE-CADCLI < CHAVE-ALTCLI
ADD 1 TO WS-ACUM-EXCLUIDOS
PERFORM 09100-LER-CADCLI
ELSE
PERFORM 02400-GRAVAR-INCLUSAO
PERFORM 09200-LER-ALTCLI
END-IF
END-IF
END-IF.
*
02100-VALIDAR-DATA.
MOVE ALTCLI-ANO-RECADASTRAMENTO TO
LS-ANO-VALIDA
MOVE ALTCLI-MES-RECADASTRAMENTO TO
LS-MES-VALIDA
MOVE ALTCLI-DIA-RECADASTRAMENTO TO
LS-DIA-VALIDA
SET LS-VALIDAR-DATA TO TRUE
MOVE 'AC040010' TO WS-PROGRAMA
CALL WS-PROGRAMA USING POOL0010-LINKAGE.
IF LS-FLAG-ROTINA-INVALIDA
DISPLAY 'ERRO CALL AC040010 '
PERFORM 09900-ABEND
END-IF.
*
02200-DATA-INVALIDA.
DISPLAY 'DATA DE RECADATRAMENTO INVALIDA: '
REGISTRO-ALTCLI
DISPLAY LS-ANO-VALIDA
DISPLAY LS-MES-VALIDA
DISPLAY LS-DIA-VALIDA
PERFORM 09900-ABEND.
*
02300-GRAVAR-ALTERACAO.
MOVE ALTCLI-AGENCIA TO CADCLIN-AGENCIA
MOVE ALTCLI-NUMERO-CONTA TO CADCLIN-NUMERO-CONTA
MOVE ALTCLI-NOME-CLIENTE TO CADCLIN-NOME-CLIENTE
MOVE ALTCLI-TELEFONE TO CADCLIN-TELEFONE
MOVE ALTCLI-RENDA-MENSAL TO CADCLIN-RENDA-MENSAL
MOVE CADCLI-SALDO-ATUAL TO CADCLIN-SALDO-ATUAL
PERFORM 09300-CARREGA-DATA
MOVE LS-DATA-MASC TO CADCLIN-DATA-GRAVACAO
MOVE LS-HORA-MASC TO CADCLIN-HORA-GRAVACAO
WRITE REGISTRO-CADCLIN FROM WS-REGISTRO-CADCLIN
ADD 1 TO WS-ACUM-ALTERADOS.
*
02400-GRAVAR-INCLUSAO.
MOVE ALTCLI-AGENCIA TO CADCLIN-AGENCIA
MOVE ALTCLI-NUMERO-CONTA TO CADCLIN-NUMERO-CONTA
MOVE ALTCLI-NOME-CLIENTE TO CADCLIN-NOME-CLIENTE
MOVE ALTCLI-TELEFONE TO CADCLIN-TELEFONE
MOVE ALTCLI-RENDA-MENSAL TO CADCLIN-RENDA-MENSAL
MOVE ZEROS TO CADCLIN-SALDO-ATUAL
PERFORM 09300-CARREGA-DATA
MOVE LS-DATA-MASC TO CADCLIN-DATA-GRAVACAO
MOVE LS-HORA-MASC TO CADCLIN-HORA-GRAVACAO
WRITE REGISTRO-CADCLIN FROM WS-REGISTRO-CADCLIN
ADD 1 TO WS-ACUM-INCLUIDOS.
*
03000-FINALIZAR.
PERFORM 03100-FECHAR-ARQUIVOS
PERFORM 09400-ESTATISTICAS.
*
03100-FECHAR-ARQUIVOS.
CLOSE CADCLI
IF NOT WS-STATUS-CADCLI-OK
DISPLAY 'ERRO NO FECHAMENTO CADCLI ' WS-STATUS-CADCLI
PERFORM 09900-ABEND
END-IF
CLOSE ALTCLI
IF NOT WS-STATUS-ALTCLI-OK
DISPLAY 'ERRO NO FECHAMENTO ALTCLI ' WS-STATUS-ALTCLI
PERFORM 09900-ABEND
END-IF
CLOSE CADCLIN
IF NOT WS-STATUS-CADCLIN-OK
DISPLAY 'ERRO NO FECHAMENTO CADCLIN ' WS-STATUS-CADCLIN
PERFORM 09900-ABEND
END-IF.
*
09100-LER-CADCLI.
READ CADCLI INTO WS-REGISTRO-CADCLI
MOVE WS-REGISTRO-CADCLI TO WS-CADCLI-ESPELHO
IF NOT WS-STATUS-CADCLI-OK
IF NOT WS-STATUS-CADCLI-FIM
DISPLAY 'ERRO LEITURA CADCLI: ' WS-STATUS-CADCLI
PERFORM 09900-ABEND
END-IF
END-IF
ADD 1 TO WS-ACUM-CADCLI
IF WS-STATUS-CADCLI-FIM
MOVE HIGH-VALUES TO CHAVE-CADCLI
END-IF.
*
09200-LER-ALTCLI.
READ ALTCLI INTO WS-REGISTRO-ALTCLI
MOVE WS-REGISTRO-ALTCLI TO WS-ALTCLI-ESPELHO
IF NOT WS-STATUS-ALTCLI-OK
IF NOT WS-STATUS-ALTCLI-FIM
DISPLAY 'ERRO LEITURA ALTCLI: ' WS-STATUS-ALTCLI
PERFORM 09900-ABEND
END-IF
END-IF
ADD 1 TO WS-ACUM-ALTCLI
IF WS-STATUS-ALTCLI-FIM
MOVE HIGH-VALUES TO CHAVE-ALTCLI
END-IF.
*
09300-CARREGA-DATA.
SET LS-CARREGAR-DATA-HORA TO TRUE
MOVE 'AC040010' TO WS-PROGRAMA
CALL WS-PROGRAMA USING POOL0010-LINKAGE.
IF LS-FLAG-ROTINA-INVALIDA
DISPLAY 'ERRO CALL AC040010 '
PERFORM 09900-ABEND
END-IF
MOVE LS-DIA-MASC TO CADCLIN-DIA-GRAVACAO
MOVE LS-MES-MASC TO CADCLIN-MES-GRAVACAO
MOVE LS-ANO-MASC TO CADCLIN-ANO-GRAVACAO
MOVE LS-HORA-MASC TO CADCLIN-HORA-GRAVACAO.
*
09400-ESTATISTICAS.
MOVE WS-ACUM-CADCLI TO
WS-ACUM-CADCLI-MASC
MOVE WS-ACUM-ALTCLI TO
WS-ACUM-ALTCLI-MASC
MOVE WS-ACUM-INCLUIDOS TO
WS-ACUM-INCLUIDOS-MASC
MOVE WS-ACUM-ALTERADOS TO
WS-ACUM-ALTERADOS-MASC
MOVE WS-ACUM-EXCLUIDOS TO
WS-ACUM-EXCLUIDOS-MASC
DISPLAY 'TOTAL DE REG. LIDOS CADCLI:'
WS-ACUM-CADCLI-MASC
DISPLAY 'TOTAL DE REG. LIDOS ALTCLI:'
WS-ACUM-ALTCLI-MASC
DISPLAY 'TOTAL DE REGISTRO INCLUIDOS:'
WS-ACUM-INCLUIDOS-MASC
DISPLAY 'TOTAL DE REGISTROS ALTERADOS:'
WS-ACUM-ALTERADOS-MASC
DISPLAY 'TOTAL DE REGISTROS EXCLUIDOS:'
WS-ACUM-EXCLUIDOS-MASC.
*
09900-ABEND.
DISPLAY 'ERRO ANORMAL DO PROGRAMA AC040008'
PERFORM 09400-ESTATISTICAS
GOBACK.

Das könnte Ihnen auch gefallen