Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Resolução - Exercício CPF

       IDENTIFICATION DIVISION.
       PROGRAM-ID. PROGCOB06.
      **************************************************************
      * AREA DE COMENTÁRIOS -  REMARKS
      * AUTHOR: ROBERT.
      * OBJETIVO: RECEBER UM NOME E CPF E IMPRIMIR FORMATADO
      * DATA: 24/09/2019.
      **************************************************************
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SPECIAL-NAMES.
           DECIMAL-POINT IS COMMA.
       DATA DIVISION.
       WORKING-STORAGE SECTION.

       01 WRK-NOME          PIC X(20).
       01 WRK-CPF.
           05 WRK-CPF1      PIC 9(03).
           05 WRK-CPF2      PIC 9(03).
           05 WRK-CPF3      PIC 9(03).
           05 WRK-DIGITOS   PIC 9(02).

       PROCEDURE DIVISION.

           DISPLAY 'NOME: '
           ACCEPT WRK-NOME.

           DISPLAY 'CPF (SOMENTE NUMEROS): '
           ACCEPT WRK-CPF.

           DISPLAY 'OLA ' WRK-NOME.
           DISPLAY 'CPF: ' WRK-CPF1 '-'
                           WRK-CPF2 '-'
                           WRK-CPF3 '-'
                           WRK-DIGITOS '.'.
           STOP RUN.

Resolvi o exercício desta maneira. É correto também? Ou pouco usual na prática? Alem disso, não há nenhuma maneira de formatar uma variável já com o '-' para os dois dígitos finais?

1 resposta
solução

Robert,

Pode criar uma variavel espelho com FILLER e depois mover os valores da variavel do accept (wrk-cpf) com a opcao CORRESPONDING.

   IDENTIFICATION DIVISION.
   PROGRAM-ID. PROGCOB06.
  **************************************************************
  * AREA DE COMENTÁRIOS -  REMARKS
  * AUTHOR: ROBERT.
  * OBJETIVO: RECEBER UM NOME E CPF E IMPRIMIR FORMATADO
  * DATA: 24/09/2019.
  **************************************************************
   ENVIRONMENT DIVISION.
   CONFIGURATION SECTION.
   SPECIAL-NAMES.
       DECIMAL-POINT IS COMMA.
   DATA DIVISION.
   WORKING-STORAGE SECTION.

   01 WRK-NOME          PIC X(20).
   01 WRK-CPF.
       05 WRK-CPF1      PIC 9(03).
       05 WRK-CPF2      PIC 9(03).
       05 WRK-CPF3      PIC 9(03).
       05 WRK-DIGITOS   PIC 9(02).
   01 WRK-CPF-ED.
       05 WRK-CPF1       PIC 9(03).
       05 FILLER         PIC X VALUE '.'.
       05 WRK-CPF2       PIC 9(03).
       05 FILLER         PIC X VALUE '.'.           
       05 WRK-CPF3       PIC 9(03).
       05 FILLER         PIC X VALUE '-'.           
       05 WRK-DIGITOS    PIC 9(02).
   77  WRK-SAI       PIC ZZZ/ZZZ-ZZZ-ZZ.    

   PROCEDURE DIVISION.

       DISPLAY 'NOME: '.
       ACCEPT WRK-NOME.

       DISPLAY 'CPF (SOMENTE NUMEROS): '.
       ACCEPT WRK-CPF.
       MOVE CORRESPONDING WRK-CPF TO WRK-CPF-ED.

       DISPLAY 'OLA ' WRK-NOME.
       DISPLAY 'CPF: ' WRK-CPF-ED.

Ivan