📄 hzjs.prg
字号:
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* 文件名: HZJS.PRG <-- 本文件由 UnFoxAll 创建
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PARAMETER M_BH , M_BLX1 , M_BLX2 , NIAN , YUE , DL
JSF_B = 'LIB\JS1.DAT'
JSF_Z = 'LIB\JS2.DAT'
JSF_M = 'LIB\JS3.DAT'
IF M_BH = '04'
SELECT DAT
GO TOP
DO WHILE .NOT. EOF()
IF DA1 <> 0
JSJG1 = ROUND(DA2 / 100 / DA1,2)
JSJG2 = ROUND(DA6 * 12 / (DA1 * 100 * VAL(YUE)),2)
ELSE
JSJG1 = 0
JSJG2 = 0
ENDIF
REPLACE DA3 WITH JSJG1
REPLACE DA5 WITH JSJG2
SKIP
ENDDO
ENDIF
IF M_BH = '13'
GO TOP
DO WHILE .NOT. EOF()
IF DA1 <> 0 AND DA2 <> 0
JSJGX = (DA2 / DA1 - 1) * 100
REPLACE DA4 WITH JSJGX
ELSE
REPLACE DA4 WITH 0
ENDIF
SKIP
ENDDO
GO TOP
DO WHILE .NOT. EOF()
IF DA2 <> 0 AND DA5 <> 0
JSJG = (DA5 / DA2 - 1) * 100
REPLACE DA7 WITH JSJG
ELSE
REPLACE DA7 WITH 0
ENDIF
SKIP
ENDDO
GO TOP
DO WHILE .NOT. EOF()
DO CASE
CASE DA1 <> 0 AND DA2 <> 0 AND DA5 <> 0 AND DA8 = 0
IF (DA5 < 0 AND DA1 < 0) .OR. (DA5 > 0 AND DA1 > 0)
JSJG = (SQRT(ABS(DA5 / DA1)) - 1) * 100
REPLACE DA8 WITH JSJG
ENDIF
IF (DA5 < 0 AND DA1 > 0) .OR. (DA5 > 0 AND DA1 < 0)
JSJG = -(SQRT(ABS(DA5 / DA1)) - 1) * 100
REPLACE DA8 WITH JSJG
ENDIF
CASE DA1 = 0 AND DA2 <> 0 AND DA5 <> 0 AND DA8 = 0
JSJG = (DA5 / DA2 - 1) * 100
REPLACE DA8 WITH JSJG
ENDCASE
SKIP
ENDDO
ENDIF
IF M_BH = '12'
SELECT DAT
GO TOP
DO WHILE .NOT. EOF()
IF DA4 <> 0
JSJG1 = DA6 / DA4 * 100
ELSE
JSJG1 = 0
ENDIF
REPLACE DA5 WITH JSJG1
SKIP
ENDDO
ENDIF
FHBZ = 0
STORE .T. TO ERR
DO ZHUNBEI
IF ERR = .F.
RETURN
ENDIF
SELECT JS1
SCAN FOR BH = M_BH
DO CASE
CASE DW = 0
BIDW = 1
CASE DW = 1
BIDW = 0
CASE DW = 2
BIDW = 2
CASE DW = 3
BIDW = 3
ENDCASE
SELECT DAT
FHBZ = 0
STORE 0 TO FENZI , FENMU , YICI
DO JS2_SUM
IF FHBZ = 1
LOOP
ENDIF
DO JS3_SUM
IF FHBZ = 1
LOOP
ENDIF
IF FENMU <> 0
BI = ROUND(FENZI * 100 ** (BIDW) / FENMU,2)
ELSE
BI = 0
ENDIF
SELECT DAT
LOCATE FOR XMDH = JS1.XMDH
IF EOF()
LOOP
ENDIF
SCATTER TO B_DAT
STORE BI TO B_DAT( 5 + JS1.LS )
GATHER FROM B_DAT
ENDSCAN
DO JIESHU
RETURN
PROCEDURE ZHUNBEI
IF .NOT. FILE(JSF_B) .OR. .NOT. FILE(JSF_Z) .OR. .NOT. FILE(JSF_M)
?? CHR(7)
WAIT WINDOW NOWAIT '比率文件不存在!'
STORE .F. TO ERR
RETURN
ENDIF
USE IN 0 LIB\JS1.DAT
USE IN 0 LIB\JS2.DAT
USE IN 0 LIB\JS3.DAT
ENDPROC
*------
PROCEDURE JIESHU
SELECT JS1
USE
SELECT JS2
USE
SELECT JS3
USE
ENDPROC
*------
PROCEDURE JS2_SUM
SELECT JS2
SCAN FOR XH = JS1.XH
JSFH = FH
IF M_BH <> BH
SJWJ = 'H' + JS2.BH + NIAN
DO JSWJCZ
ELSE
SJWJ = 'DAT'
ENDIF
SELE &SJWJ
CZSJ = 0
IF SJWJ <> 'DAT'
LOCATE FOR ;
DQDH = VAL(YUE) AND BLX1 = M_BLX1 AND BLX2 = M_BLX2 AND XMDH = 'dpbz' AND DA1 = DL
IF FOUND()
DO CZFZXM
ENDIF
ELSE
LOCATE FOR XMDH = JS2.XMDH
IF FOUND()
CZSJ = 1
ENDIF
ENDIF
IF CZSJ = 1
SCATTER TO Z_DAT
IF YICI = 0
STORE JS2.DW TO YICI
ENDIF
CHA = YICI - JS2.DW
Z_DAT( 5 + JS2.LS ) = ROUND(Z_DAT(5 + JS2.LS) / 10 ** CHA,2)
FENZI=ROUND(FENZI&JSFH+Z_DAT(5+JS2->LS),2)
ENDIF
ENDSCAN
ENDPROC
*------
PROCEDURE JS3_SUM
SELECT JS3
SCAN FOR XH = JS1.XH
JSFH = FH
IF M_BH <> BH
SJWJ = 'H' + JS3.BH + NIAN
DO JSWJCZ
ELSE
SJWJ = 'DAT'
ENDIF
SELE &SJWJ
CZSJ = 0
IF SJWJ <> 'DAT'
LOCATE FOR ;
DQDH = VAL(YUE) AND BLX1 = M_BLX1 AND BLX2 = M_BLX2 AND XMDH = 'dpbz' AND DA1 = DL
IF FOUND()
DO CZFMXM
ENDIF
ELSE
LOCATE FOR XMDH = JS3.XMDH
IF FOUND()
CZSJ = 1
ENDIF
ENDIF
IF CZSJ = 1
SCATTER TO M_DAT
IF YICI = 0
STORE JS3.DW TO YICI
ENDIF
CHA = YICI - JS3.DW
M_DAT( 5 + JS3.LS ) = ROUND(M_DAT(5 + JS3.LS) / 10 ** CHA,2)
FENMU=ROUND(FENMU&JSFH+M_DAT(5+JS3->LS),2)
ENDIF
ENDSCAN
ENDPROC
*------
PROCEDURE CZFZXM
IF !USED("&SJWJ")
IF !FILE("DAT\&SJWJ..DAT")
?? CHR(7)
?? CHR(7)
@ 5 , 2 SAY BH + '汇总表找不到!'
= INKEY(1)
FHBZ = 1
EXIT
ENDIF
USE DAT\&SJWJ..DAT IN 0
ENDIF
SELE &SJWJ
GO TOP
LOCATE FOR ;
DQDH = VAL(YUE) AND BLX1 = M_BLX1 AND BLX2 = M_BLX2 AND XMDH = 'dpbz' AND DA1 = DL
IF .NOT. FOUND()
?? CHR(7)
@ 5 , 2 SAY BH + '汇总表 '
@ 5 , 5 SAY '找不到!'
= INKEY(1)
FHBZ = 1
EXIT
ENDIF
DO WHILE .NOT. EOF()
IF XMDH <> JS2.XMDH
SKIP
ELSE
CZSJ = 1
EXIT
ENDIF
IF XMDH = 'dpbz'
EXIT
ENDIF
ENDDO
IF CZSJ = 0
?? CHR(7)
@ 5 , 2 SAY BH + '汇总表 '
@5,5 SAY &JS2->XMDH+"找不到!"
= INKEY(1)
FHBZ = 1
EXIT
ENDIF
ENDPROC
*------
PROCEDURE CZFMXM
DO WHILE .NOT. EOF()
IF XMDH <> JS3.XMDH
SKIP
ELSE
CZSJ = 1
EXIT
ENDIF
IF XMDH = 'dpbz'
EXIT
ENDIF
ENDDO
IF CZSJ = 0
?? CHR(7)
@ 5 , 2 SAY BH + '汇总表 '
@5,5 SAY &JS2->XMDH+"找不到!"
= INKEY(1)
FHBZ = 1
EXIT
ENDIF
ENDPROC
*------
PROCEDURE JSWJCZ
IF !USED("&SJWJ")
IF !FILE("DAT\&SJWJ..DAT")
?? CHR(7)
?? CHR(7)
@ 5 , 2 SAY BH + '汇总表找不到!'
= INKEY(1)
FHBZ = 1
EXIT
ENDIF
USE DAT\&SJWJ..DAT IN 0
ENDIF
ENDPROC
*------*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -