home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / comm / fido / spot / rexx / request / request.spot < prev   
Text File  |  1994-02-05  |  6KB  |  176 lines

  1. /*
  2.  * Request: Request Handler © 1994 PSR Software
  3.  *          Automizes the sending of messages when requested.
  4.  * Freeware.  May not be altered or modified without permission!
  5.  *
  6.  * $VER: Request.spot v2.1 (22.01.94)
  7.  *
  8.  */
  9.  
  10. PREF = 'Request.prefs'
  11. FILE = 'ENV:' || PREF
  12. FILESAVE = 'ENVARC:' || PREF
  13. TEMP = 'T:Spot.Request.temp'
  14. LF = '0d'x
  15.  
  16. Address SPOT
  17. Options Results
  18.  
  19. 'IsIconified'
  20. If RC=0 Then 'UnIconify'
  21.  
  22. POS=3
  23. 'IsAreaList'
  24. If RC=0 Then POS=1
  25. 'IsMessageList'
  26. If RC=0 Then POS=2
  27.  
  28. 'AreaList'
  29.  
  30. If Open('Prefs',FILE,'r') Then Do
  31.    FORMAT=ReadLn('Prefs')
  32.    If ~(FORMAT='Request Handler (19.01.94)') Then Do
  33.       'RequestNotify TITLE "Sorry!" PROMPT "Prefs file is not compatible with this version."'
  34.      Exit
  35.    End
  36.    areacount=0
  37.    entrycount=0
  38.    MessageDir='S:'
  39.    ToName='Request Handler'
  40.    Do Until Eof('Prefs')
  41.       LINE=Strip(ReadLn('Prefs'),'L')
  42.       If Upper(Left(LINE,5))='AREA=' Then Do
  43.          Area.areacount=Right(LINE,Length(LINE)-5)
  44.          areacount=areacount+1
  45.       End
  46.       If Upper(Left(LINE,6))='ENTRY=' Then Do
  47.          Entry.entrycount=Right(LINE,Length(LINE)-6)
  48.          entrycount=entrycount+1
  49.       End
  50.       If Upper(Left(LINE,7))='TONAME=' Then Do
  51.          ToName=Right(LINE,Length(LINE)-7)
  52.       End
  53.       If Upper(Left(LINE,7))='ORIGIN=' Then Do
  54.          Origin=Right(LINE,Length(LINE)-7)
  55.       End
  56.       If Upper(Left(LINE,9))='FROMNAME=' Then Do
  57.          FromName=Right(LINE,Length(LINE)-9)
  58.       End
  59.    End
  60.    Call Close('Prefs')
  61. End
  62. Else Exit
  63.  
  64. If areacount=0 Then Do
  65.    'RequestNotify TITLE "Problem" PROMPT "No areas specified."
  66.    Exit
  67. End
  68. If entrycount=0 Then Do
  69.    'RequestNotify TITLE "Problem" PROMPT "No entried specified."
  70.    Exit
  71. End
  72. 'ProgressOpen TITLE "Request Handler" PROMPT "Searching areas..."'
  73. REQ=RESULT
  74. Do arealoop=0 To areacount-1
  75.    'ProgressUpdate' REQ arealoop+1 areacount
  76.    'MessageList'
  77.    'GotoArea "'Area.arealoop'"'
  78.    If RC=0 Then Do
  79.       'IncludeFlag UNREAD'
  80.       'GetNumSelected'
  81.       If RESULT>0 Then Do
  82.          'FirstMessage UNREAD'
  83.          'Messages'
  84.          NM=0
  85.          Do Until NM>0
  86.             'GetTo'
  87.             If Upper(RESULT)=Upper(ToName) Then Do
  88.                'GetFrom'
  89.                From=RESULT
  90.                'GetFromAddress'
  91.                FromAddress=RESULT
  92.                'GetSubject'
  93.                Subject=RESULT
  94.                UnRead=0
  95.                If Pos('UNREAD',Upper(Subject))>0 Then UnRead=1
  96.                Address Command 'Delete >NIL: "'TEMP'"'
  97.                'SaveAscii TO "'TEMP'" OVERWRITE NOHEADER NOTEARLINE NOORIGIN NOKLUDGES NOREFLOW'
  98.                If Open('Mes',TEMP,'r') Then Do Until (Eof('Mes') | Left(LINE,3)='---')
  99.                   LINE=Strip(ReadLn('Mes'),'L')
  100.                   Do entryloop=0 To entrycount-1
  101.                      Do c=1 to 4
  102.                         p.c=0
  103.                         WORD.c=''
  104.                      End
  105.                      p.1=Pos(',',Entry.entryloop)
  106.                      If p.1=0 Then p.1=Length(Entry.entryloop)+1
  107.                      Else Do
  108.                         p.2=Pos(',',Entry.entryloop,p.1+1)
  109.                         If p.2=0 Then p.2=Length(Entry.entryloop)+1
  110.                         Else Do
  111.                            p.3=Pos(',',Entry.entryloop,p.2+1)
  112.                            If p.3=0 Then p.3=Length(Entry.entryloop)+1
  113.                            Else Do
  114.                               p.4=Pos(',',Entry.entryloop,p.3+1)
  115.                               If p.4=0 Then p.4=Length(Entry.entryloop)+1
  116.                            End
  117.                         End
  118.                      End
  119.                      WORD.1=Upper(Left(Entry.entryloop,p.1-1))
  120.                      If p.2>0 Then Do
  121.                         WORDtemp.2=Left(Entry.entryloop,p.2-1)
  122.                         WORD.2=Right(WORDtemp.2,Length(WORDtemp.2)-p.1)
  123.                         If p.3>0 Then Do
  124.                            WORDtemp.3=Left(Entry.entryloop,p.3-1)
  125.                            WORD.3=Right(WORDtemp.3,Length(WORDtemp.3)-p.2)
  126.                            If p.4>0 Then Do
  127.                               WORDtemp.4=Left(Entry.entryloop,p.4-1)
  128.                               WORD.4=Right(WORDtemp.4,Length(WORDtemp.4)-p.3)
  129.                            End
  130.                         End
  131.                      End
  132.                      If Upper(WORD.1)='TEXT' Then Do
  133.                         NAME=Upper(WORD.2)
  134.                         FILENAME=WORD.3
  135.                         SUBJECT=WORD.4
  136.                         If Upper(LINE)=NAME Then Do
  137.                            If ~UnRead Then 'MarkMessage CLEAR'
  138.                            'Write TO "'From'" TOADDR "'FromAddress'" FROM "'FromName'" SUBJECT "'SUBJECT'" ORIGIN "'ORIGIN'" FILE "'FILENAME'" NOSIG NOEDIT NOGUI'
  139.                         End
  140.                      End
  141.                      Else If Upper(WORD.1)='DOS' Then Do
  142.                         NAME=Upper(WORD.2)
  143.                         FILENAME=WORD.3
  144.                         If Upper(LINE)=NAME Then Do
  145.                            Address Command '"'FILENAME'"'
  146.                         End
  147.                      End
  148.                      Else If Upper(WORD.1)='AREXX' Then Do
  149.                         NAME=Upper(WORD.2)
  150.                         FILENAME=WORD.3
  151.                         PARAMS=WORD.4
  152.                         If Upper(LINE)=NAME Then Do
  153.                             /* unsupported */
  154.                         End
  155.                      End
  156.                   End               
  157.                End
  158.                Else Do
  159.                   Say "Couldn't open temp file (program still running)."
  160.                End
  161.                Call Close('Mes')
  162.             End
  163.             'NextMarked'
  164.             NM=RC
  165.          End
  166.          'MessageList'
  167.          'SetFlags UNREAD'
  168.       End 
  169.    End
  170. End
  171. 'ProgressClose' REQ
  172.  
  173. If POS=1 Then 'AreaList'
  174. If POS=2 Then 'MessageList'
  175. If POS=3 Then 'Messages'
  176.