Created
July 11, 2025 23:48
-
-
Save bencz/8dc678121b8c44bf807b2a1202008094 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
IDENTIFICATION DIVISION. | |
PROGRAM-ID. FOLHA-PAGAMENTO. | |
AUTHOR. SILVA. | |
DATE-WRITTEN. 2011. | |
ENVIRONMENT DIVISION. | |
INPUT-OUTPUT SECTION. | |
FILE-CONTROL. | |
SELECT ARQUIVO-FUNCIONARIOS ASSIGN TO "FUNCIONARIOS.DAT" | |
ORGANIZATION IS LINE SEQUENTIAL. | |
SELECT RELATORIO-FOLHA ASSIGN TO "FOLHA.RPT" | |
ORGANIZATION IS LINE SEQUENTIAL. | |
DATA DIVISION. | |
FILE SECTION. | |
FD ARQUIVO-FUNCIONARIOS. | |
01 REGISTRO-FUNCIONARIO. | |
05 FUNC-CODIGO PIC 9(5). | |
05 FUNC-NOME PIC X(30). | |
05 FUNC-SALARIO-BASE PIC 9(6)V99. | |
05 FUNC-HORAS-EXTRAS PIC 9(3). | |
05 FUNC-DEPENDENTES PIC 9(2). | |
FD RELATORIO-FOLHA. | |
01 LINHA-RELATORIO PIC X(80). | |
WORKING-STORAGE SECTION. | |
01 WS-INDICATORS. | |
05 WS-EOF-FLAG PIC X VALUE 'N'. | |
05 WS-PRIMEIRO-REG PIC X VALUE 'S'. | |
01 WS-CALCULOS. | |
05 WS-VALOR-HORA-EXTRA PIC 9(4)V99 VALUE 25.00. | |
05 WS-SALARIO-FAMILIA PIC 9(3)V99 VALUE 45.50. | |
05 WS-PERCENTUAL-INSS PIC 9V99 VALUE 0.11. | |
05 WS-PERCENTUAL-IRRF PIC 9V99 VALUE 0.15. | |
01 WS-VALORES-CALCULADOS. | |
05 WS-TOTAL-HORAS-EXTRAS PIC 9(6)V99. | |
05 WS-TOTAL-SAL-FAMILIA PIC 9(5)V99. | |
05 WS-SALARIO-BRUTO PIC 9(7)V99. | |
05 WS-DESCONTO-INSS PIC 9(6)V99. | |
05 WS-DESCONTO-IRRF PIC 9(6)V99. | |
05 WS-SALARIO-LIQUIDO PIC 9(7)V99. | |
01 WS-TOTAIS-GERAIS. | |
05 WS-TOTAL-FUNCIONARIOS PIC 9(4) VALUE ZERO. | |
05 WS-TOTAL-BRUTO-GERAL PIC 9(9)V99 VALUE ZERO. | |
05 WS-TOTAL-LIQUIDO-GERAL PIC 9(9)V99 VALUE ZERO. | |
01 WS-LINHA-DETALHE. | |
05 FILLER PIC X(5) VALUE SPACES. | |
05 DET-CODIGO PIC 9(5). | |
05 FILLER PIC X(2) VALUE SPACES. | |
05 DET-NOME PIC X(20). | |
05 FILLER PIC X(2) VALUE SPACES. | |
05 DET-SALARIO-BRUTO PIC ZZZ,ZZ9.99. | |
05 FILLER PIC X(2) VALUE SPACES. | |
05 DET-DESCONTO-TOTAL PIC ZZZ,ZZ9.99. | |
05 FILLER PIC X(2) VALUE SPACES. | |
05 DET-SALARIO-LIQUIDO PIC ZZZ,ZZ9.99. | |
01 WS-LINHA-CABECALHO. | |
05 FILLER PIC X(20) VALUE SPACES. | |
05 FILLER PIC X(40) | |
VALUE "*** RELATORIO DE FOLHA DE PAGAMENTO ***". | |
01 WS-LINHA-TITULOS. | |
05 FILLER PIC X(5) VALUE "COD.". | |
05 FILLER PIC X(7) VALUE SPACES. | |
05 FILLER PIC X(20) VALUE "NOME DO FUNCIONARIO". | |
05 FILLER PIC X(2) VALUE SPACES. | |
05 FILLER PIC X(12) VALUE "SAL. BRUTO". | |
05 FILLER PIC X(4) VALUE SPACES. | |
05 FILLER PIC X(10) VALUE "DESCONTOS". | |
05 FILLER PIC X(4) VALUE SPACES. | |
05 FILLER PIC X(12) VALUE "SAL. LIQUIDO". | |
PROCEDURE DIVISION. | |
MAIN-PROCESS. | |
PERFORM INICIALIZA-PROGRAMA | |
PERFORM PROCESSA-ARQUIVO | |
PERFORM FINALIZA-PROGRAMA | |
STOP RUN. | |
INICIALIZA-PROGRAMA. | |
OPEN INPUT ARQUIVO-FUNCIONARIOS | |
OPEN OUTPUT RELATORIO-FOLHA | |
PERFORM ESCREVE-CABECALHO | |
PERFORM LE-FUNCIONARIO. | |
PROCESSA-ARQUIVO. | |
PERFORM UNTIL WS-EOF-FLAG = 'S' | |
PERFORM CALCULA-SALARIO | |
PERFORM ESCREVE-DETALHE | |
PERFORM ACUMULA-TOTAIS | |
PERFORM LE-FUNCIONARIO | |
END-PERFORM | |
PERFORM ESCREVE-TOTAIS. | |
CALCULA-SALARIO. | |
COMPUTE WS-TOTAL-HORAS-EXTRAS = | |
FUNC-HORAS-EXTRAS * WS-VALOR-HORA-EXTRA | |
COMPUTE WS-TOTAL-SAL-FAMILIA = | |
FUNC-DEPENDENTES * WS-SALARIO-FAMILIA | |
COMPUTE WS-SALARIO-BRUTO = | |
FUNC-SALARIO-BASE + WS-TOTAL-HORAS-EXTRAS + WS-TOTAL-SAL-FAMILIA | |
COMPUTE WS-DESCONTO-INSS = | |
WS-SALARIO-BRUTO * WS-PERCENTUAL-INSS | |
IF WS-SALARIO-BRUTO > 3000 | |
COMPUTE WS-DESCONTO-IRRF = | |
WS-SALARIO-BRUTO * WS-PERCENTUAL-IRRF | |
ELSE | |
MOVE ZERO TO WS-DESCONTO-IRRF | |
END-IF | |
COMPUTE WS-SALARIO-LIQUIDO = | |
WS-SALARIO-BRUTO - WS-DESCONTO-INSS - WS-DESCONTO-IRRF. | |
ESCREVE-CABECALHO. | |
WRITE LINHA-RELATORIO FROM WS-LINHA-CABECALHO | |
WRITE LINHA-RELATORIO FROM SPACES | |
WRITE LINHA-RELATORIO FROM WS-LINHA-TITULOS | |
WRITE LINHA-RELATORIO FROM SPACES. | |
ESCREVE-DETALHE. | |
MOVE FUNC-CODIGO TO DET-CODIGO | |
MOVE FUNC-NOME TO DET-NOME | |
MOVE WS-SALARIO-BRUTO TO DET-SALARIO-BRUTO | |
COMPUTE DET-DESCONTO-TOTAL = WS-DESCONTO-INSS + WS-DESCONTO-IRRF | |
MOVE WS-SALARIO-LIQUIDO TO DET-SALARIO-LIQUIDO | |
WRITE LINHA-RELATORIO FROM WS-LINHA-DETALHE. | |
ACUMULA-TOTAIS. | |
ADD 1 TO WS-TOTAL-FUNCIONARIOS | |
ADD WS-SALARIO-BRUTO TO WS-TOTAL-BRUTO-GERAL | |
ADD WS-SALARIO-LIQUIDO TO WS-TOTAL-LIQUIDO-GERAL. | |
ESCREVE-TOTAIS. | |
WRITE LINHA-RELATORIO FROM SPACES | |
WRITE LINHA-RELATORIO FROM SPACES | |
MOVE SPACES TO LINHA-RELATORIO | |
STRING "TOTAL DE FUNCIONARIOS: " | |
WS-TOTAL-FUNCIONARIOS | |
INTO LINHA-RELATORIO | |
WRITE LINHA-RELATORIO | |
MOVE SPACES TO LINHA-RELATORIO | |
STRING "TOTAL BRUTO GERAL: R$ " | |
WS-TOTAL-BRUTO-GERAL | |
INTO LINHA-RELATORIO | |
WRITE LINHA-RELATORIO | |
MOVE SPACES TO LINHA-RELATORIO | |
STRING "TOTAL LIQUIDO GERAL: R$ " | |
WS-TOTAL-LIQUIDO-GERAL | |
INTO LINHA-RELATORIO | |
WRITE LINHA-RELATORIO. | |
LE-FUNCIONARIO. | |
READ ARQUIVO-FUNCIONARIOS | |
AT END MOVE 'S' TO WS-EOF-FLAG | |
END-READ. | |
FINALIZA-PROGRAMA. | |
CLOSE ARQUIVO-FUNCIONARIOS | |
CLOSE RELATORIO-FOLHA | |
DISPLAY "PROCESSAMENTO CONCLUIDO COM SUCESSO" | |
DISPLAY "TOTAL DE FUNCIONARIOS PROCESSADOS: " | |
WS-TOTAL-FUNCIONARIOS. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment