www.pudn.com > jq_caiwu.ARJ > JSGS.PRG
ON KEY
SELE 1
GOTO BOTTOM
endrecn = RECNO()
endzd = FCOUNT()
GOTO TOP
SELE 2
SELE 3
DO WHILE .NOT. EOF()
rh = h
rl = l
rysf = ysf
rgs = gs
rh1 = h1
rl1 = l1
rh2 = h2
rl2 = l2
SELE 1
x = 0
SELE 1
IF rh>endrecn .OR. rl>endzd .OR. rh1>endrecn .OR. rh2>endrecn .OR. rl1>endzd .OR. rl2>endzd .OR. (rh1<>rh2 .AND. rl1<>rl2 .AND. rgs<>'DIV')
IF rh>endrecn .OR. rh1>endrecn .OR. rh2>endrecn
?? CHR(7)
WAIT WINDOW '行'+STR(rh, 2, 0)+'公式超长!'
ENDI
IF rl>endzd .OR. rl1>endzd .OR. rl2>endzd
?? CHR(7)
WAIT WINDOW '行'+STR(rh, 2, 0)+'公式超宽!'
ENDI
IF rh1<>rh2 .AND. rl1<>rl2
WAIT WINDOW '行'+STR(rh, 2, 0)+'列'+STR(rl, 2, 0)+'公式取数范围无法确定!'
ENDI
ELSE
DO CASE
CASE rgs='SUM'
IF rh1=rh2 .AND. rl1<>rl2
jsq = rl1
GOTO rh1
DO WHILE jsq<=rl2
zd1 = FIELD(jsq)
x=x+&zd1
jsq = jsq+1
ENDD
ELSE
GOTO rh1
zd1 = FIELD(rl1)
DO WHILE RECNO()<=rh2
x=x+&zd1
SKIP
ENDD
ENDI
CASE rgs='DED'
IF rh1=rh2 .AND. rl1<>rl2
jsq = rl1
GOTO rh1
DO WHILE jsq<=rl2
zd1 = FIELD(jsq)
x=x-&zd1
jsq = jsq+1
ENDD
ELSE
GOTO rh1
zd1 = FIELD(rl1)
DO WHILE RECNO()<=rh2
x=x-&zd1
SKIP
ENDD
ENDI
CASE rgs='DIV'
GOTO rh1
zd1 = FIELD(rl1)
x=&zd1
GOTO rh2
zd1 = FIELD(rl2)
if &zd1<>0
x=x/&zd1
ELSE
x = 0
ENDI
ENDC
GOTO rh
zd = FIELD(rl)
DO CASE
CASE rysf='='
repl &zd with x
CASE rysf='+'
repl &zd with &zd+x
CASE rysf='-'
repl &zd with &zd-x
CASE rysf='*'
repl &zd with &zd*x
CASE rysf='/'
IF x<>0
repl &zd with &zd/x
ELSE
?? CHR(7)
WAIT WINDOW '行'+STR(rh, 1, 2)+'除法运算出错!'
ENDI
ENDC
ENDI
SELE 3
SKIP
ENDD
ON KEY LABEL ESCape do Rquit
RETU
*