You are on page 1of 3

000100

000200
000300
000400
000500
000600
000700
000710
000720
000730
000731
000740
000750
000751
000760
000770
000780
000781
000790
000791
000792
000793
000794
000795
000796
000797
000798
000799
000800
000801
000802
000810
000900
001000
001100
001200
001300
001400
001500
001600
001601
001602
001603
001604
001605
001606
001607
001608
001609
001610
001611
001612
001613
001614
001615
001616
001617
001618
001619
001620

000100*-----------------------000200 IDENTIFICATION DIVISION.


000300*-----------------------000400 PROGRAM-ID. COBS0999.
000500******************************************************************
000600* CALCULA DIGITO VERIFICADOR DE CPF. EXEMPLO:
000700*
000710* 9 4 5 8 1 5 9 0 3 =
000720* X X X X X X X X X
000730* 1 2 3 4 5 6 7 8 9
000731* - - - - - - - - 000740* 9 8 1 3 5 3 6 0 2 = 189 / 11 = 17 RESTO 2 ---
000750*
5 2 0 3 7
|
|
000751*
|
|
000760* 9 4 5 8 1 5 9 0 3 2 <-------------------
|
000770* X X X X X X X X X X
|
000780* 0 1 2 3 4 5 6 7 8 9
|
000781* - - - - - - - - - |
000790* 0 4 1 2 4 2 5 0 2 1 = 163 / 11 = 14 RESTO 9 |
000791*
0 4 5 4 4 8
| |
000792*
| |
000793* RESULTADO: 94581590329
| |
000794*

| |
000795*
||
| |
000796*
|-------------------- |
000797*
------------------------
000798*
000799* OBS: SE RESTO FOR 10, CONSIDERAR 0.
000800*
000801* HTTP://WWW.GERADORCPF.COM/
000802******************************************************************
000810*--------------------000900 ENVIRONMENT DIVISION.
001000*--------------------001100*-------------001200 DATA DIVISION.
001300*-------------001400*-----------------------001500 WORKING-STORAGE SECTION.
001600*-----------------------001601 77 I
PIC 9(002) VALUE 0.
001602 77 F
PIC 9(001) VALUE 1.
001603 77 G
PIC 9(001) VALUE 0.
001604 77 INTEIRO
PIC 9(002) VALUE 0.
001605 77 RESTO
PIC 9(002) VALUE 0.
001606 77 TOTAL
PIC 9(003) VALUE 0.
001607*
001608 01 CPF-RECEBIDO
PIC 9(011).
001609 01 CPF-CALC REDEFINES CPF-RECEBIDO.
001610
03 D1
PIC 9(001).
001611
03 D2
PIC 9(001).
001612
03 D3
PIC 9(001).
001613
03 D4
PIC 9(001).
001614
03 D5
PIC 9(001).
001615
03 D6
PIC 9(001).
001616
03 D7
PIC 9(001).
001617
03 D8
PIC 9(001).
001618
03 D9
PIC 9(001).
001619
03 D10
PIC 9(001).
001620
03 D11
PIC 9(001).

001621
001622
001623
001624
001625
001626
001627
001633
001635
001660
001670
001675
001677
001678
001679
001680
001681
001682
001683
001684
001685
001696
001697
001698
001700
001701
001702
001703
001704
001705
001706
001707
001708
001709
001710
001711
001712
001713
001714
001715
001717
001718
001719
001720
001721
001722
001723
001724
001730
001800
001900
002000
002001
002002
002003
002004
002005
002006
002007
002008

001621*
001622 01 CPF-I REDEFINES CPF-CALC.
001623
03 CPF-DIG OCCURS 11 TIMES.
001624
05 DIG
PIC 9(001).
001625*------------------001626 PROCEDURE DIVISION.
001627*------------------001633
PERFORM RECEBE-CONTAINER-CPF.
001635
PERFORM CALCULA-PRIMEIRO-DIGITO.
001660
PERFORM CALCULA-SEGUNDO-DIGITO.
001670
PERFORM GERA-CONTAINER-CPF.
001675
GO TO FIM.
001677******************************************************************
001678* ROTINA RECEBE O CPF NO CONTAINER 'CPF-RECEBIDO'
001679******************************************************************
001680 RECEBE-CONTAINER-CPF.
001681
EXEC CICS GET CONTAINER('CPF-RECEBIDO')
001682
CHANNEL ('CHANNKAZ')
001683
INTO
(CPF-RECEBIDO)
001684
FLENGTH (LENGTH OF CPF-RECEBIDO)
001685
END-EXEC.
001696******************************************************************
001697* ROTINA CALCULA O PRIMEIRO DIGITO
001698******************************************************************
001700 CALCULA-PRIMEIRO-DIGITO.
001701
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 9
001702
COMPUTE TOTAL = TOTAL + DIG(I) * F
001703
ADD 1 TO F
001704
END-PERFORM
001705*
001706
DIVIDE TOTAL BY 11 GIVING INTEIRO REMAINDER RESTO
001707
IF RESTO > 9 THEN
001708
MOVE 0 TO D10
001709
ELSE
001710
MOVE RESTO TO D10
001711
END-IF
001712
MOVE 0 TO TOTAL.
001713******************************************************************
001714* ROTINA CALCULA O SEGUNDO DIGITO
001715******************************************************************
001717 CALCULA-SEGUNDO-DIGITO.
001718
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10
001719
COMPUTE TOTAL = TOTAL + DIG(I) * G
001720
ADD 1 TO G
001721
END-PERFORM
001722*
001723
DIVIDE TOTAL BY 11 GIVING INTEIRO REMAINDER RESTO
001724
IF RESTO > 9 THEN
001730
MOVE 0 TO D11
001800
ELSE
001900
MOVE RESTO TO D11
002000
END-IF.
002001******************************************************************
002002* ROTINA GRAVA O CPF CALCULADO NO CONTAINER 'CPF-GERADO'
002003******************************************************************
002004 GERA-CONTAINER-CPF.
002005
EXEC CICS PUT CONTAINER('CPF-GERADO')
002006
CHANNEL ('CHANNKAZ')
002007
FROM
(CPF-RECEBIDO)
002008
FLENGTH (LENGTH OF CPF-RECEBIDO)

002009
002010
002011
002020
002100
002200
******

002009
END-EXEC.
002010******************************************************************
002011* ROTINA FINALIZA O PROGRAMA
002020******************************************************************
002100 FIM.
002200
EXEC CICS RETURN END-EXEC.
**************************** Bottom of Data ****************************

You might also like