- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Quebrar IF em linhas
×
Linguagem de Programação ADVPL
Perguntas Quebrar IF em linhas
- Tashima
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 3
- Obrigados Recebidos: 0
10 anos 5 meses atrás #22937
por Tashima
Quebrar IF em linhas foi criado por Tashima
Olá pessoal, alguém poderia me orientar como "quebrar" esse IF em várias linhas e não em uma só?
Segue:
IF(EMPTY(IF(EMPTY(SE2->E2_CO),FORMULA("P41"),SE2->E2_CO)),0,IF(INCLUI.AND.!SE2->E2_TIPO$"NDF/PA" .AND.SE2->E2_RATEIO="N",FORMULA('P11'),0))
Onde:
Fórmula P41 = POSICIONE("CT1",1,XFILIAL("CT1")+SE2->E2_CCTB,"CT1_UPCO")
Fórmula P11 = SE2->E2_VALOR+SE2->E2_IRRF+SE2->E2_ISS+SE2->E2_INSS+SE2->E2_COFINS+SE2->E2_PIS+SE2->E2_CSLL
Razão esta que necessito compreender primeiro esse IF e acredito que quebrando-o fique mais claro.
Obrigado!
Segue:
IF(EMPTY(IF(EMPTY(SE2->E2_CO),FORMULA("P41"),SE2->E2_CO)),0,IF(INCLUI.AND.!SE2->E2_TIPO$"NDF/PA" .AND.SE2->E2_RATEIO="N",FORMULA('P11'),0))
Onde:
Fórmula P41 = POSICIONE("CT1",1,XFILIAL("CT1")+SE2->E2_CCTB,"CT1_UPCO")
Fórmula P11 = SE2->E2_VALOR+SE2->E2_IRRF+SE2->E2_ISS+SE2->E2_INSS+SE2->E2_COFINS+SE2->E2_PIS+SE2->E2_CSLL
Razão esta que necessito compreender primeiro esse IF e acredito que quebrando-o fique mais claro.
Obrigado!
Por favor Acessar ou Registrar para participar da conversa.
- dexter
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 78
- Obrigados Recebidos: 0
10 anos 5 meses atrás #22943
por dexter
Respondido por dexter no tópico Quebrar IF em linhas
É uma das coisas antigas de programação, isso tem o nome de
código obstrutivo eu grilo com esse advpl.
Veja como pode ficar bem mais fácil o entendimento do código
apenas usando uma identação, ta faltando no fórum também um ( SyntaxHighlighter ) <<----
Ou então vejamos acho que esta certo desse jeito aqui.
Testa ai pra ver se funciona!
código obstrutivo eu grilo com esse advpl.
Veja como pode ficar bem mais fácil o entendimento do código
apenas usando uma identação, ta faltando no fórum também um ( SyntaxHighlighter ) <<----
Ou então vejamos acho que esta certo desse jeito aqui.
Local PrimeiroIF
Local SegundoIF
Local Resultado
IF( EMPTY( SE2->E2_CO ) )
PrimeiroIF := FP41
ELSE
PrimeiroIF := SE2->E2_CO
ENDIF
IF( INCLUI .AND. !SE2->E2_TIPO $"NDF/PA" .AND. SE2->E2_RATEIO = "N" )
SegundoIF := P11
ELSE
SegundoIF := 0
ENDIF
// talvez não seja necessário
IF( PrimeiroIF )
Resultado := 0
Else
Resultado := SegundoIF
ENDIF
Testa ai pra ver se funciona!
Por favor Acessar ou Registrar para participar da conversa.
- Tashima
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 3
- Obrigados Recebidos: 0
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Quebrar IF em linhas
Tempo para a criação da página:0.125 segundos