Bom dia pessoal, Tenho uma tabela e ela trata 30 colunas de valores, o que eu quero fazer é o seguinte, ler os valores desta linha da tabela, e as que forem maiores que 0 quero que grave como 0, mas hoje tenho que fazer a seguinte pergunta 30 x, queria achar uma forma mais prática e que de menos espaço, fiz alguns teste com a opção DO, mas não consegui, acho que falta alguma coisainha apenas. HOJE FAÇO ASSIM: IF dec(TEMMOV.col01) > 0 THEN i-col01 = 0. IF dec(TEMMOV.col02) > 0 THEN i-col02 = 0. IF dec(TEMMOV.col03) > 0 THEN i-col03 = 0. IF dec(TEMMOV.col04) > 0 THEN i-col04 = 0. IF dec(TEMMOV.col05) > 0 THEN i-col05 = 0. IF dec(TEMMOV.col06) > 0 THEN i-col06 = 0. IF dec(TEMMOV.col07) > 0 THEN i-col07 = 0. IF dec(TEMMOV.col08) > 0 THEN i-col08 = 0. IF dec(TEMMOV.col09) > 0 THEN i-col09 = 0. IF dec(TEMMOV.col10) > 0 THEN i-col10 = 0. IF dec(TEMMOV.col11) > 0 THEN i-col11 = 0. IF dec(TEMMOV.col12) > 0 THEN i-col12 = 0. IF dec(TEMMOV.col13) > 0 THEN i-col13 = 0. IF dec(TEMMOV.col14) > 0 THEN i-col14 = 0. IF dec(TEMMOV.col15) > 0 THEN i-col15 = 0. IF dec(TEMMOV.col16) > 0 THEN i-col16 = 0. IF dec(TEMMOV.col17) > 0 THEN i-col17 = 0. IF dec(TEMMOV.col18) > 0 THEN i-col18 = 0. IF dec(TEMMOV.col19) > 0 THEN i-col19 = 0. IF dec(TEMMOV.col20) > 0 THEN i-col20 = 0. IF dec(TEMMOV.col21) > 0 THEN i-col21 = 0. IF dec(TEMMOV.col22) > 0 THEN i-col22 = 0. IF dec(TEMMOV.col23) > 0 THEN i-col23 = 0. IF dec(TEMMOV.col24) > 0 THEN i-col24 = 0. IF dec(TEMMOV.col25) > 0 THEN i-col25 = 0. IF dec(TEMMOV.col26) > 0 THEN i-col26 = 0. IF dec(TEMMOV.col27) > 0 THEN i-col27 = 0. IF dec(TEMMOV.col28) > 0 THEN i-col28 = 0. IF dec(TEMMOV.col29) > 0 THEN i-col29 = 0. IF dec(TEMMOV.col30) > 0 THEN i-col30 = 0. GOSTARIA DE UMA OPÇÃO MAIS OU MENOS ASSIM: DEF VAR i-ind AS INT FORM '99'. DO i-ind = 1 to 30. IF dec(TEMMOV.col[i-ind]) > 0 THEN i-col(i-ind) = 0. END. Mas dá erro de syntax....o q estou fazendo de errado? Att, Diogo
Diogo (DFResmer), Acho que seu problema esta na definição das variáveis, assim sei que funciona. Código: DEF TEMP-TABLE TEMMOV NO-UNDO FIELD xCOL AS CHAR EXTENT 30. DEF VAR i-col AS INT EXTENT 30. DEF VAR i-ind AS INT FORM '99'. FIND FIRST TEMMOV. DO i-ind = 1 to 30. IF dec(TEMMOV.xcol[i-ind]) > 0 THEN i-col[i-ind] = 0. END. Desta forma você utilizando o conceito de array, mas para isto precisa declarar que é um array, usando na declaração da variável a opção EXTENT. Obs.: sempre que postar código utilize a opção de CODE. []'s
blz, deu certo!!! Obrigado, vou reduzir um monte meu programa, não lembrava direito como funcionava este comando. Att, Diogo