Página 1 de 1

Indentando PRGS

Enviado: 07 Mar 2005 03:55
por evolver
Rotina extremamente basica para identação automática de PRGs, usa funções memo o que pode limitar o tamanho do arquivo aberto e as linhas alêm de poder haver algum bug, mas no geral funciona bunitinho.

Código: Selecionar todos

parameters nomearq
if .not. file(nomearq)
    ? chr(07)+"Nome de Arquivo nao encontrado"
    return
 endif
cls
load=memoread(nomearq)
nome=left(nomearq,rat(".",nomearq))+"IDB"
memowrit(nome,load)
nlin=mlcount(load,254)
prog=""
for i = 1 to nlin
    @ 0,0 say "Aguarde termino da fase 1 ->"+str(int((i*100)/nlin),3)+"% concluido"
    line=alltrim(memoline(load,254,i))+chr(13)+chr(10)
    prog+=line
next
load=strtran(prog,";"+chr(13)+chr(10),"")
tab=0
aum=0
prog=""
nlin=mlcount(load,254)
i=1
while i <=nlin
@ 0,0 say "Aguarde termino da fase 2 ->"+str(int((i*100)/nlin),3)+"% concluido"
line=lower(alltrim(memoline(load,254,i)))
lin=alltrim(memoline(load,254,i))
if line==""
    i++
    loop
endif
if line = "elseif " .or. line= "case " .or. line == "end" .or. line == "endif" .or. line == "enddo" .or. line == "next" .or. line == "endcase" .or. line == "otherwise"
    progx=space(tab-4)+lin+chr(13)+chr(10)
else
    progx=space(tab)+lin+chr(13)+chr(10)
endif
prog+=progx
do case
case line = "do while "
    tab+=4
case line == "enddo"
    tab-=4
case line = "while "
    tab+=4
case line == "end"
    tab-=4
case line = "if "
    tab+=4
case line == "endif"
    tab-=4
case line = "for "
    tab+=4
case line == "next"
    tab-=4
case line == "do case"
    tab+=4
case line == "endcase"
    tab-=4
endcase
i++
enddo
memowrit(nomearq,prog)

Enviado: 25 Abr 2005 23:58
por janio
Olá Evolver!

O que é mesmo "identar" um PRG, hein?

Janio

Enviado: 26 Abr 2005 23:15
por Dudu_XBase
Boa Noite Jânio.
Endentar ou Endentação é formatar o prg para melhor interpretação do código, disponibilizando um espaço ou recuo a partir da margem esquerda.
Isso é utilizado em mtas linguagens de programação eu programo tb em Java se eu não endentar meus fontes eu me perco...a mesma coisa faço com meus prgs...

por exemplo um código sem endentação

Código: Selecionar todos

  while !eof()
  if lastkey()=27
  exit
  endif
  do Case
  case a=1
  case a=2
  otherwise
  Endcase
  enddo
  
Com Endentação

Código: Selecionar todos

  while !eof()
      if lastkey()=27
          exit
      endif
      do Case
          case a=1
          case a=2
          otherwise
      Endcase
  enddo  
  

:xau