home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d09xx / d0970.lha / ADM / ARexx / ADR-Laden.bt2 < prev    next >
Text File  |  1993-08-30  |  7KB  |  305 lines

  1. /****************************************/
  2. /*                                      */
  3. /*  BT-II_ADM  V_2        28.08.1993    */
  4. /*                                      */
  5. /*  Starten von AddressMaster via BT-II */
  6. /*                                      */
  7. /*  Einlesen von Adressen via ADM.      */
  8. /*                                      */
  9. /*  Ein ARexx-Programm von              */
  10. /*  Peter Humm, CH-9203 Niederwil       */
  11. /*                                      */
  12. /*  In Anlehnung an ein Script von      */
  13. /*  Carsten Fulde.                      */
  14. /*                                      */
  15. /****************************************/
  16.  
  17. /*  $VER: ADR-LOAD.bt2 (28.7.93)
  18.  
  19.  In BeckerText-II an gewⁿnschter Stelle VORNAME NAME eintippen und
  20.  Cursor auf dieser Zeile stehenlassen. Dieses Script erwartet den
  21.  Eintrag auf der Zeile 9 !
  22.  
  23.  Es reicht auch bloss ein Eintrag. Er wird als NAME interpretiert.
  24.  So werden auch Adressen gefunden, bei denen kein Vorname eingege-
  25.  ben wurde, z.B. Firmen.
  26.  
  27.  Nun ADR-Laden.bt2 aufrufen. *ADM* wird gestartet, sofern er nicht
  28.  schon lΣuft. Nach der Adressen-Suche wird er wieder ausgeschaltet,
  29.  damit das Fenster auf der WB verschwindet. Vielleicht baut uns ja
  30.  Jan noch den Befehl SLEEP in den ARexxPort ein (entspr. TAB).
  31.  
  32.  Das Arexx-Script akzeptiert WildCards wie Geiss* oder auch bloss
  33.  Teile des Vor- und Zunamens. 'J Geiss' wird wie auch 'Jan issle'
  34.  von *ADM* richtig als Jan Geissler interpretiert.
  35.  
  36.  Dreiteilige Namen wie Jan M. Mustermann werden ebenfalls erkannt.
  37.  So fⁿhrt 'J M Must' zum selben Ergebnis, es sei denn, es befinde
  38.  sich vorher noch ein Jⁿrg M. Muster in der Datei ;-))
  39.  
  40.  Es ist m÷glich, zwei Adressen unter gleichen Namen abzuspeichern.
  41.  Wenn also Name und Vorname von zwei EintrΣgen identisch sind, zeigt
  42.  BT-II die erste Adresse an und fragt, ob die erste oder die zweite
  43.  eingetragen werden soll. Wird 'NΣchste' gewΣhlt, l÷scht BT-II den
  44.  ersten Eintrag und ersetzt ihn durch den zweiten (eigentlich logisch).*/
  45.  
  46.  
  47. /*  DAS SCRIPT   */
  48.  
  49.  
  50. /*  Nachsehen, ob AddressMaster schon   */
  51. /*  lΣuft. Wenn nicht, dann starten     */
  52.  
  53. if ~show("P",ADM.1) = 1 then do
  54.  
  55.     /*  Einschalten des CLI                 */
  56.  
  57.     address command
  58.  
  59.     /*  Starten von ADM wie von WB, also    */
  60.     /*  mit den ToolTypes.                  */
  61.     /*  Das Programm WBRun sollte beiliegen */
  62.     /*  sonst findet Ihr es auf Fish_843.   */
  63.     /*  Kopiert es in's C:                  */
  64.  
  65.     'wbrun dh0:Office/ADM/AddressMaster'
  66.  
  67.     /*  Auf langsameren Amigas muss hier    */
  68.     /*  eine Wartezeit eingegeben werden,   */
  69.     /*  damit *ADM* auch tatsΣchlich bereit */
  70.     /*  ist, wenn die Suche startet.        */
  71.  
  72.     address command 'wait 5'
  73.  
  74. end
  75.  
  76. /*  Scharfstellen von BT-II             */
  77.  
  78. address 'bt2'
  79. options results
  80.  
  81. /*  Aktuelle Zeile einlesen.            */
  82. /*  Geht m.W. erst ab BT-II V_1.13      */
  83.  
  84. 'WYSIWYG' 0
  85. 'GET' 'line'
  86.  
  87. /*  Zeile zerlegen in Vorname und Name  */
  88. /*  Feststellen der Anzahl Worte. Es    */
  89. /*  wird nur das erste und letzte Wort  */
  90. /*  ausgewertet.                        */
  91.  
  92. line = result
  93. zahl = words(line)
  94. eins = subword(line,1,1)
  95. zwei = subword(line,zahl)
  96.  
  97. /*  allf. Carriage-Returns abschneiden  */
  98.  
  99. ret  = D2C(13)
  100. eins = compress(eins,ret)
  101. zwei = compress(zwei,ret)
  102.  
  103. /*  Falls kein Vorname eingegeben wird, */
  104. /*  muss dieser Suchbegriff gel÷scht    */
  105. /*  werden.                             */
  106.  
  107. if zwei = eins then eins = ""
  108.  
  109. /*  WildCards anfⁿgen.                  */
  110. /*  Erleichtert die Suche z.B. bei      */
  111. /*  Doppelnamen                         */
  112.  
  113. eins = "*"eins"*"
  114. zwei = "*"zwei"*"
  115.  
  116. /*  Datensatz nach dem Namen suchen.    */
  117. /*  Hier der erste.                     */
  118.  
  119. fst = 1
  120. res = 0
  121.  
  122. /*  Suchparameter ⁿbergeben             */
  123.  
  124. ADM.FIRSTNAME = eins
  125. ADM.LASTNAME = zwei
  126.  
  127. /*  Endlos-Schleife / Such-Routine      */
  128.  
  129. do forever
  130.  
  131.   /*  Jetzt ADM.1 aktivieren              */
  132.  
  133.   address 'ADM.1'
  134.  
  135.   /*  Suche ab 1. Adresse und Ablage in   */
  136.   /*  der STEM.Variable RESAD             */
  137.  
  138.   SEARCH fst ADM
  139.   res = RESULT
  140.  
  141.   /*  Abfrage Fehlermeldung. Wenn o.k.    */
  142.   /*  dann Eintrag der Adresse in BT-II   */
  143.   /*  Andernfalls Abbruch der Suche.      */
  144.  
  145.   if res >-1 then
  146.     do
  147.  
  148.     /*  Erste passende Adresse einlesen.    */
  149.  
  150.     GETADDRESS RESAD
  151.  
  152.     /*  NΣchsten Eintrag aktivieren und als */
  153.     /*  Stamm-Variable RESAD1 einlesen      */
  154.  
  155.     ACTIVATENEXT
  156.  
  157.     GETADDRESS RESAD1
  158.  
  159.     /*  Falls Name UND Vorname identisch    */
  160.     /*  sind, erste gefundene Adresse ins   */
  161.     /*  Dokument ⁿbertragen.                */
  162.  
  163.     if (RESAD.FIRSTNAME = RESAD1.FIRSTNAME) + (RESAD.LASTNAME = RESAD1.LASTNAME) = 2 then do
  164.  
  165.       address 'bt2'
  166.  
  167.       call Einsetzen
  168.  
  169.       /*  Abfrage, ob die erste oder zweite   */
  170.       /*  Adresse gewⁿnscht wird.             */
  171.  
  172.       GET 'string Diese NΣchste Hier_gibt_es_noch_eine_weitere_Adresse._ _____Welche_soll_ich_einsetzen ??_'
  173.  
  174.       /*  Wird die zweite gewΣhlt, muss die   */
  175.       /*  bereits eingetragene erst gel÷scht  */
  176.       /*  werden. Sonst Script abbrechen.     */
  177.  
  178.       if result = 'NΣchste' then do
  179.  
  180.         GOTO 9
  181.  
  182.         /*  Adressen-Block markieren und dann   */
  183.         /*  ausschneiden.                       */
  184.  
  185.         '6MARK' down
  186.         'BCUT'
  187.  
  188.         /*  Die nΣchste Adresse wird aus *ADM   */
  189.         /*  geholt und wie gewohnt eingetragen. */
  190.  
  191.         address 'ADM.1'
  192.  
  193.         GETADDRESS RESAD
  194.  
  195.         address 'bt2'
  196.  
  197.         call Einsetzen
  198.  
  199.         call Fertig
  200.  
  201.       end
  202.       else call Fertig
  203.  
  204.       /*  Abbruch, wenn die erste Adresse     */
  205.       /*  bestΣtigt wird.                     */
  206.  
  207.     end
  208.     else do
  209.  
  210.       /*  Wenn Adresse nur einmal vorhanden,  */
  211.       /*  eintragen und Skript beenden.       */
  212.  
  213.       call Einsetzen
  214.  
  215.       call Fertig
  216.  
  217.     end
  218.  
  219.   end
  220.   else do
  221.  
  222.     /*  Meldung, dass Adresse nicht ge-     */
  223.     /*  funden und Abbruch der Suche.       */
  224.  
  225.     address 'bt2'
  226.  
  227.     GET 'string OK OK >->->->__Adresse_nicht_gefunden_<-<-<-< __________Na dann eben nicht_!!'
  228.  
  229.     call Fertig
  230.  
  231.   end
  232.  
  233. end
  234.  
  235.  
  236. /*  Ausschalten von *ADM* und Rⁿckkehr  */
  237. /*  zu BeckerText-II.                   */
  238.  
  239. Fertig:
  240.  
  241.   Address 'ADM.1'
  242.  
  243.   QUIT
  244.  
  245. exit
  246.  
  247. return
  248.  
  249.  
  250. /*  Diese Routine plaziert die Zeilen   */
  251. /*  der Adresse richtig im Dokument.    */
  252.  
  253. Einsetzen:
  254.  
  255. address 'bt2'
  256.  
  257. /*  Aktuelle Zeile markieren und dann   */
  258. /*  ausschneiden.                       */
  259.  
  260. 'MARK' 'line'
  261. 'BCUT'
  262.  
  263. /*  Adresse in Dokument eintragen       */
  264.  
  265. INSERT RESAD.SALUTATION
  266. INSERT "\r"
  267. if RESAD.FIRSTNAME ~= '' then do
  268.     INSERT RESAD.FIRSTNAME
  269.     INSERT "320820"x
  270. end
  271. INSERT RESAD.LASTNAME
  272. INSERT "\r"
  273. if RESAD.ADDRESS1 ~= '' then do
  274.     INSERT RESAD.ADDRESS1
  275.     INSERT "\r"
  276. end
  277. if RESAD.ADDRESS2 ~= '' then do
  278.     INSERT RESAD.ADDRESS2
  279.     INSERT "\r"
  280. end
  281. INSERT RESAD.POSTCODE
  282. INSERT "320820"x
  283. INSERT RESAD.CITY
  284. INSERT "\r"
  285. INSERT RESAD.COUNTRY
  286. INSERT "\r"
  287.  
  288. /*  Dokument unter der Adresse sΣubern  */
  289. /*  und geeignete Zeichen- und Absatz-  */
  290. /*  formate wΣhlen.                     */
  291. /*  Der Cursor befindet sich danach auf */
  292. /*  Zeile 19, wo sich bei mir jeweils   */
  293. /*  die Betreff-Zeile befindet.         */
  294.  
  295. INSERT "\r\r\r\r\r\r\r\r"
  296. 'GOTO' 19
  297. '10MARK' down
  298. 'BCUT'
  299. 'FOS' 'z STANDARD1'
  300. 'FOS' 'a STANDARD1'
  301. 'BOTTOM'
  302.  
  303. return
  304.  
  305.