home *** CD-ROM | disk | FTP | other *** search
/ PDA Software Library / pdasoftwarelib.iso / PSION / MISC / CURCON / CURCON.OPL < prev    next >
Encoding:
Text File  |  1994-06-22  |  3.2 KB  |  190 lines

  1. REM CurCon - A Currency Convertor
  2. REM            Liam Relihan, 1994
  3. REM                relihanl@ul.ie
  4. REM                    Freeware. 
  5. REM                   Version 1.0
  6.  
  7. app CurCon
  8.     type 1
  9.     icon "\opd\curcon.pic"
  10. enda
  11.  
  12. proc main:
  13.     GLOBAL inproc$(100),mainid%
  14.     LOCAL curkey%
  15.  
  16.     gborder $204
  17.  
  18.     if EXIST ("\dat\currdb.dat")
  19.         giprint "Opening currency database"
  20.         open "\dat\currdb.dat",A,fr$,to$,ra
  21.         dispcc:
  22.     else
  23.         giprint "Creating currency database"
  24.         create "\dat\currdb.dat",A,fr$,to$,ra
  25.         dispcc:
  26.     endif
  27.     do
  28.         curkey% = kget%:
  29.         if curkey% = 258
  30.             next
  31.             if EOF :first :endif
  32.             dispcc:
  33.         elseif curkey% = 259
  34.             if POS=1 
  35.                 last
  36.             else
  37.                 back
  38.             endif
  39.             dispcc:
  40.         elseif curkey%=13
  41.             doconv:
  42.         endif
  43.     until 3 < 3
  44. endp
  45.  
  46. proc dispcc:
  47.     if count=0
  48.         gstyle 1
  49.         gat 190,15
  50.         gprintb "0/0",45,1,3,3
  51.         gstyle 9
  52.         gat 1,40
  53.         gprintb "No Ratios",236,3,5,5
  54.         gstyle 1
  55.         gat 1,65
  56.         gprintb "Use "+chr$(2)+"N to add ratios.",236,3,5,5
  57.     else
  58.         gstyle 1
  59.         gat 190,15
  60.         gprintb gen$(pos,3)+"/"+gen$(count,3),45,1,3,3
  61.         gstyle 9
  62.         gat 1,40
  63.         gprintb A.fr$+"/"+A.to$+" ("+gen$(A.ra,10)+")",236,3,5,5
  64.         gstyle 1
  65.         gat 1,65
  66.         gprintb "Use "+chr$(17)+" and "+chr$(16)+" to select ratio",236,3,5,5
  67.     endif
  68. endp
  69.  
  70. proc doconv:
  71.     LOCAL cnvstr$(128)
  72.     LOCAL amt
  73.     LOCAL d%,abc$(10),rstr$(20)    
  74.     
  75.     dinit "Conversion"
  76.     dtext "", A.fr$+"        "+A.to$,$102
  77.     dchoice d%,abc$,"->,<-"
  78.     dfloat amt,"Amount",0,100000
  79.     if dialog
  80.         dinit "Result"
  81.         if d%=1
  82.             rstr$=fix$(amt*A.ra,2,10)
  83.             dtext A.to$,rstr$
  84.         else
  85.             rstr$=fix$(amt/A.ra,2,10)
  86.             dtext A.fr$,rstr$
  87.         endif
  88.         dialog
  89.     endif
  90. endp
  91.  
  92. proc procc:
  93.     LOCAL newr
  94.     
  95.     if count=0
  96.         giprint "No Ratio to Modify"
  97.     else    
  98.         dinit "Change Ratio"
  99.         dtext "", A.fr$+"/"+A.to$
  100.         dfloat newr,"New Ratio",0,100000
  101.         if dialog
  102.             A.ra=newr
  103.             update
  104.             dispcc:
  105.           giprint "Entry modified"
  106.         endif
  107.     endif
  108. endp
  109.  
  110. proc procd:
  111.     if count=0 
  112.         giprint "No Ratio to Delete"
  113.     else    
  114.         dinit "Delete Current Ratio"
  115.         dtext "", "Are You Sure ?",$202
  116.         dbuttons "Yes",%Y,"No",%N
  117.         if dialog=%y
  118.             erase
  119.             if EOF :first :endif
  120.             dispcc:
  121.           giprint "Entry deleted"
  122.         endif
  123.     endif
  124. endp
  125.  
  126. proc proca:
  127.     dinit
  128.     dtext "","CurCon",$102
  129.     dtext ""," Version 1.0",$102
  130.     dtext "","Liam Relihan, 1994",$102
  131.     dtext "","relihanl@ul.ie",$102
  132.     dtext "","Freeware",$102
  133.     dialog
  134. endp
  135.  
  136. proc procn:
  137.   LOCAL currdb$(128)
  138.   LOCAL fr$(128),to$(128),ra
  139.   
  140.     dinit "New Ratio"
  141.     dedit fr$,"From",3
  142.     dedit to$,"To",3
  143.     dfloat ra,"Ratio",0,10000
  144.     if dialog
  145.         A.fr$=fr$
  146.         A.to$=to$
  147.         A.ra=ra
  148.         append
  149.         last
  150.         dispcc:        
  151.         giprint "Entry Added"
  152.     endif
  153. endp
  154.  
  155. proc procx:
  156.   giprint "Shutting down..."
  157.     close
  158.     stop
  159. endp
  160.  
  161. proc kget%:
  162.     local k%,h$(9),a$(5)
  163.  
  164.     h$="NCDXA"
  165.     while 1
  166.         k%=GET
  167.         if k%=$122
  168.             minit
  169.             mcard "Currency","New Ratio",%N,"Delete Ratio",%D,"Change Ratio",%C
  170.             mcard "Special","Exit",%X
  171.             mcard "Help","About",%A
  172.             k%=menu
  173.             if k% and intf(loc(h$,chr$(k%)))
  174.                 a$="proc"+chr$(k%)
  175.                 @(a$):
  176.             endif
  177.         elseif k% and $200
  178.             k%=(k%-$200) and $FFDF
  179.             k%=loc(h$,chr$(k%))
  180.             if k%
  181.                 a$="proc"+mid$(h$,k%,1)
  182.                 @(a$):
  183.             endif
  184.         else
  185.             return k%
  186.         endif
  187.     endwh
  188. endp
  189.  
  190.