Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

MASCARA E MEDIA

A media deu 07,5 só que eu quero colocar a mascara para tirar o 0 da esquerda e não esta dando certo

   77  WRK-MEDIA    PIC 9(02)V9  VALUE ZEROS.
   77  WRK-MEDIA-ED PIC Z9,9     VALUE ZEROS.

O resultado está vindo como: 0,1

6 respostas

Ola, Stephanie.

Quais valores você passou para dar 07,5 ? Se possivel coloque aqui o codigo completo + os valores que passou. A principio sua mascara esta certa.

Ivan

 IDENTIFICATION DIVISION.
       PROGRAM-ID. PROGCOB02.
      **************************************
      * AREA DE COMENTARIOS - REMARKS
      * AUTHOR  = STEPHANIE
      * DATA: 02/04/2021
      *************************************
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
           SPECIAL-NAMES.
           DECIMAL-POINT IS COMMA.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       77  WRK-NOTA1    PIC 9(02)    VALUE ZEROS.
       77  WRK-NOTA2    PIC 9(02)    VALUE ZEROS.
       77  WRK-MEDIA    PIC 9(02)V9  VALUE ZEROS.
       77  WRK-MEDIA-ED PIC Z9,9     VALUE ZEROS.
       PROCEDURE DIVISION.
           ACCEPT WRK-NOTA1.
           ACCEPT WRK-NOTA2.

           COMPUTE WRK-MEDIA = (WRK-NOTA1 + WRK-NOTA2) / 2
              MOVE WRK-MEDIA TO WRK-MEDIA-ED
           DISPLAY 'MEDIA...' WRK-MEDIA-ED
            EVALUATE WRK-MEDIA-ED
              WHEN 6 THRU 10
                   DISPLAY 'APROVADO'
              WHEN 2 THRU 5
                   DISPLAY 'RECUPERACAO'
              WHEN OTHER
                   DISPLAY 'REPROVADO'
            END-EVALUATE.
           STOP RUN.

7,15 7,15 MEDIA... 7,0 REPROVADO

sendo que o resultado é 7,15 cheguei a colocar 77 WRK-MEDIA PIC 9(02)V99 VALUE ZEROS. 77 WRK-MEDIA-ED PIC Z9,99 VALUE ZEROS.

e o resultado ficou 7,00

exemplo também 0,25 0,25 MEDIA... 0,00 REPROVADO

sendo que o resultado deveria ser 0,25

O evaluate deve ser na variavel WRK-MEDIA..

Ivan

Coloquei e também deu o mesmo resultado =/ ele não demonstra o valor depois da virgula, 7,5 7,5 7,5 MEDIA... 7,0 APROVADO

solução!

Se você colocar na entrada 7,15 então a variavel de entrada precisa ter 02 casas decimais. No seu codigo estão como inteiras. Outra coisa.. Sua variavel media esta com uma casa decimal apenas, então 7,15 com 7,15 irá virar 7,10 e nao 7,15 (a ultima casa ele não resolve).

Codigo funcionando:

   IDENTIFICATION DIVISION.
   PROGRAM-ID. PROGCOB02.
  **************************************
  * AREA DE COMENTARIOS - REMARKS
  * AUTHOR  = STEPHANIE
  * DATA: 02/04/2021
  *************************************
   ENVIRONMENT DIVISION.
   CONFIGURATION SECTION.
       SPECIAL-NAMES.
       DECIMAL-POINT IS COMMA.
   DATA DIVISION.
   WORKING-STORAGE SECTION.
   77  WRK-NOTA1    PIC 9(02)v99    VALUE ZEROS.
   77  WRK-NOTA2    PIC 9(02)v99    VALUE ZEROS.
   77  WRK-MEDIA    PIC 9(02)V99  VALUE ZEROS.
   77  WRK-MEDIA-ED PIC Z9,99     VALUE ZEROS.
   PROCEDURE DIVISION.
       ACCEPT WRK-NOTA1.
       ACCEPT WRK-NOTA2.

       COMPUTE WRK-MEDIA = (WRK-NOTA1 + WRK-NOTA2) / 2
          MOVE WRK-MEDIA TO WRK-MEDIA-ED
       DISPLAY 'MEDIA...' WRK-MEDIA-ED
        EVALUATE WRK-MEDIA 
          WHEN 6 THRU 10
               DISPLAY 'APROVADO'
          WHEN 2 THRU 5
               DISPLAY 'RECUPERACAO'
          WHEN OTHER
               DISPLAY 'REPROVADO'
        END-EVALUATE.
       STOP RUN.

Ivan

Agora deu certinho Ivan, Muiiiiiiiiito obrigada -

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software