20240106

COND (inline)

** COND
** C O N D

* Um IF em forma de expressão
*
**  X = COND dtype|#(... valores condicionados...).


DATA type i.
data type char10.

2.

*if ( a MOD 2 = 0 ) .
*  b = 'Par'.
*else.
*  b = 'Impar'.
*endif.

COND #(
       when mod 0
       then 'Par'
       else 'Impar'
).




* Um IF em forma de expressão
*
**  X = COND dtype|#(... valores condicionados...).

class lcl_01 definition.

  PUBLIC SECTION.

  CLASS-METHODS
    desconto
      IMPORTING
        iv_price    type f
        iv_mode     type char1
      RETURNING VALUE(rv_resulttype f.


ENDCLASS.



DATA v_cheio type f.
*data v_com_desc type f.

v_cheio 150.


class lcl_01 implementation.

   METHOD desconto
     importing
       iv_price type f
       iv_mode  type char1
     returning
       value(rv_resulttype f.

   ENDMETHOD.

ENDCLASS.


*if ( v_cheio > 100 ) .
*  v_com_desc = desconto(.
*     iv_price = v_cheio
*     iv_mode  = 'A'
*  )
*else.
*  v_com_desc = desconto(.
*     iv_price = v_cheio
*     iv_mode  = 'B'
*  )
*endif.



data(v_com_desclcl_01=>desconto(
                     iv_price v_cheio
                     iv_mode  COND #(
                                   WHEN v_cheio > 100
                                   THEN 'A' ELSE 'B'
                     )
).





*
* Usando o retorno do método


***  get_mode
***    RETURNING
***      VALUE(rv_mode) type char1.

datav_cheio     type f.
datav_com_desc  type f.

v_cheio 150 .

v_com_desc =
   COND #(
      when get_mode('A'
      then v_cheio * '0.8'
      else v_cheio * '0.9'
   ).





*
* Usando no preenchimento de um VALUE

TYPESbegin of y_entry,
          valor type i,
          tipo type char10,
       end of y_entry.

datav_valor1 type i.

v_valor1 3.

data(s_entry1VALUE y_entry(
                       valor v_valor1
                       tipo   COND #(
                                   when v_valor1 MOD 0
                                   then 'Par'
                                   else 'Impar'
                                   )
                       ).

write:'..Tipo ..'s_entry1-tipo.