home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / bazy / fiasco_2.1 / databases / organizer / dial.frx < prev    next >
Text File  |  1997-10-19  |  5KB  |  250 lines

  1. /* dial.frx
  2.  * Written by Eckard Haupt and Nils Bandener
  3.  * $VER: dial.frx 6.6 (19.10.97)
  4.  */
  5.  
  6. /*
  7.  
  8.   Script for automatic dialing of phone numbers with a modem
  9.   from Fiasco databases.
  10.  
  11.   Requirements:
  12.  
  13.   - Phone and modem either connected at a double connection or
  14.     connected in series directly at the modem, so that the modem
  15.     makes the phone off line.
  16.  
  17.   - A normal field or a listview field with the name "Phone" or a
  18.     name that has been specified as argument for the script.
  19.     The script is concieved for Zyxel 1496+ modems, however it
  20.     should run with other modems.
  21.  
  22.   - Please also see the options below that may be set
  23.  
  24.   Usage:
  25.  
  26.   Select record with number to be dialed, start script, click
  27.   on "Yes". After that the modem dials, if dialing is successful,
  28.   lift the reciever, click on "Modem hang up", and ... talk ;-)
  29.  
  30. */
  31.  
  32. scriptname = "Dial"
  33.  
  34. fieldname = "Phone"
  35.  
  36. /*
  37.  *  dialcommand:
  38.  *
  39.  *  Modem command to be executed for dialing.
  40.  *
  41.  *  Use DP instead of DT if you have an analog phone connection.
  42.  *  Use DP0W or DT0W to wait for a free tone before dialing.
  43.  */
  44.  
  45. dialcommand = "DT"
  46.  
  47. /*
  48.  *  dialsuffix:
  49.  *
  50.  *  String to be appended to the dialed number
  51.  *
  52.  *  Default: "". If you add three numbers like "111" this does not
  53.  *  affect dialing but is able to fool the connection list by the
  54.  *  German Telekom. The connection list hides the last three numbers,
  55.  *  if you set dialsuffix to "111", it will hide these three ones.
  56.  *  (Note: This method is known to be working and known to be not
  57.  *  working. You have to try it for yourself, whether it is working
  58.  *  for you)
  59.  */
  60.  
  61. dialsuffix = ""
  62.  
  63. /*
  64.  *  setreg11:
  65.  *
  66.  *  If 1, sets a modem register for faster dialing
  67.  *  Check compatibility with your modem!!
  68.  */
  69.  
  70. setreg11 = 0
  71.  
  72. Options Results
  73.  
  74. fiasco_port = address()
  75.  
  76. Signal on Syntax
  77. Signal on Halt
  78. Signal on Break_C
  79. Signal on Failure
  80.  
  81. LockGUI
  82.  
  83. Options Results
  84.  
  85. /* Open rexxsupport.library
  86.  */
  87.  
  88. if ~show('l',"rexxsupport.library") then
  89. do
  90.     if ~addlib('rexxsupport.library',0,-30) then
  91.     do
  92.         RequestChoice '"Could not open rexxsupport.library" "Cancel"'
  93.  
  94.         call bail_out
  95.     end
  96. end
  97.  
  98. /* Is the field a listview field or a normal field? */
  99.  
  100. GetAttr "Field Name" fieldname "listview var lvfield"
  101.  
  102. if lvfield then
  103. do
  104.     /* Field is a listview field */
  105.  
  106.     GetField fieldname "listentrycount var num"
  107.  
  108.     do i = 1 to num
  109.  
  110.         GetField fieldname "ListEntry" i "var n"
  111.  
  112.         RequestChoice '"Call the number*n' || n || ' ?" "Yes|No|Cancel" Title "Dial"'
  113.  
  114.         if result = 1 then
  115.         do
  116.             if dial(n,1) = 0 then break
  117.         end
  118.         else if result = 0 then break
  119.  
  120.     end
  121. end
  122. else
  123. do
  124.     /* Field is a simple one */
  125.  
  126.     GetField fieldname "var n"
  127.  
  128.     if n ~= "" then
  129.     do
  130.         RequestChoice '"Call the number*n' || n || ' ?" "Yes|Cancel" Title "Dial"'
  131.  
  132.         if result = 1 then
  133.         do
  134.             call dial(n,0)
  135.         end
  136.     end
  137. end
  138.  
  139. call bail_out
  140.  
  141. /*
  142.  *  Function dial():
  143.  *
  144.  *  result = dial(number, multiplenumbers)
  145.  *
  146.  *  number - Number to be dialed
  147.  *  multiplenumbers - Display a "Next number" gadget (boolean)
  148.  *
  149.  *  result - 0 = success
  150.  *           1 = next number
  151.  *           2 = system error
  152.  */
  153.  
  154. dial:
  155.  
  156. number = arg(1)
  157.  
  158. if open("f","SER:","WRITE") then
  159. do
  160.  
  161.     call writech("f","AT&F" || d2c(13))
  162.  
  163.     call delay(20)
  164.  
  165.     if setreg11 then
  166.     do
  167.         call writech("f","ATX7S11=55L7M1" || d2c(13))
  168.         call delay(20)
  169.     end
  170.  
  171.     call writech("f", "AT" || dialcommand || compress(number, "()/-") || dialsuffix || d2c(13))
  172.  
  173.     if arg(2) then
  174.     do
  175.         resps = "Modem hang up|Next number"
  176.     end
  177.     else
  178.     do
  179.         resps = "Modem hang up"
  180.     end
  181.  
  182.     RequestChoice '"Dialing: ' || number || '" "' || resps || '" var ch'
  183.  
  184.     call writech("f","ATH" || d2c(13))
  185.  
  186.     call close("f")
  187.  
  188.     if ch = 1 then return 0
  189.     else return 1
  190.  
  191. end
  192. else
  193. do
  194.     RequestChoice '"Could not open serial.device" "Cancel"'
  195.  
  196.     return 2
  197.  
  198. end
  199.  
  200.  
  201. bail_out:
  202.  
  203. Interpret Address fiasco_port
  204.  
  205. UnlockGUI
  206. /* ResetStatus */
  207.  
  208. exit
  209.  
  210. syntax:
  211. failure:
  212.  
  213. if show("Ports", fiasco_port) then
  214. do
  215.     Interpret Address fiasco_port
  216.  
  217.     RequestChoice '"Error ' || rc || ' in line ' || sigl || ':*n' || errortext(rc) || '" "Cancel" Title "' || scriptname || '"'
  218. end
  219. else
  220. do
  221.     say "Error" rc "in line" sigl ":" errortext(rc)
  222.     say "Enter to continue"
  223.     pull dummy
  224. end
  225.  
  226. call bail_out
  227.  
  228. halt:
  229. break_c:
  230.  
  231. if show("Ports", fiasco_port) then
  232. do
  233.     Interpret Address fiasco_port
  234.  
  235.     RequestChoice '"Script Abort Requested" "Abort Script|Continue Script" Title "' || scriptname || '"'
  236.  
  237.     if result = 0 then return
  238. end
  239. else
  240. do
  241.     say "*** Break"
  242.     say "Enter to continue"
  243.     pull dummy
  244. end
  245.  
  246. call bail_out
  247.  
  248.  
  249.  
  250.