pjs.prg

来自「一个非常好用的财务软件源程序」· PRG 代码 · 共 199 行

PRG
199
字号
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
*  文件名: PJS.PRG <-- 本文件由 UnFoxAll 创建
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


 ON ERROR do pxz
 CREATE TABLE ksj ( FBSH C ( 16 ) , FJER N ( 13 , 2 ) , FJEC N ( 13 , 2 ) , FYE N ( 13 ,  ;
      2 ) , FBNJER N ( 13 , 2 ) , FBNJEC N ( 13 , 2 ) , FBJJER N ( 13 , 2 ) ,  ;
      FBJJEC N ( 13 , 2 ) , FYCYE N ( 13 , 2 ) , FNCYE N ( 13 , 2 ) )
 BNIAN = SUBSTR(BNY,1,4)
 BYUE = IIF(SUBSTR(BNY,5,1) = '0',SUBSTR(BNY,6,1),SUBSTR(BNY,5,2))
 BYUE1 = ALLTRIM(STR(VAL(BYUE) - 1,2))
 DO CASE 
 CASE VAL(BYUE) <= 3 AND VAL(BYUE) >= 1
    BSTART = 1
    BEND = 3
 CASE VAL(BYUE) <= 6 AND VAL(BYUE) >= 4
    BSTART = 4
    BEND = 6
 CASE VAL(BYUE) <= 9 AND VAL(BYUE) >= 7
    BSTART = 7
    BEND = 9
 CASE VAL(BYUE) <= 12 AND VAL(BYUE) >= 10
    BSTART = 10
    BEND = 12
 ENDCASE 
 BZC = 'kzc' + BNIAN
 SELECT 0
  use &bzc alia kzc excl
 IF FSIZE('fjeye1') <> 13
    FOR Z = 1 TO 12
       BHH1 = 'fjeye' + ALLTRIM(STR(Z,2))
       BHH2 = 'fjec' + ALLTRIM(STR(Z,2))
       BHH3 = 'fjer' + ALLTRIM(STR(Z,2))
        alte tabl kzc alte colu &bhh1 n(13,2)
        alte tabl kzc alte colu &bhh2 n(13,2)
        alte tabl kzc alte colu &bhh3 n(13,2)
       ALTER TABLE kzc ALTER COLUMN FNCJEYE N ( 13 , 2 )
    ENDFOR 
 ENDIF 
 IF FSIZE('fslye1') <> 12
    FOR Z = 1 TO 12
       BHH1 = 'fslye' + ALLTRIM(STR(Z,2))
       BHH2 = 'fslc' + ALLTRIM(STR(Z,2))
       BHH3 = 'fslr' + ALLTRIM(STR(Z,2))
        alte tabl kzc alte colu &bhh1 n(12,4)
        alte tabl kzc alte colu &bhh2 n(12,4)
        alte tabl kzc alte colu &bhh3 n(12,4)
       ALTER TABLE kzc ALTER COLUMN FNCSLYE N ( 12 , 4 )
    ENDFOR 
 ENDIF 
 SELECT * FROM kzc INTO TABLE tmp1
 ALTER TABLE tmp1 ADD COLUMN FPZH C ( 10 )
 ALTER TABLE tmp1 ADD COLUMN FSJBM C ( 10 )
 ALTER TABLE tmp1 ADD COLUMN FJC N ( 2 )
 SELECT KZC
 USE 
 IF BWJZ = 1 AND BYEAR = BSYSYEAR AND BMONTH = BSYSMON
    SELECT TMP1
    INDEX ON FBSH TO tmp1
    SELECT FBSH , FCR , FJE FROM kcr WHERE  ;
         FDJH IN(SELECT FDJH FROM kdj WHERE SUBSTR(FDJH,2,6) = BKJQJ AND FJK <> 'G') INTO TABLE tmp2
    SCAN 
       BBSH = FBSH
       BJE = IIF(FCR = 'R',FJE,-FJE)
       BJER = IIF(FCR = 'R',FJE,0)
       BJEC = IIF(FCR = 'C',FJE,0)
       BNAME = 'fjeye' + BYUE
       BNAME1 = 'fjer' + BYUE
       BNAME2 = 'fjec' + BYUE
       SELECT TMP1
       SEEK BBSH
       IF FOUND()
           repl &bname with &bname+bje,&bname1 with &bname1+bjer,&bname2 with &bname2+bjec
       ELSE 
           inse into tmp1 (fbsh,&bname,&bname1,&bname2) value (bbsh,bje,bjer,bjec)
       ENDIF 
       SELECT TMP2
    ENDSCAN 
    SELECT TMP2
    USE 
    SELECT KCR
    USE 
    SELECT KDJ
    USE 
 ENDIF 
 = PUSE('kpz')
 SET FILTER TO
 SCAN FOR FBZ = 'H'
    BBSH = FBSH
    INSERT INTO tmp1 ( FBSH ) VALUES ( BBSH )
 ENDSCAN 
 SET ORDER TO fbsh
 SELECT TMP1
 SET RELATION TO FBSH INTO KPZ
 REPLACE FPZH WITH KPZ.FPZH , FSJBM WITH KPZ.FSJBM , FJC WITH (KPZ.FJC)
 SET RELATION TO
 SELECT KPZ
 USE 
 SELECT TMP1
 INDEX ON FPZH TO tmp1
 GO BOTTOM
 DO WHILE  .NOT. BOF()
    BREC = RECNO()
    IF  .NOT. EMPTY(FSJBM)
       SCATTER TO BSJ1
       BSJBM = FSJBM
       SEEK BSJBM
       IF  .NOT. EOF()
          SCATTER TO BSJ2
          BJC0 = FJC
          FOR J = 1 TO ALEN(BSJ2)
             IF TYPE('bsj2(j)') = 'N'
                BSJ2( J ) = BSJ2(J) + BSJ1(J)
             ENDIF 
          ENDFOR 
          REPLACE FROM ARRAY BSJ2
          REPLACE FJC WITH BJC0
       ENDIF 
    ENDIF 
    GO BREC
    SKIP -1
 ENDDO 
 SCAN 
    BBSH = FPZH
    BNAME = 'fjeye' + BYUE
     bjeye=&bname
    BNAME = 'fjer' + BYUE
     bbyjer=&bname
    BNAME = 'fjec' + BYUE
     bbyjec=&bname
    BNAME = 'fjeye' + BYUE1
     bycye=iif(byue="1",fncjeye,&bname)
    BBNJER = 0
    BBNJEC = 0
    BBJJER = 0
    BBJJEC = 0
    FOR I = 1 TO VAL(BYUE)
       BNAME = 'fjer' + ALLTRIM(STR(I,2))
        bbnjer=bbnjer+&bname
       BNAME = 'fjec' + ALLTRIM(STR(I,2))
        bbnjec=bbnjec+&bname
    ENDFOR 
    FOR I = BSTART TO BEND
       BNAME = 'fjer' + ALLTRIM(STR(I,2))
        bbjjer=bbjjer+&bname
       BNAME = 'fjec' + ALLTRIM(STR(I,2))
        bbjjec=bbjjec+&bname
    ENDFOR 
    INSERT INTO ksj ( FBSH , FJER , FJEC , FYE , FBNJER , FBNJEC , FBJJER , FBJJEC , FYCYE ,  ;
         FNCYE ) VALUES ( BBSH , BBYJER , BBYJEC , BJEYE , BBNJER , BBNJEC ,  ;
         BBJJER , BBJJEC , BYCYE , TMP1.FNCJEYE )
 ENDSCAN 
 SELECT TMP1
 USE 
 SELECT KSJ
 INDEX ON FBSH TAG FBSH
 = PUSE('kbb')
 = PUSE('kcell')
 SET ORDER TO fbh
 GO TOP
 BBH = 'XX'
 SCAN 
    IF SUBSTR(FBH,1,2) <> BBH
       BBH = SUBSTR(FBH,1,2)
       SELECT KBB
       LOCATE FOR FBH = BBH
       BSX = ALLTRIM(FSX)
       SELECT KCELL
    ENDIF 
    BLH = VAL(SUBSTR(FBH,6,3))
    IF SUBSTR(BSX,BLH,1) = 'N' AND VAL(SUBSTR(FBH,3,3)) <> 0
       BGS = ALLTRIM(FGS)
       IF  .NOT. EMPTY(BGS)
          SELECT KSJ
           bjg=&bgs
          SELECT KCELL
          REPLACE FSZ WITH BJG
       ENDIF 
    ENDIF 
 ENDSCAN 
 SELECT KCELL
 USE 
 SELECT KBB
 USE 
 SELECT KSJ
 USE 
 ON ERROR do perror WITH ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )
 RETURN 

PROCEDURE pxz
 IF USED('kcell')
    SELECT KCELL
    REPLACE FGS WITH ''
 ENDIF 
 RETURN 
ENDPROC
*------*

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?