📄 t_reprg.prg
字号:
*整理PRG程序,使其自动按缩格排列
*程序名:REPRG.PRG
*程序员
*变量说明
*CXM:需整理的程序名
*SJK:数据库名
*ML:本程序运行时所在的目录名及文件名(用于取其目录以打开数据库)
*T1:开始时间
*T2:结束时间
SET TALK OFF
SET SAFETY OFF
SET ODOMETER TO 1
CLEAR
cxm='t_lscx.prg'
CXM=GETFILE('PRG')
IF .NOT. CXM==''
IF FILE(CXM)
@1,5 SAY 'The file is: '+CXM
T1=SECOND()
@3,5 SAY 'Reading the program...'
SJK=LEFT(SYS(16),AT('.',SYS(16))-1)
* IF FILE(SJK+'.DBF')
* USE &SJK
* ZAP
CREATE CURSOR REPRG (YJ C(200))
SET TALK ON
APPEND FROM &CXM TYPE SDF
SET TALK OFF
@7,5 SAY 'Editing the program...'
SET TALK ON
REPLACE ALL YJ WITH LTRIM(YJ)
SET TALK OFF
SG=''
LX=.F.
GO TOP
@9,5 SAY 'Completed:'
DO WHILE .NOT. EOF()
@ 9,18 SAY RECNO()/RECCOUNT()*100 PICTURE '999.99%'
DO CASE
CASE UPPER(LEFT(YJ,8))='DO WHILE' .OR.;
UPPER(LEFT(YJ,2))='IF'
REPLACE YJ WITH SG+YJ
SKIP
SG=SG+SPACE(2)
LOOP
CASE UPPER(LEFT(YJ,5))='ENDDO' .OR.;
UPPER(LEFT(YJ,5))='ENDIF'
SG=SPACE(LEN(SG)-2)
CASE RIGHT(TRIM(YJ),1)=';' .AND. LX=.F.
LX=.T.
REPLACE YJ WITH SG+YJ
SKIP
LOOP
CASE RIGHT(TRIM(YJ),1)#';' .AND. LX=.T.
LX=.F.
REPLACE YJ WITH ' '+SG+YJ
SKIP
LOOP
CASE UPPER(LEFT(YJ,3))='FOR'
IF LX
REPLACE YJ WITH ' '+SG+YJ
ELSE
REPLACE YJ WITH SG+YJ
SG=SG+SPACE(2)
ENDIF
SKIP
LOOP
CASE UPPER(LEFT(YJ,6))='ENDFOR' .OR. UPPER(LEFT(YJ,6))='NEXT'
SG=SPACE(LEN(SG)-2)
CASE UPPER(LEFT(YJ,4))='SCAN'
REPLACE YJ WITH SG+YJ
SKIP
SG=SG+SPACE(2)
LOOP
CASE UPPER(LEFT(YJ,7))='ENDSCAN'
SG=SPACE(LEN(SG)-2)
CASE UPPER(LEFT(YJ,8))='PRINTJOB'
REPLACE YJ WITH SG+YJ
SKIP
SG=SG+SPACE(2)
LOOP
CASE UPPER(LEFT(YJ,11))='ENDPRINTJOB'
SG=SPACE(LEN(SG)-2)
CASE UPPER(LEFT(YJ,7))='DO CASE'
REPLACE YJ WITH SG+YJ
SKIP
SG=SG+SPACE(4)
LOOP
CASE UPPER(LEFT(YJ,7))='ENDCASE'
SG=SPACE(LEN(SG)-4)
CASE UPPER(LEFT(YJ,4))='CASE' .OR. UPPER(LEFT(YJ,9))='OTHERWISE'
REPLACE YJ WITH SPACE(LEN(SG)-2)+YJ
SKIP
LOOP
CASE UPPER(LEFT(YJ,4))='ELSE'
REPLACE YJ WITH SPACE(LEN(SG)-1)+YJ
SKIP
LOOP
ENDCASE
IF LX
REPLACE YJ WITH ' '+SG+YJ
ELSE
REPLACE YJ WITH SG+YJ
ENDIF
SKIP
ENDDO
BAKENAME=LEFT(CXM,AT('.',CXM))+'BAK'
IF FILE(BAKENAME)
ERASE &BAKENAME
ENDIF
RENAME &CXM TO &BAKENAME
GO TOP
SET CONSOL OFF
SET PRINT TO &CXM ADDITIVE
*SET PRINT ON
@11,5 SAY 'Creating the program...'
@12,5 SAY 'Completed: '
DO WHILE .NOT. EOF()
???TRIM(YJ)+CHR(13)+CHR(10)
@ 12,18 SAY RECNO()/RECCOUNT()*100 PICTURE '999.99%'
SKIP
ENDDO
*SET PRINT OFF
SET PRINT TO
SET CONSOL ON
USE
T2=SECOND()
IF T1>=T2
T2=T2+86400
ENDIF
??CHR(7)
@15,5 SAY 'Used time: '+LTRIM(STR(T2-T1,8,3))+'s'
@17,5 SAY '<< Ok! >>'
* ELSE
* ? 'The file '+SJK+'.DBF lost!'
* ENDIF
ELSE
?CHR(7)
?'The file does not exist!'
ENDIF
ENDIF
CANCEL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -