⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t_reprg.prg

📁 vfp的进销存系统
💻 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 + -