home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1B / DATAFILE_PDCD1B.iso / _pocketbk / pocketbook / 003 / country_zi / COUNTRY.OPLd < prev    next >
Text File  |  1993-05-17  |  4KB  |  178 lines

  1. PROC country:
  2. REM Compare exchange rates etc.
  3. REM Uses entries in data file Country
  4. REM Copyright Chris Moss, 1992
  5. REM Permission given to copy & use
  6. REM as long as this notice is kept.
  7.  
  8.     global country$(5,15),value$(5,15), option%
  9.     global raw(5), oldv$(5,15), oldo%
  10.     global tag$(5,25), oldc$(15)
  11.     global subopt%,olds%, unit$(6,20),mult(6)
  12. open "\DAT\Country.dbf",A,name$,exch$,gnp$,area$,pop$
  13. busy "Checking currencies"
  14. country$(1) = "UK "
  15. country$(2) = "France"
  16. country$(3) = "Germany"
  17. country$(4) = "Belgium"
  18. country$(5) = "USA"
  19. option%=1
  20. setOpt:
  21. busy off
  22. do  REM main loop
  23.     oldo%=option% :oldc$=country$(1)
  24.     if doDialog: =0 :stop :endif
  25.     if option%<>oldo%
  26.         setOpt:
  27.     elseif option%=1
  28.         newVal:
  29.     endif
  30. until 0
  31. ENDP
  32.  
  33. PROC doDialog:
  34. dinit
  35. dchoice option%," Comparisons", "Currency,Countries,Size,Population,Pop density,Av Income,GDP"
  36. if option%=1
  37.     dedit value$(1), tag$(1)
  38.     dedit value$(2), tag$(2)
  39.     dedit value$(3), tag$(3)
  40.     dedit value$(4), tag$(4)
  41.     dedit value$(5), tag$(5)
  42. else
  43.     dtext tag$(1),value$(1)
  44.     dtext tag$(2),value$(2)
  45.     dtext tag$(3),value$(3)
  46.     dtext tag$(4),value$(4)
  47.     dtext tag$(5),value$(5)
  48. endif
  49.     dtext "Change any item and hit", " <Enter>"
  50.     return dialog
  51. endP
  52.  
  53. PROC setOpt:
  54. local v,i%
  55. if option%=2
  56.     option%=oldo%
  57.     newCtrys:
  58.     v=raw(1)
  59. else
  60.         i%=0 :while i%<5 :i%=i%+1
  61.             if setVal:(country$(i%),i%)=0 :stop
  62.             endif
  63.         endwh
  64.         if option%=1
  65.             v=1.0 
  66.         else v=raw(1)
  67.         endif
  68. endif
  69. setRatio:(v)
  70. endP
  71.  
  72. PROC newVal:
  73. local i%
  74. rem onerr ignore
  75. i%=0 :while i%<5 :i%=i%+1
  76.     if value$(i%)<>oldv$(i%)
  77.         setRatio:(baseVal:(i%))
  78.         return
  79.     endif
  80. endWh
  81. return
  82. ignore:: value$(i%)=oldv$(i%)
  83. endP
  84.  
  85. PROC setVal:(c$,n%)
  86. local t$(15)
  87. if getCtry:(c$)=0 :return 0 :endif
  88. country$(n%)=A.name$
  89. vector option%
  90.     exch,cont,area,pop,popd,gnppc,gnp
  91. endv
  92. exch:: raw(n%) = getVal:(A.exch$)
  93.     t$=mid$(A.exch$,loc(A.exch$," "),15)
  94.     goto cont
  95. area:: raw(n%) = getVal:(A.area$)
  96.     t$=fix$(raw(n%),0,6)+",000 km2"
  97.     goto cont
  98. pop:: raw(n%) = getVal:(A.pop$)
  99.     t$=fix$(raw(n%),0,6)+" m"
  100.     goto cont
  101. gnp:: raw(n%) = getVal:(A.gnp$)*getVal:(A.pop$)/1000.0
  102.     t$="bn$"+fix$(raw(n%),0,6)
  103.     goto cont
  104. gnppc:: raw(n%) = getVal:(A.gnp$)
  105.     t$="$"+fix$(raw(n%),0,6)
  106.     goto cont
  107. popd:: raw(n%) = getVal:(A.area$)
  108.    if raw(n%)<>0 
  109.         raw(n%)=getVal:(A.pop$)/raw(n%)
  110.     endif
  111.     t$=fix$(raw(n%)*1000.0,0,6)+"/km2"
  112. cont::
  113.     tag$(n%)=left$(country$(n%)+" "+t$,25)
  114.     return 1
  115. endp
  116.  
  117. PROC setRatio:(v)
  118. local i%,w
  119. i%=0: while i%<5: i%=i%+1
  120.     if option%=1
  121.         value$(i%)=fix$(v*raw(i%),2,-15)
  122.     else
  123.         value$(i%)=fix$(raw(i%)/v*100,0,-8)+"%"
  124.     endif
  125.     oldv$(i%)=value$(i%)
  126. endWh
  127. endP
  128.  
  129. PROC newCtrys:
  130. local c$(5,15), i%
  131. i%=0 :while i%<5 :i%=i%+1
  132.     c$(i%)=country$(i%)
  133. endwh
  134. dinit
  135. dText "Change any country","abbreviations ok"
  136.     dedit c$(1), "Country 1",15
  137.     dedit c$(2), "Country 2",15
  138.     dedit c$(3), "Country 3",15
  139.     dedit c$(4), "Country 4",15
  140.     dedit c$(5), "Country 5",15
  141. dText "","When finished hit <Enter>"
  142. if dialog
  143.     i%=0 :while i%<5 :i%=i%+1
  144.         if c$(i%)<>country$(i%)
  145.             setVal:(c$(i%),i%)
  146.         endif
  147.     endwh
  148. endif
  149. endP
  150.  
  151. PROC getCtry:(c$)
  152. first
  153. while find(c$+"*")
  154.     if loc(A.name$,c$)=1
  155.         return 1
  156.     endif
  157. endwh
  158. Alert("Sorry, I don't know about ", c$)
  159. return 0
  160. endP
  161.  
  162. PROC getVal:(s$)
  163. onerr e
  164. return val(left$(s$,loc(s$," ")-1))
  165. e:: return 0
  166. endP
  167.  
  168. PROC baseVal:(n%)
  169. local p%
  170. onerr f
  171. p%=loc(value$(n%),",")
  172. if p%>0 and (n%)>0
  173.   return (val(left$(value$(n%),p%-1))+val(mid$(value$(n%),p%+1,10))/mult(n%))/raw(n%)
  174. else return val(value$(n%))/raw(n%)
  175. endif
  176. f:: return 1
  177. endP
  178.