IDENTIFICATION DIVISION.
PROGRAM-ID.TESTE-TREINAMENTO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT REGISTRO-FUNCIONARIO ASSIGN TO DISK.
SELECT REGISTRO-MOVIMENTO ASSIGN TO DISK.
SELECT LISTA-FUNCIONARIO ASSIGN TO SYS$OUTPUT.
SELECT LISTA-RELATORIO ASSIGN TO SYS$OUTPUT.
DATA DIVISION.
FILE SECTION.
FD REGISTRO-FUNCIONARIO
01 REG-FUNCIONARIO.
05 MATRICULA-FUNCIONARIO-E PIC X(05)
05 NOME-FUNCIONARIO-E PIC X(30)
FD REGISTRO-MOVIMENTO
01 REG-MOVIMENTO.
05 MATRICULA-FUNCIONARIO-MOVIMENTO-E PIC X(05)
05 TIPO-REGISTRO-E PIC X(01)
05 CIA-SUCURSAL-RAMO-E PIC X(04)
05 VALOR-DESPESA-E PIC 9(04)V99
FD LISTA-FUNCIONARIO
01 REG-IMPR.
05 FILLER PIC X(20)
05 NOME-FUNCIONARIO-S PIC X(05)
05 FILLER PIC X(20)
05 TIPO-REGISTRO-S PIC 9(04)
05 FILLER PIC X(20)
05 CIA-SUCURSAL-RAMO-S PIC X(04)
05 FILLER PIC X(20)
05 VALOR-DESPESA-S PIC 9(04)V99
FD LISTA-RELATORIO LABEL RECORDS ARE OMITTED.
01 REG-FUNCIONARIO.
05 FILLER PIC X(20)
05 MATRICULA-FUNCIONARIO-SS PIC X(05)
05 FILLER PIC X(20)
05 NOME-FUNCIONARIO-SS PIC X(30)
05 FILLER PIC X(20)
05 TOTAL-DESPESA-CIA PIC 9(06)V99
05 FILLER PIC X(20)
05 TOTAL-DESPESA-SUCURSAL PIC 9(06)V99
05 FILLER PIC X(20)
05 TOTAL-DESPESA-RAMO PIC 9(06)V99
FD LISTA-DESPESA
01 REG-DESPESA
05 FILLER PIC X(20)
05 CONTADOR_DESPESA_CIA PIC 9(10)V99
05 FILLER PIC X(20)
05 CONTADOR_SUCURSAL_CIA PIC 9(10)V99
05 FILLER PIC X(20)
05 CONTADOR_RAMO_CIA PIC 9(10)V99
WORKING-STORAGE SECTION.
*CABECALHO
01 CABECALHO-01.
03 FILLER PIC X(008) VALUE 'TABELA DE MOVIMENTO'.
03 FILLER PIC X(009) VALUE 'MATRICULA: '.
03 MATRICULA-FUNCIONARIO-SS PIC X(030) VALUE SPACES.
03 FILLER PIC X(006) VALUE 'NOME: '.
03 NOME-FUNCIONARIO-SS PIC X(030) VALUE SPACES.
03 FILLER PIC X(001) VALUE '|'.
03 FILLER PIC X(017) VALUE 'TIPO DE REGISTRO: '.
03 TIPO-REGISTRO-E PIC X(001) VALUE SPACES.
03 FILLER PIC X(001) VALUE '|'.
03 FILLER PIC X(012) VALUE 'COD CIA-S-R '.
03 CIA-SUCURSAL-RAMO-E PIC X(004) VALUE SPACES.
03 FILLER PIC X(001) VALUE '|'.
03 FILLER PIC X(025) VALUE 'DESPESAS DO FUNCIONARIO: '.
03 VALOR-DESPESA-S PIC 9(010) VALUE SPACES.
03 FILLER PIC X(001) VALUE '|'.
01 CABECALHO-02.
03 FILLER PIC X(008) VALUE 'TABELA DE FUNCIONARIO'.
03 FILLER PIC X(009) VALUE 'MATRICULA: '.
03 MATRICULA-FUNCIONARIO-SS PIC X(030) VALUE SPACES.
03 FILLER PIC X(001) VALUE '|'.
03 FILLER PIC X(006) VALUE 'NOME: '.
03 NOME-FUNCIONARIO-SS PIC X(030) VALUE SPACES.
03 FILLER PIC X(001) VALUE '|'.
03 FILLER PIC X(025) VALUE 'DESPESAS DO FUNCIONARIO: '.
03 TOTAL-DESPESA-CIA PIC 9(010) VALUE SPACES.
03 FILLER PIC X(001) VALUE '|'.
03 TOTAL-DESPESA-SUCURSAL PIC 9(010) VALUE SPACES.
03 FILLER PIC X(001) VALUE '|'.
03 TOTAL-DESPESA-RAMO PIC 9(010) VALUE SPACES.
03 FILLER PIC X(001) VALUE '|'.
01 HA-MAIS-REGISTROS-FUNCIONARIO PICTURE XXX VALUE 'SIM'.
01 HA-MAIS-REGISTROS-MOVIMENTO PICTURE XXX VALUE 'SIM'.
PROCEDURE DIVISION.
100-MODULO-PRINC.
OPEN INPUT REGISTRO-RELATORIO
OPEN INPUT REGISTRO-MOVIMENTO
OUTPUT LISTA-FUNCIONARIO-MOVIMENTO.
OUTPUT LISTA-RELATORIO.
/*
*/
PERFORM 200-ROTINA-MOVIMENTO
UNTIL HA-MAIS-REGISTROS-MOVIMENTO = 'NAO'.
READ REGISTRO-RELATORIO
AT END MOVE 'NAO' TO HA-MAIS-REGISTROS-FUNCIONARIO.
OPEN INPUT REG-IMPR
******CHAMADA DA FUNCAO DE ROTINA DE MOVIMENTO*******
PERFORM 300-ROTINA-FUNCIONARIO
UNTIL HA-MAIS-REGISTROS-FUNCIONARIO = 'NAO'. = 'NAO'.
************************FIM**************************
CLOSE REGISTRO-FUNCIONARIO
REGISTRO-MOVIMENTO
REG-IMPR
LIST-FUNCIONARIO
LIST-RELATORIO
LIST-TIPO-REGISTRO.
STOP RUN.
*Função de rotina
*********************************
200-ROTINA-MOVIMENTO
*********************************
MOVE SPACES TO REG-IMPR.
IF MATRICULA-FUNCIONARIO-FUNCIONARIO-E = MATRICULA-FUNCIONARIO-MOVIMENTO-E
MOVE NOME-FUNCIONARIO-E TO NOME-FUNCIONARIO-S.
MOVE TIPO-REGISTRO-E TO TIPO-REGISTRO-S
MOVE CIA-SUCURSAL-RAMO-E TO CIA-SUCURSAL-RAMO-S.
MOVE VALOR-DESPESA-E TO VALOR-DESPESA-S.
END-IF
//falta enquanto do movimento
READ REG-MOVIMENTO
AT END MOVE 'NAO' TO HA-MAIS-REGISTROS-FUNCIONARIO
READ REG-FUNCIONARIO
AT END MOVE 'NAO' TO HA-MAIS-REGISTROS-FUNCIONARIO.
********************************
300-ROTINA-MOVIMENTO
********************************
READ REG-IMPR INTO CABECALHO-02
AT END
MOVE MATRICULA-FUNCIONARIO-MOVIMENTO-E TO MATRICULA-FUNCIONARIO-SS
MOVE NOME-FUNCIONARIO-S TO NOME-FUNCIONARIO-SS
IF TIPO-REGISTRO=1
ADD TOTAL-REGISTRO1 1 GIVING TOTAL-REGISTRO1
ADD TOTAL-REGISTRO2 1 GIVING TOTAL-REGISTRO2
ADD TOTAL-REGISTRO3 1 GIVING TOTAL-REGISTRO3
END-IF
WRITE REG-FUNCIONARIO.
400-ROTINA-DESPESAS
READ REG-IMPR INTO CABECALHO-02
AT END
ADD DESPESA-CIA-S CONTADOR-DESPESA-CIA GIVING TOTAL-DESPESA-CIA
ADD DESPESA-SUCURSAL-S CONTADOR-DESPESA-CIA TOTAL-SUCURSAL-CIA
ADD DESPESA-RAMO-S CONTADOR-RAMO-CIA GIVING TOTAL-RAMO-CIA.