*LISTPRG PRG
CLEAR
TEXT
CE PROGAMME EFFECTUE UN LISTAGE AMELIORE DE PROGRAMME DBASE

IL SUFFI DE RENTRER LE NOM DU PROGRAMME
ENDTEXT
use temp1
ZAP
REP=SPACE(8)
@ 10 ,10 SAY "DONNEZ LE NOM DU PROGRAMME A LISTER " GET REP
READ
REP=UPPER(REP)
  IF LEN(REP)>8 
  REP=SUBSTR(REP,1,8)
  ENDIF
REP=RTRIM(REP)+".PRG"
*PARTIE CRUCIALE
APPEND FROM &REP SDF
REPLACE ALL LIGNE WITH LTRIM(LIGNE)
A=" "
GO TOP
*CTIF=COMPTEUR DE IF
*CTENDIF=COMPTEUR DE ENDIF
*CTDW =COMPTEUR DE DO WHILE 
*CTENDO=COMPTEUR DE ENDDO
CTIF=0
CTENDIF=0
CTDW=0
CTENDO=0
A=" "
REP=" "
@ 12,10 SAY "IMPRIMANTE O/N " GET REP
READ
IF UPPER(REP)="O"
SET PRINT ON
ENDIF
SET SCOREBOARD OFF
SET TALK OFF
SET EXACT OFF
SET FIXE OFF
DO WHILE .NOT. EOF()
K=0
LT=RTRIM(LIGNE)
IF LT=""
LT="  "
ENDIF
IF upper(LIGNE) ="IF"
? RECNO(),A +CHR(218),SUBSTR(LIGNE,1,65-LEN(A))
A=A+CHR(179)
K=1
CTIF=CTIF+1
ENDIF
IF upper(LIGNE) ="DO WHILE"
? RECNO(),A +CHR(201),SUBSTR(LIGNE,1,65-LEN(A))
A=A+CHR(186)
K=1
CTDW=CTDW+1
ENDIF
IF upper(LIGNE) ="DO CASE"
? RECNO(),A +CHR(213),SUBSTR(LIGNE,1,65-LEN(A))
A=A+CHR(179)
K=1
ENDIF
IF upper(LIGNE)="ENDC"
A=SUBSTR(A,1,LEN(A)-1)
?RECNO(),A +CHR(212),SUBSTR(LIGNE,1,65-LEN(A))
K=1
ENDIF
IF upper(LIGNE) = "ENDD"
A=SUBSTR(A,1,LEN(A)-1)
? RECNO(),A +CHR(200),SUBSTR(LIGNE,1,65-LEN(A))
K=1
CTENDO=CTENDO+1
ENDIF
IF upper(LIGNE) = "ENDI"
A=SUBSTR(A,1,LEN(A)-1)
? RECNO(),A +CHR(192),SUBSTR(LIGNE,1,65-LEN(A))
K=1
CTENDIF=CTENDIF+1
ENDIF
IF K=0
? RECNO(),A,SUBSTR(LIGNE,1,65-LEN(A))
ENDIF
IF LEN(LT)-(65+LEN(A)) >0
? RECNO(),A,SUBSTR(LT,65-LEN(A))
ENDIF
SKIP
ENDDO
CLOSE DATA
SET TALK ON
? "IL Y A ",CTIF," IF ET ",CTENDIF,"  ENDIF"
? "IL Y A ",CTDW," DO WHILE ET ",CTENDO," ENDDO"
SET PRINT OFF
retu
