home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / postroad.zip / fldr2asc.cmd < prev    next >
OS/2 REXX Batch file  |  1997-10-23  |  4KB  |  108 lines

  1. /*          To create an .ASC file from the Reply-to:, From:, or          */
  2. /*                 Sender: line of each note in a folder                  */
  3. /*                      Parameters: folder_directory                      */
  4. /*    InnoVal Systems Solutions, Inc., and the authors cannot be held     */
  5. /*   responsible for damage that might occur while using this program.    */
  6. /*                         Use at your own risk.                          */
  7.  
  8. call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  9. signal on syntax name NoRexx
  10. call SysLoadFuncs
  11. signal on syntax name Syntax
  12. '@ECHO OFF'
  13. parse arg directory
  14. if directory='' then do
  15.    say ""
  16.    say "Creates .ASC file (from which ASC2ADR.CMD can create a Post Road Mailer"
  17.    say "address book file) from the Reply-to: or From: line of every note in a"
  18.    say "folder.  Specify the pathname of the folder as a command line parameter."
  19.    say ""
  20.    exit
  21. end
  22. outfile=systempfilename('PRMBK???.ASC')
  23. Call LineOut outfile, 'Addresses from' directory 'folder (Post Road Mailer address book)'
  24. Call LineOut outfile, 'The fields are:'
  25. Call LineOut outfile, 'Last Name<tab>First Name<tab>Organization<tab>Email 1<tab>Nickname 1<tab>....Email 5<tab>Nickname 5<tab>Telephone 1<tab>Telephone 2<tab>Fax<tab>Notes 1<tab>Notes 2<tab>Notes 3<tab>....Notes X'
  26. call lineout outfile,''
  27. call sysfiletree directory'\*.POP',files,'FO'
  28. addresses.0=0
  29. do i=1 to files.0
  30.    drop from reply sender
  31.    do while lines(files.i)
  32.       line=linein(files.i)
  33.       if strip(line)='' then leave
  34.       parse var line tag ' ' value
  35.       tag=translate(tag)
  36.       if tag='FROM:' then FROM=value
  37.       if tag='REPLY-TO:' then REPLY=value
  38.       if tag='SENDER:' then SENDER=value
  39.    end
  40.    call lineout files.i
  41.    select
  42.       when REPLY<>'REPLY' then call entry REPLY
  43.       when FROM<>'FROM' then call entry FROM
  44.       when SENDER<>'SENDER' then call entry SENDER
  45.       otherwise nop
  46.    end
  47. end
  48. say ""
  49. say "The folder's addresses have been exported to file" outfile
  50. say "There were" addresses.0 "unique addresses."
  51. say ""
  52. exit
  53. entry:procedure expose outfile addresses.
  54.    parse arg address
  55.    address=translate(address,' ','"')
  56.    last='' ; first='' ; email='' ; name='' ; check=''
  57.    select
  58.       when pos('<',address)>0 then parse var address name '<' email '>' .
  59.       when pos('(',address)>0 then parse var address email '(' name ')' .
  60.       otherwise email=address
  61.    end
  62.    name=strip(name)
  63.    if name<>'' then do
  64.       if pos(',',name)>0 then do
  65.          parse var name last ',' first
  66.          first=strip(first)
  67.          check=translate(first)
  68.          if check='JR.' | check='SR.' | check='JR' | check='SR' | check='' then do
  69.             lastspace=lastpos(' ',last)
  70.             check=first
  71.             parse var last first =(lastspace) last
  72.             last=last check
  73.          end
  74.       end
  75.       else do
  76.          lastspace=lastpos(' ',name)
  77.          parse var name first =(lastspace) last
  78.       end
  79.    end
  80.    email=strip(email)
  81.    last=strip(last)
  82.    first=strip(first)
  83.    if last='' then last=first
  84.    if last='' /* still, which would mean that FIRST='' also */ then last='Unknown'
  85.    if first=last then first=''
  86.    if words(EMAIL)=1 then do
  87.       match=0
  88.       do j=1 to addresses.0
  89.          if email=addresses.j then match=1
  90.       end
  91.       if match then return
  92.       addresses.0=addresses.0+1
  93.       j=addresses.0
  94.       addresses.j=email
  95.       call lineout outfile,LAST||'09'x||FIRST||'09'x||'09'x||EMAIL||copies('09'x,13)
  96.    end
  97. return
  98. Syntax:
  99.   say 'Error' rc 'in line' sigl':' errortext(rc)
  100.   say sigl':' sourceline(sigl)
  101.   exit
  102. return
  103. NoRexx:
  104.    say 'Unable to load the REXXUtil functions.  Either the REXXUTIL.DLL file'
  105.    say 'is not on the LIBPATH or REXX support is not installed on this system.'
  106.    exit
  107. return
  108.