home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / bazy / adm / termintool / termintool.lha / WBStartup / ADMGebStart next >
Text File  |  1997-03-30  |  12KB  |  396 lines

  1. /* $VER: ADMGebStart V 2.1 (22.3.97) © Bernd Stange
  2.  
  3. Erinnert an fällige Geburtstage aus einer Geburtstagsliste
  4. im ASCII Format, welche durch ADMGebList erstellt wurde
  5.  
  6. ANEDERUNGEN:
  7.  
  8. 2.1 [jan] Waitforport ersetzt, da er bei manchen Installationen
  9.           evtl. nicht in Sys:rexxc liegt.
  10. 2.2 [jan] C:CED durch C:ED ersetzt!
  11.  
  12.  */
  13.  
  14. /****************************************************************************/
  15.  
  16. Textedit = 'C:ED'
  17. Textview = 'Multiview'
  18. SETTINGS = 'ENVARC:AddressMaster.cfg'
  19.  
  20. /****************************************************************************/
  21.  
  22. Ver = 'V 2.1'
  23.  
  24. IF EXISTS('ENVARC:ADMscPrefs') THEN PfadVariable = 'ENVARC:'
  25. ELSE
  26. PfadVariable = 'S:'
  27.  
  28. IF ~SHOW(LIBRARIES,'rexxsupport.library') THEN
  29.    IF ~ADDLIB('rexxsupport.library',0,-30,0) THEN
  30.       EXIT 10
  31. IF ~SHOW(LIBRARIES,'rexxreqtools.library') THEN
  32.    IF ~ADDLIB('rexxreqtools.library',0,-30,0) THEN
  33.       EXIT 10
  34. IF EXISTS(PfadVariable'ADMscPrefs/ADMcheck') THEN DO
  35.    CALL OPEN(check,PfadVariable'ADMscPrefs/ADMcheck',R)
  36.    contr  = READLn(check)
  37.    contrD = date()
  38.    CALL CLOSE(check)
  39.    IF contrD = contr THEN EXIT
  40.     ELSE DO
  41.       ADDRESS COMMAND
  42.       'Delete >NIL:' PfadVariable'ADMscPrefs/ADMcheck'
  43.     END
  44. END
  45.  
  46. IF ~EXISTS(PfadVariable'ADMscPrefs') THEN CALL Fehler1
  47. IF ~EXISTS(PfadVariable'ADMscPrefs/PfadADM') THEN CALL Fehler2
  48. IF ~EXISTS(PfadVariable'ADMscPrefs/PfadADMDaten') THEN CALL Fehler3
  49. IF ~EXISTS(PfadVariable'ADMscPrefs/PfadADMGebliste') THEN CALL Fehler4
  50. IF ~EXISTS(PfadVariable'ADMscPrefs/Vorwarnung') THEN CALL Fehler5
  51. IF ~EXISTS(PfadVariable'ADMscPrefs/VLOG') THEN CALL Fehler6
  52. IF ~EXISTS(PfadVariable'ADMscPrefs/CheckAktuell') THEN CALL Fehler8
  53. CALL OPEN(ADM,PfadVariable'ADMscPrefs/PfadADM',R)
  54. CALL OPEN(ADMDaten,PfadVariable'ADMscPrefs/PfadADMDaten',R)
  55. CALL OPEN(ADMGebliste,PfadVariable'ADMscPrefs/PfadADMGebliste',R)
  56. CALL OPEN(ADMVorwarnung,PfadVariable'ADMscPrefs/Vorwarnung',R)
  57. CALL OPEN(ADMVLog,PfadVariable'ADMscPrefs/VLOG',R)
  58. CALL OPEN(CheckAktuell,PfadVariable'ADMscPrefs/CheckAktuell',R)
  59. Adressmaster = ReadLn(ADM)
  60. ADMGebliste = ReadLn(ADMGebliste)
  61. ADMDaten = ReadLn(ADMDaten)
  62. Warnung = ReadLn(ADMVorwarnung)
  63. Voicepfad = Readln(ADMVLog)
  64. CheckAktuell = ReadLn(CheckAktuell)
  65. IF Adressmaster = 'nicht gesetzt' THEN CALL Fehler2
  66. IF ADMDaten = 'nicht gesetzt' THEN CALL Fehler3
  67. IF ADMGebliste = 'nicht gesetzt' THEN CALL Fehler4
  68. IF Warnung = 'nicht gesetzt' THEN CALL Fehler5
  69. IF Voicepfad = 'nicht gesetzt' THEN CALL Fehler6
  70. IF ~EXISTS(ADMGebliste) THEN CALL Fehler7
  71. IF CheckAktuell = 'nicht gesetzt' THEN CALL Fehler8
  72. IF Voicepfad = 'Nein' THEN Voicelog  = nein
  73. ELSE Voicelog  = ja
  74. CALL CLOSE(ADM)
  75. CALL CLOSE(ADMDaten)
  76. CALL CLOSE(ADMGebliste)
  77. CALL CLOSE(ADMVorwarnung)
  78. CALL CLOSE(ADMVLog)
  79. CALL CLOSE(CheckAktuell)
  80. IF CheckAktuell ~= 'NEIN' & CheckAktuell ~= 'nicht gesetzt' THEN CALL CheckAktuell
  81. Datum =  DATE()
  82. Tag = WORD(datum,1)
  83. Month = WORD(datum,2)
  84. Jahr = WORD(datum,3)
  85. Zeit  = DATE(I)
  86. Tagejahr = DATE(D, Zeit,I)
  87. CALL OPEN(sti,ADMGebliste,'r')
  88. Linie = READLN(sti)
  89.  
  90. /* Schleife beginnt */
  91. DO WHILE ~EOF(sti)
  92.    Datentag = WORD(linie,1)
  93.    Datenmonat = WORD(linie,2)
  94.    Datenjahr  = WORD(linie,3)
  95.    Datendatum = jahr || datenmonat || datentag
  96.    DatenTagejahr = DATE("d",Datendatum,"s")
  97.    Diff = DatenTagejahr - Tagejahr
  98.     /* Bedingung beginnt */
  99.     IF diff >= 0 & diff <= Warnung THEN DO
  100.       Name = UPPER(WORD(linie,6)) UPPER(WORD(linie,7))
  101.       TERMINTEXT = UPPER(SUBWORD(linie,6,WORDS(linie)-6))
  102.       Ter = WORD(linie,4)
  103.       IF Datenjahr = '????' THEN ALter = '?'
  104.       ELSE Alter = Jahr - Datenjahr
  105.       IF Linie = '' THEN Telefon = ' '
  106.       ELSE Telefon = WORD(linie,WORDS(linie))
  107.       SELECT
  108.         WHEN diff = 0 THEN Text = "HEUTE"
  109.         WHEN diff = 1 THEN Text = "MORGEN"
  110.         WHEN diff = 2 THEN Text = "ÜBERMORGEN"
  111.        OTHERWISE Text = "am" datentag || ". " || datenmonat'.'
  112.       END
  113.       Geschlecht = WORD(linie,5)
  114.       IF Geschlecht = 'H' THEN Anrede = "seinen"
  115.       IF Geschlecht = 'F' THEN Anrede = "ihren"
  116.       IF Geschlecht   = 'X' THEN DO
  117.        Anrede = "das"
  118.        Geburtstag = '. Jubiläum !'
  119.       END
  120.       ELSE Geburtstag = '. Geburtstag !'
  121.       Flags  = 'rtez_flags = ezreqf_centertext'
  122.  
  123.       ANFANG:
  124.       IF Ter = 'Termin:' THEN CALL Termin       /*Nach Termin suchen*/
  125.       ELSE CALL Geburtstag                      /*Nach Geburtstag suchen*/
  126.       IF Auswahl = 2 THEN CALL Verschieben      /*bei Auswahl "Verschieben"*/
  127.       IF Auswahl = 3 THEN CALL Liste            /*bei Auswahl "Liste"*/
  128.       IF Auswahl = 0 THEN DO                    /*letzte Button*/
  129.         IF Ter = 'Termin:' THEN CALL Loeschen   /*bei Auswahl Termin löschen*/
  130.         ELSE CALL Anwaehlen                     /*bei Auswahl Anwählen */
  131.       END                                       /*letzte Button ENDE*/
  132.  
  133.   END /* Vorwarnbedingung Ende */
  134.   Linie = READLN(sti)
  135. END /*Schleife Ende */
  136.  
  137. CALL Ende
  138.  
  139. /************************* Sprungadressen *********************************/
  140.  
  141.  
  142. /* Aufräumen*/
  143. ENDE:
  144. CALL CLOSE(STI)
  145. CALL CLOSE(sort1)
  146. CALL CLOSE(sort)
  147. IF EXISTS('T:.tmp1') THEN DO
  148.    ADDRESS COMMAND
  149.    'copy' 'T:.tmp2' ADMGebliste
  150.    "delete T:.tmp1 T:.tmp2 >NIL:"
  151.    CALL MachAktuell
  152. END
  153. IF EXISTS('T:.tmp1edit') THEN DO
  154.    ADDRESS COMMAND
  155.    'Copy' 'T:.tmp1edit' ADMGebliste
  156.    "delete T:.tmp1edit >NIL:"
  157.    CALL MachAktuell
  158. END
  159.  
  160. IF EXISTS('T:.tmp5') THEN DO
  161.    ADDRESS COMMAND
  162.    "delete T:.tmp5 T:.tmp6 >NIL:"
  163. END
  164. EXIT
  165.  
  166. CheckAktuell:
  167. ADDRESS COMMAND
  168. 'list' ADMDaten 'LFormat="%d %t" >t:dat'
  169. CALL OPEN(datum,'t:dat',R)
  170. 'list' ADMGebliste 'LFormat="%d %t" >t:dat1'
  171. CALL OPEN(datum1,'t:dat1',R)
  172. Da = READLN(datum)
  173. Da1 = READLN(datum1)
  174. CALL CLOSE(datum)
  175. CALL CLOSE(datum1)
  176. ADDRESS COMMAND
  177. 'Delete t:dat t:dat1 >NIL:'
  178. IF DA ~= DA1 THEN DO
  179.     Flags  = 'rtez_flags = ezreqf_centertext'
  180.     Titel  = Ver 'DatumCheck:'
  181.     Gadget  = '_Ja|_Nein, jetzt nicht'
  182.     Reqtext = 'A C H T U N G:    Die Geburtstagsliste' ||'0A'x||,
  183.     '"' || ADMGebliste ||  '"' ,
  184.     ||'0A'x|| 'scheint nicht aktuell zu sein !',
  185.     ||'0A'x|| 'Soll ich die Liste gleich erneuern ?'
  186.     Auswahl = rtezrequest(Reqtext,Gadget,Titel,Flags)
  187.     IF Auswahl = 1 THEN DO
  188.        ADDRESS COMMAND
  189.        'SYS:Rexxc/rx' CheckAktuell
  190.     END
  191. END
  192. RETURN
  193.  
  194. /* Das Datum vom ADM-Datensatz     */
  195. /* dem Alter der Gebliste anpassen */
  196. MachAktuell:
  197. ADDRESS COMMAND
  198. 'list' ADMGebliste 'LFormat="%d %t" >t:dat'
  199. CALL OPEN(datum,'t:dat',R)
  200. Dat = READLN(datum)
  201. CALL CLOSE(datum)
  202. ADDRESS COMMAND
  203. 'DELETE t:dat >NIL:'
  204. 'c:setdate' ADMDaten Dat
  205. RETURN
  206.  
  207.  
  208. /*Nach Termin suchen*/
  209. Termin:
  210. Reqtext  = 'Achtung Termin :'||'0A'x|| '' ||'0A'x|| '==> ' || Text '!' || ' <==' ||'0A'x||''||'0A'x|| TERMINTEXT
  211. Gadget   = '_OK|_Verschieben|_Liste|_Nachricht löschen'
  212. Titel    = Ver 'Terminhinweis :'    datum
  213. Auswahl = rtezrequest(Reqtext,Gadget,Titel,Flags)
  214. RETURN
  215.  
  216. /*Nach Geburtstag suchen*/
  217. Geburtstag:
  218. Titel  = Ver 'Geburtstagshinweis :'    datum
  219. Gadget = '_OK|_Verschieben|_Liste|_Anwählen'
  220. ReqText = Name ||'0A'x|| 'hat' text Anrede Alter || Geburtstag ||'0A'x|| 'Tel.:' Telefon
  221. Auswahl = rtezrequest(Reqtext,Gadget,Titel,Flags)
  222. Return
  223.  
  224. /*bei Auswahl "Verschieben"*/
  225. Verschieben:
  226. ADDRESS COMMAND
  227. 'echo >' || PfadVariable || 'ADMscPrefs/ADMcheck' datum
  228. CALL ENDE
  229. RETURN
  230.  
  231. /*bei Auswahl "Liste"*/
  232. Liste:
  233. sortwahl = rtezrequest('Die Geburtstagsliste nach Datum oder Namen' ||'0A'x|| ,
  234.                        'sortieren und dann anzeigen lassen ?' ||'0A'x||'0A'x||,
  235.                        'Oder Editieren ?',
  236.                         ,'nach _Datum|nach _Namen|_Editieren|_Abbruch','Anfrage:',Flags)
  237. CALL OPEN(SORTliste,ADMGebliste,R)
  238. CALL OPEN(sort5,'t:.tmp5',w)
  239. zeile = READLN(SORTliste)
  240. DO WHILE ~EOF(SORTliste)
  241.     Datentag = WORD(zeile,1)
  242.     Datenmonat = WORD(zeile,2)
  243.     Datenjahr  = WORD(zeile,3)
  244.     VorName = WORD(zeile,6)
  245.     Name =WORD(zeile,7)
  246.     Ter = WORD(zeile,4)
  247.     Telefon = WORD(zeile,WORDS(zeile))
  248.     TERMINTEXT = SUBWORD(linie,6,WORDS(linie)-6)
  249.     Data = Datentag || '.' || Datenmonat  || '.' || Datenjahr
  250.     IF sortwahl = '2' THEN DO
  251.         Sortzeile = name || ',' vorname
  252.         Sortzeile = INSERT(Data,Sortzeile,28)
  253.         Sortzeile = INSERT('('Ter')',Sortzeile,40)
  254.         Sortzeile = INSERT(Telefon,Sortzeile,46)
  255.         IF WORD(zeile,4) ~= 'Termin:' THEN CALL WRITELN(sort5,Sortzeile)
  256.     END
  257.     IF sortwahl = '1' THEN DO
  258.          Sortzeile = data vorname name
  259.          Sortzeile = INSERT('('Ter')',Sortzeile,34)
  260.          Sortzeile = INSERT(Telefon,Sortzeile,41)
  261.          IF WORD(zeile,4) ~= 'Termin:' THEN CALL WRITELN(sort5,Sortzeile)
  262.     END
  263.  
  264.     zeile = READLN(SORTliste)
  265. END
  266. CALL CLOSE(sort5)
  267. CALL CLOSE(SORTliste)
  268. IF sortwahl = '2' THEN DO
  269.     ADDRESS COMMAND
  270.     'sort t:.tmp5 t:.tmp6'
  271.     Textview 't:.tmp6'
  272. CALL LISTE
  273. END
  274. IF sortwahl = '1' THEN DO
  275.     ADDRESS COMMAND
  276.     Textview 't:.tmp5'
  277. CALL LISTE
  278. END
  279. IF sortwahl = '3' THEN DO
  280.   IF EXISTS('T:.tmp1edit') THEN DO
  281.      ADDRESS COMMAND
  282.      Textedit 'T:.tmp1edit'
  283.   END
  284.   ELSE DO
  285.      ADDRESS COMMAND
  286.      'Copy' ADMGebliste 'T:.tmp1edit'
  287.      Textedit 'T:.tmp1edit'
  288.   END
  289.   CALL LISTE
  290. END
  291.  
  292. RETURN
  293.  
  294. /*bei Auswahl Termin löschen*/
  295. loeschen:
  296. ADDRESS COMMAND
  297. 'Copy' ADMGebliste 'T:.tmp1'
  298. 'Copy' ADMGebliste ADMGebliste'.bak'
  299. CAll OPEN(sort,'T:.tmp1',r)
  300. CAll OPEN(sort1,'T:.tmp2',w)
  301. DO while ~EOF(sort)
  302.    Sortlinie = Readln(sort)
  303.    IF Sortlinie ~= Linie THEN DO
  304.       IF Sortlinie ~= '' THEN CALL WRITELN(sort1,Sortlinie)
  305.    END
  306. END
  307. CALL MachAktuell
  308. RETURN
  309.  
  310.  
  311. /*bei Auswahl Anwählen */
  312. Anwaehlen:
  313. IF ~SHOW('PORTS','ADM.1') THEN DO
  314.     IF EXISTS('c:wbrun') THEN DO
  315.       ADDRESS COMMAND
  316.       'WBrun >NIL:' AdressMaster
  317.     END
  318.     ELSE DO
  319.     PRAGMA(STACK,20000)
  320.     ADDRESS COMMAND
  321.     'run >NIL:' AdressMaster 'FROM' ADMDaten 'SETTINGS=' || SETTINGS
  322.     END
  323.  
  324.     /* Warte 8 Sekunden auf den Start von ADM*/
  325.  
  326.     i = 0
  327.     DO WHILE ~SHOW(PORTS,'ADM.1') & i<8
  328.        delay(50)
  329.        i = i + 1
  330.     END
  331.     IF i=10 THEN DO
  332.        SAY "Kann AddressMaster nicht starten!"
  333.        QUIT
  334.     END
  335.  
  336. END
  337. ADDRESS 'ADM.1'
  338. OPTIONS RESULTS
  339. ACTIVATEFIRST
  340. DO UNTIL Nm = Telefon
  341.      GETADDRESS ADM
  342.      Nm = COMPRESS(ADM.TELEPHONE)
  343.      IF NM = Telefon THEN DO
  344.         IF Voicelog = 'JA' THEN DO
  345.            cmd = 'RUN >NIL:' Voicepfad '"' || ADM.FULLNAME || '"' '"' || ADM.telephone || '"'
  346.            ADDRESS COMMAND CMD
  347.         END
  348.         ELSE DO
  349.            ADDRESS 'ADM.1'
  350.            DIAL
  351.         END
  352.      END
  353.      ACTIVATENEXT
  354. END
  355. RETURN
  356.  
  357.  
  358.  
  359. Fehler1:
  360. Reqtext = 'Achtung Fehler1:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs alle notwendigen Variablen einstellen !'
  361. CALL Requester
  362.  
  363. Fehler2:
  364. Reqtext = 'Achtung Fehler2:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs den Pfad vom AdressMaster einstellen !'
  365. CALL Requester
  366.  
  367. Fehler3:
  368. Reqtext = 'Achtung Fehler3:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs den Pfad des ADMDatensatzes' ||'0A'x|| 'von ADM anwählen !'
  369. CALL Requester
  370.  
  371. Fehler4:
  372. Reqtext = 'Achtung Fehler4:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs den Pfad für die Gebdatei anwählen ! '
  373. CALL Requester
  374. Fehler5:
  375. Reqtext = 'Achtung Fehler5:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs die Anzahl der Vorwarntage einstellen !'
  376. CALL Requester
  377.  
  378. Fehler6:
  379. Reqtext = 'Achtung Fehler6:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs die Variable ====> VLog setzen !'
  380. CALL Requester
  381.  
  382. Fehler7:
  383. Reqtext = 'Achtung Fehler7:'||'0A'x|| '' ||'0A'x|| 'Es existiert keine ADMGebliste !' ||'0A'x|| 'Bitte erst mit dem Script ADMGebList.adm erstellen !'
  384. CALL Requester
  385.  
  386. Fehler8:
  387. Reqtext = 'Achtung Fehler8:'||'0A'x|| '' ||'0A'x|| 'Bitte erst mit ADMscPrefs die Variable Checkaktuell setzen !'
  388. CALL Requester
  389.  
  390. Requester:
  391. Flags  = 'rtez_flags = ezreqf_centertext'
  392. Titel  = Ver 'Fehlermelung:'
  393. Gadget  = '_OK'
  394. Auswahl = rtezrequest(Reqtext,Gadget,Titel,Flags)
  395. EXIT
  396.