home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR11 / MAIL2FX2.ZIP / SENDFAX.PPS < prev    next >
Text File  |  1993-09-18  |  9KB  |  238 lines

  1. ;*────────────────────────────────────────────────────────────────────────────*
  2. ;   Script to allow user to enter a message to be faxed.
  3. ;   We gather the message envelope info, pre-validate information and put
  4. ;   the user into the editor.
  5. ;
  6. ;   Author     Frans van Duinen
  7. ;   Copyright  1993,  Master Programmer Group
  8. ;   Telephone  416 588-0698
  9. ;   BBS        416 588-3821
  10. ;
  11. ;   Original  FVD  9 Aug 93
  12. ;   Modified  FVD  2 Sep     Added  @ATTN line
  13. ;                   4 Sep     Fixed some formatting, added alias file
  14. ;                   6 Sep     Added ? support to show alias file
  15. ;
  16. ;   This script is intended for use with my Mail2Fax program, which scans
  17. ;   all messages in a PcBoard message database to identify those it needs
  18. ;   to extract for processing (those sent TO: FAX MAIL )
  19. ;   Mail2Fax does more complete validation of the fax number, but we catch
  20. ;   the most blantant ones at time of entry.
  21. ;
  22. ;   Outline of script
  23. ;   Display what this script does, ask confirm
  24. ;   explain process, ask if text upload
  25. ;   Join fax conference
  26. ;   Ask Fax no, addressee name & telephone (address), subject
  27. ;   Invoke editor & enter values by stuffing keyboard buffer.
  28. ;   exit via editor
  29. ;    At fax no prompt we accept fax no, alias name or ?.  Fax number and
  30. ;    alias are validated.
  31. ;
  32. ;     The alias file must have 1 alias and 1 fax number per line (alias first).
  33. ;    The alias may have embedded blanks, but the first character must be
  34. ;    alphabetic and it must be in all upper case.  The fax number may be
  35. ;    formatted.  E.g.
  36.  
  37. ;    WORLD WIDE  1(800) 555-1211
  38. ;    LOCAL              555-1213
  39. ;
  40. ;    We suppport local and netmail faxes
  41.  
  42. ;    There is a known bug in that KBDSTUF Chr(255) does not appear to work.
  43. ;   This results in an improperly constructed extended header (ATTENTN)
  44. ;    MAIL2FAX.EXE tests for this case.
  45. ;*────────────────────────────────────────────────────────────────────────────*
  46.  
  47. String  cConf, cLdOk
  48. String  Answer, FaxPhone, ToName, Subject, cReqRr
  49. String  cGetLn
  50. String  cFaxAlias
  51. String  cEchoFaxOk, cEchoMsg, cEchoConf
  52. String  cFaxId                        ; Fax mail or some BBS's NETID
  53. Integer i, j, nSelect
  54.  
  55. GetToken  cConf                       ; What conference is Fax mail
  56. GetToken  cLdOk                       ; Is long distance allowed
  57. GetToken  cEchoConf                   ; Is this an echo mail conference
  58. cEchoMsg  = "N"                       ; By default message is local
  59. cFaxId    = "FAX MAIL"
  60. cFaxAlias = "FAXALIAS.TXT"
  61.  
  62. PrintLn
  63. println "@X5FThis command allows you to enter a message that is to be sent via FAX@X0F"
  64. println
  65. Answer = ""
  66. inputyn "Is that what you want to do", Answer, 0Eh
  67. if (Answer <> YesChar()) goto NoFax
  68.  
  69. Log  "Fax Invoked", True
  70. println
  71. println "@X38┌────────────────────────────────────────────────────────────────────────────@X3B┐@X0F"
  72. println "@X38│@X3E This command allows you to enter a message that will be sent via FAX.      @X3B│@X0F"
  73. println "@X38│@X3E                                                                            @X3B│@X0F"
  74. println "@X38│@X3E You'll need to provide the Fax number and the name of the person or        @X3B│@X0F"
  75. println "@X38│@X3E company that you'll be sending this to.                                    @X3B│@X0F"
  76. println "@X38│@X3E The fax number must be 7 digits (Metro Toronto only), or a valid Alias.    @X3B│@X0F"
  77. println "@X38│@X3E (See the bulletin for a list of aliasses.)                                 @X3B│@X0F"
  78. println "@X38│@X3E                                                                            @X3B│@X0F"
  79. println "@X38│@X3E Please note that this is for OUTBOUND faxing only.  We have no provisions  @X3B│@X0F"
  80. println "@X38│@X3E to Receive faxes for you.                                                  @X3B│@X0F"
  81. println "@X38│@X3E                                                                            @X3B│@X0F"
  82. println "@X38│@X3E Our Fax Mail system will send you a reply message if it was unable to      @X3B│@X0F"
  83. println "@X38│@X3E transmit your fax successfully.                                            @X3B│@X0F"
  84. println "@X38│@X3E                                                                            @X3B│@X0F"
  85. println "@X38│@X3E Faxes are sent about every hour.                                           @X3B│@X0F"
  86. println "@X38└@X3B────────────────────────────────────────────────────────────────────────────┘@X0F"
  87. println
  88.  
  89. FaxPhone  = ""
  90. ToName    = ""
  91. Subject   = ""
  92.  
  93. :AskQuestions
  94. println
  95. ; #### Test if cEchoFax and prompt for Calling area/NPA
  96. ;       present list of participating systems, calling area and BBS ID
  97. ;       Set cFaxId to Het Fax ID for that BBS.
  98. ;       If net fax ID in use, ask for full TN (not alias)
  99. println  "Enter fax number to send fax to, or alias name, ? for list"
  100. InputText "Fax number, alias (or ?)", FaxPhone, 0Eh, 14
  101. FreshLine
  102. If  (Len( lTrim( FaxPhone, " ")) = 0)  Then
  103.     inputyn "Abort FAX entry", Answer, 0Eh
  104.     if (Answer = YesChar()) goto NoFax
  105. Endif
  106. If  (FaxPhone = "?")  Then
  107.     PrintLn  " The defined Fax Aliasses are"
  108.     DispFile  cFaxAlias, 0
  109.     goto AskQuestions
  110. Endif
  111.  
  112. Answer = Strip( Strip( Strip( Strip( FaxPhone, " "), ")"), "("), "-")
  113. IF   (Left( Answer, 1) < "0"  ||  Left( Answer, 1) > "9")  Then
  114.     fOpen  1, cFaxAlias, O_RD, S_DN
  115.     i = 1
  116.     j = 0                                     ; If zero on loop exit - no match
  117.     Answer = " " + Upper( FaxPhone) + " "
  118.     While (! fErr( 1))  Do
  119.         Fget 1, cGetLn
  120.         j = Instr( Upper( cGetLn), Answer)
  121.         IF  (j <> 0) Then
  122. ;            PrintLn cGetLn, j
  123.             Goto  FoundAlias
  124.         Endif
  125.         Inc i
  126.     EndWhile
  127. :FoundAlias
  128.     fClose 1
  129.     IF  (j = 0)  Then
  130.         PrintLn  "@X34Not a valid fax number or alias@X0F"
  131.         Goto  AskQuestions
  132.     Endif
  133.                                                  ; We have a match in alias file
  134.     j = j + Len( Answer)
  135.     Answer = Mid( cGetLn, j, Len( cGetLn) - J+1)
  136. ;    PrintLn  Strip( Answer, " ")
  137. ;    FaxPhone = Strip( Answer, " ")                      ; Remove leading blanks
  138. ;   Note, we actually store the alias here.  This allows Mail2Fax to see the
  139. ;    alias and translate it to a fax number w/o further validation.
  140. Else
  141.            ; Numeric
  142.     IF  (cLdOk = "N")  Then       ; Local # only
  143.         IF  (Len( Answer ) <> 7 )  Then
  144.             PrintLn  "@X34Seven digit fax numbers only@X0F"
  145.             Goto  AskQuestions
  146.         Endif
  147.         IF  (Left( Answer, 1) = "1"  ||  Left( Answer, 1) = "0")  Then
  148.             PrintLn  "@X34Local fax numbers only@X0F"
  149.             Goto  AskQuestions
  150.         Endif
  151.         Answer = Left( Answer, 3)
  152.         IF  (Instr( "411~611~911~976~", Answer + "~") <> 0)  Then
  153.             PrintLn  "@X34" + Answer + " is not a valid fax number@X0F"
  154.             Goto  AskQuestions
  155.         Endif
  156.     Else
  157.         IF  (Len( Answer ) < 7  ||  Len( Answer ) > 11  || Len( Answer ) = 9)  Then
  158.             PrintLn  "@X34Wrong number of digits@X0F"
  159.             Goto  AskQuestions
  160.         Endif
  161.  
  162.         IF  (Len( Answer ) = 7)   Then
  163.             Answer = Left( Answer, 3)
  164.         Else  IF  (Len( Answer ) = 8)   Then
  165.             Answer = Mid( Answer, 2, 3)
  166.         Else  IF  (Len( Answer ) = 10)   Then
  167.             Answer = Mid( Answer, 4, 3)
  168.         Else  IF  (Len( Answer ) = 11)  Then
  169.             Answer = Mid( Answer, 5, 3)
  170.         Endif  Endif  Endif  Endif
  171.         IF  (Instr( "411~611~911~976~", Answer + "~") <> 0)  Then
  172.             PrintLn  "@X34" + Answer + " is not a valid fax number@X0F"
  173.             Goto  AskQuestions
  174.         Endif
  175.     Endif
  176.  
  177. Endif
  178.  
  179. println
  180.  
  181. println   "@X0BPlease enter the following for the fax's cover sheet@X0F"
  182. println
  183. inputtext "To whose attention ", ToName, 0Eh, 25
  184. println
  185.  
  186. Println
  187. InputText "What is the subject ", Subject, 0Eh, 25
  188. FreshLine
  189. If  (Len( lTrim( Subject, " ")) = 0) Then
  190.     inputyn "Abort FAX entry", Answer, 0Eh
  191.     if (Answer = YesChar()) goto NoFax
  192. Endif
  193.  
  194. :ReqRR
  195. Println
  196. PrintLn   "@X0BShould we notify you if the FAX:@X0F"
  197. PrintLn   "@X0B  1 - could not be delivered, or@X0F"
  198. PrintLn   "@X0B  2 - in all cases@X0F"
  199. nSelect = "1"
  200. InputStr  "@X0B  (1 or 2) ", nSelect, 0Eh, 1, "12", NEWLINE
  201.  
  202. IF  (nSelect <> 2  &&  nSelect <> 1)  Then
  203.     PrintLn   "@X34Enter 1 or 2 only - Please re-enter@X0F"
  204.     GoTo ReqRr
  205. Endif
  206.  
  207. cReqRr = "N"
  208. IF  (nSelect = 2) Then
  209.    cReqRr = "Y"
  210. Endif
  211.  
  212. println
  213.  
  214. Answer = ""
  215. InputYn "Is the above information correct", Answer, 0Eh
  216. println
  217. if (Answer <> YesChar()) goto askquestions
  218.  
  219. Join  cConf                               ; Fax Mail Conference
  220. Log   "Fax Edit", True
  221.  
  222. println
  223. println "@X0BWe will now invoke the editor to allow you to enter the@X0F"
  224. println "@X0Btext for your fax.  Use Editor's  U command to UPLOAD text.@X0F"
  225.  
  226. kbdstuff "E" + Chr( 13)
  227. kbdstuff cFaxId + " @" + FaxPhone + Chr( 13)
  228. kbdstuff Subject + Chr( 13)
  229. IF  (cEchoFaxOk = "Y")  Then
  230.     kbdstuff cEchoMsg + Chr( 13)                 ; Echo message y/n
  231. Endif
  232. kbdstuff cReqRr  + Chr( 13)                      ; Reply requested y/n
  233. KbdStuff Chr( 255) + Chr( 255) + "@ATTENTN:"
  234. KbdStuff Left( ToName + Space( 59), 60) + "N" + Chr( 13)
  235. :NoFax
  236. end
  237. ;*────────────────────────────────── eof ─────────────────────────────────────*
  238.