home *** CD-ROM | disk | FTP | other *** search
- * JBPROCS.PRG
- PARAMETERS JBKEYHIT
- DO CASE
- CASE JBKEYHIT$'0123456789.' && .AND. JBTYPE = " DEC "
- IF JBOPER$'='
- STORE JBCURR TO JBCURRA
- STORE "0" TO JBCURR
- STORE " " TO JBOPER
- ENDIF
- DO CASE
- case jbcurr = "0." .AND. JBKEYHIT <> "."
- STORE JBCURR+JBKEYHIT TO JBCURR
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- CASE JBCURR = "0" .AND. JBKEYHIT <> "."
- STORE JBKEYHIT TO JBCURR
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- CASE JBCURR = "0" .AND. JBKEYHIT = "."
- STORE "0." TO JBCURR
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- CASE LEN(JBCURR) = 1 .AND. JBKEYHIT = "."
- STORE JBCURR+'.' TO JBCURR
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- CASE LEN(JBCURR) < 20
- STORE JBCURR+JBKEYHIT TO JBCURR
- call ascroll with chr(1),chr(1),chr(15),chr(JABTOP+3),chr(JABLEFT+5),chr(JABTOP+3),chr(JABLEFT+24)
- @ JABTOP+3,JABLEFT+24 SAY JBKEYHIT
- CASE LEN(JBCURR) >= 20
- SET COLOR TO N*/W
- @ JABTOP+3,JABLEFT+2 SAY "E"
- SET COLOR TO N/W
- ENDCASE
- CASE LOWER(JBKEYHIT)=" √x" && .AND. JBTYPE = " DEC "
- STORE IF(VAL(JBCURR)>=0,SQRT(VAL(JBCURR)),(-1*SQRT(-1*VAL(JBCURR))))TO JBCURR
- STORE LTRIM(TRIM(STR(JBCURR,18,8))) TO JBCURR
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- CASE JBKEYHIT="LOG" && .AND. JBTYPE = " DEC "
- STORE IF(VAL(JBCURR)>=0,LOG(VAL(JBCURR)),(-1*LOG(-1*VAL(JBCURR))))TO JBCURR
- STORE LTRIM(TRIM(STR(JBCURR,18,8))) TO JBCURR
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- CASE JBKEYHIT='EXP' && .AND. JBTYPE = " DEC "
- STORE IF(VAL(JBCURR)>=0,EXP(VAL(JBCURR)),(-1*EXP(-1*VAL(JBCURR))))TO JBCURR
- STORE LTRIM(TRIM(STR(JBCURR,18,8))) TO JBCURR
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- CASE JBKEYHIT$' π ' && .AND. JBTYPE = " DEC "
- STORE "3.142857143" TO JBCURR
- @ JABTOP+3,JABLEFT+1 SAY SPACE(13)+JBCURR
- CASE JBKEYHIT$'%' && .AND. JBTYPE = " DEC "
- DO CASE
- CASE LEN(JBCURR) >= 18 .AND. AT('.',JBCURR) = 0
- CASE LEN(JBCURR) >= 18 .AND. AT('.',JBCURR) <> 0
- CASE AT('.',JBCURR) = 0
- DO CASE
- CASE LEN(JBCURR) = 1
- STORE "0.0"+SUBSTR(JBCURR,1,1) TO JBCURR
- CASE LEN(JBCURR) = 2
- STORE "0."+SUBSTR(JBCURR,1,2) TO JBCURR
- CASE LEN(JBCURR) = 3
- STORE SUBSTR(JBCURR,1,1)+'.'+SUBSTR(JBCURR,2,2) TO JBCURR
- OTHERWISE
- STORE SUBSTR(JBCURR,1,LEN(JBCURR)-2)+'.'+SUBSTR(JBCURR,LEN(JBCURR)-2,LEN(JBCURR)) TO JBCURR
- ENDCASE
- CASE AT('.',JBCURR) >= 3
- STORE AT('.',JBCURR) TO JBPOS
- STORE SUBSTR(JBCURR,1,LEN(JBCURR)-(LEN(JBCURR)-(JBPOS-3)))+'.'+SUBSTR(JBCURR,JBPOS-2,2)+SUBSTR(JBCURR,JBPOS+1) TO JBCURR
- CASE AT('.',JBCURR) = 2
- STORE AT('.',JBCURR) TO JBPOS
- IF SUBSTR(JBCURR,1,1) = "0"
- STORE "0.0"+SUBSTR(JBCURR,1,1)+SUBSTR(JBCURR,JBPOS+1) TO JBCURR
- ELSE
- STORE "0.0"+SUBSTR(JBCURR,1,1)+SUBSTR(JBCURR,JBPOS+1) TO JBCURR
- ENDIF
- CASE AT('.',JBCURR) = 1
- STORE AT('.',JBCURR) TO JBPOS
- STORE "0.00"+SUBSTR(JBCURR,1,JBPOS-1)+SUBSTR(JBCURR,JBPOS+1,LEN(JBCURR)) TO JBCURR
- ENDCASE
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- ENDCASE
- RETURN