1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Duvida Do com o by dinâmico

Discussão em 'Progress 4GL' iniciado por rafaelcorrea, Julho 9, 2014.

  1. rafaelcorrea

    rafaelcorrea Sem Pontuação

    Olá pessoal, estou com um problema aqui e acredito que alguém com mais experiencia conseguirá me ajudar.

    Estou tentando criar um DO com o BY dinâmico da forma abaixo.

    def var i as int.
    def var k as int initial 20.

    do i = 1 to 3000 by k:
    disp i.​
    end.

    Porém o Progress pede que o K seja uma constante, tem alguma forma de fazer esse BY funcionar com variáveis? Estou usando a versão 10.2B.


    Antecipadamente agradeço a força.
    Abraços.
  2. jaisonantoniazzi

    jaisonantoniazzi Membro Ativo

    Bom dia @rafaelcorrea , tudo bom?
    Não encontrei a necessidade "DO com BY dinâmico", e eu só trabalho desde 1997 com progress kkk (haviam dinossauros e a internet era com modem 28800 da US Robotics)
    Fiz esta gambi para você testar, na prática lhe atenderia, mas...

    def var i as int.
    def var k as int initial 20.

    DO i = 1 to 3000:

    IF i MODULO k = 0 THEN DO:
    disp i.
    PAUSE.
    END.

    end.


    Forte abraço.
    Jaison Antoniazzi
  3. newton_car

    newton_car Sem Pontuação

    Tenta assim

    DEFINE VARIABLE i AS INTEGER NO-UNDO.
    DEFINE VARIABLE k AS INTEGER INITIAL 20 NO-UNDO.

    REPEAT i = 1 TO 3000 BY 0:
    DISPLAY i.
    ASSIGN i = i + k.
    END.
  4. rafaelcorrea

    rafaelcorrea Sem Pontuação

    Eu havia feito das duas formar sugeridas, porém notei uma diferença bem interessante em usar contadores ou o mod ao invés do by dinâmico, como se trata de simulações que preciso executar, o sistema irá passar por esse do várias vezes e está ficando lento.

    Vou tentar alguma outra forma, já que dessa forma pelo que já pesquisei não tem como hehe.

    Obrigado pela ajuda.

    []'s
  5. jaisonantoniazzi

    jaisonantoniazzi Membro Ativo

    Amigo, o que você precisa fazer?
  6. rafaelcorrea

    rafaelcorrea Sem Pontuação

    É meio complexo para explicar, mas eu consegui fazer de outra forma, separando os blocos de repetição e utilizando temp-table, ficou muito mais rápido do que mante-los de forma encadeada.

    Agradeço a ajuda de vocês.

Compartilhe esta Página