home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / unisch1a.zip / UNISCHED.GER < prev    next >
Text File  |  1999-06-25  |  106KB  |  2,216 lines

  1.  
  2.                 U N I S C H E D   -   The Universal Scheduler
  3.                 ---------------------------------------------
  4.                                 Version 1.0a GA
  5.                           (C) 1996-99 by Tobias Ernst
  6.  
  7.             (An English Documentation can be found in UNISCHED.ENG)
  8.  
  9.  
  10. INHALT
  11. ------
  12.  
  13. 1.     Was ist Unisched?
  14.  
  15. 2.     Wozu brauche ich Unisched?
  16.  
  17. 3.     Unisched Schritt für Schritt:
  18. 3.1    Vor der Installation
  19. 3.1.1  Die TZ-Umgebungsvariable
  20. 3.1.2  Richtig entpacken
  21. 3.2    Beschreibung der Konfigurationsdatei
  22. 3.3    Events und Actions
  23. 3.3.1  Aktionen
  24. 3.3.2  Rekursionen
  25. 3.3.3  Events
  26. 3.4    Aufruf und Bedienung
  27.  
  28. 4.     Unisched für Fortgeschrittene
  29. 4.1    Online-Tossing
  30. 4.2    Logausgaben fallweise unterdrücken
  31. 4.3    Auf Semaphoren mit Zeitverzögerung reagieren
  32.  
  33.  
  34. 5.     Shareware / Lizenz
  35.  
  36. 6.     Kontakt und Support
  37.  
  38.  
  39. 1. WAS IST UNISCHED?
  40. --------------------
  41.  
  42. Unisched ist ein Scheduler, der speziell auf die Bedürfnisse eines Nodesystems
  43. im Fidonet zugeschnitten ist.  Kurz gesagt:  Unisched reagiert auf  Ereignisse
  44. mit Aktionen.  Als Ereignisse kommen in Betracht:
  45.  
  46. - Termingesteuerte Ereignisse (z.B. täglich um 15:00, am 1. des Monats ab
  47.   10:00, alle 30 Minuten, ...)
  48. - Auftreten von Semaphore-Dateien (von anderen Programmen erstellt)
  49. - Maileingang im Mailer-Inbound
  50. - Drücken von Funktionstasten
  51.  
  52. Als Aktionen sind möglich:
  53.  
  54. - Ausführen von externen Programmen, Batche-Files, Skripten, WPS-Objekten
  55. - Sich mit Errorlevel beenden
  56. - Manipulationen im Binkley-Outbound (Poll generieren, Flavours ändern, ...)
  57. - Diverse (z.B. WAV-Files abspielen, Semaphoren erzeugen, Dateien löschen, ..)
  58.  
  59. Unisched  ist  an  sich ein sehr simples Programm, dabei aber gerade in seiner
  60. Einfachheit  sehr  mächtig.   Deshalb  lege  ich  es  jedem  nahe,  diese Doku
  61. sorgfältig zu lesen (zumindest aber Abschnitt 3.3), denn  nur,  wenn  man  das
  62. Prinzip von Unisched verstanden hat, kann man seine Genialität erkennen.  :-)
  63.  
  64. Unisched  existiert  als  DOS-Executable (getestet unter DOS, DESQview, Win95,
  65. Windows NT, OS/2  MDOS)  und  natürlich  als OS/2-Version (UNISCHE2.EXE).  Bei
  66. Verwendung  der  DOS-Version  ***MUSS***  Share.Exe  oder  ein  vergleichbarer
  67. Support für File-Locking geladen sein!
  68.  
  69.  
  70. 2. WOZU BRAUCHE ICH UNISCHED?
  71. -----------------------------
  72.  
  73. Die Einsatzgebiete von  Unisched  sind  sicher  vielfältig.   Ich habe es aber
  74. geschrieben als Frontend für den Tossertask eines Fido-Nodes und  hier  liegen
  75. seine  Stärken.   Statt in den Mailer-Batches rumzufummeln, läuft mit Unisched
  76. ein separater Tossertask (sei das  nun  ein Task unter einem Multitasker, oder
  77. ein extra Rechner in einem Netzwerk).  Unisched ist die ganze Zeit aktiv.   Zu
  78. bestimmten  Uhrzeiten  startet es den Tosser, um Mail zu exportieren.  Wenn im
  79. Mailer Mail empfangen  wurde,  legt  der  Mailer  eine Sempahore-Datei an, die
  80. Unisched findet und daraufhin den Tosser anweist,  die  Mail  zu  importieren.
  81. Wenn  man  von Hand Mail exportieren will, drückt man einfach in Unisched eine
  82. Funktionstaste.  Außerdem weist Unisched den  Mailer zu gegebener Zeit an, den
  83. Uplink anzrufuen.  Und morgens um sieben startet  Unisched  ein  Weck-Programm
  84. ... und und und ...
  85.  
  86. Der Vorteil dieser Vorgehensweise ist  klar  ersichtlich:  Wenn man den Tosser
  87. aus der Mailer-Batch  heraus  startet,  besteht  die  Gefahr,  daß  bei  einem
  88. Multiline-System  beide  Mailer gleichzeitig tossen.  Um das zu umgehen, müßte
  89. man aufwendige Semaphore-Konstrukte bauen.   Und  selbst  wenn man diese Hürde
  90. umschifft hat, ist da immer noch ein Problem:  Nur, weil man z.B. um halb neun
  91. Mail exportiern möchte, muß man (wenn man Unisched nicht hat)  im  Mailer  ein
  92. Event  definieren,  was  unweigerlich  nach  sich zieht, daß um halb neun alle
  93. Online-User aus  der  Box  geschmissen  werden.   Und  so  fort.  Mit Unisched
  94. dagegen ist getrennt, was getrennt gehört:  Der Mailer bedient die Modems, und
  95. Unisched kümmert sich um den Rest.  Der Mailer hat dann i.d.R. nur  noch  zwei
  96. Events,  nämlich  ZMH  und  der  Rest, so daß er sich voll und ganz dem Mailen
  97. widmen kann.  ;-)
  98.  
  99.  
  100. 3. UNISCHED SCHRITT FUER SCHRITT
  101. --------------------------------
  102.  
  103.   3.1. VOR DER INSTALLATION
  104.   -------------------------
  105.  
  106.     3.1.1 Die TZ-Umgebungsvariable
  107.     ------------------------------
  108.  
  109.     Unisched  wertet  die  TZ-Umgebungsvariable  aus.   Es ist nicht unbedingt
  110.     notwendig, diese  zu  setzen,  verhindert  aber  unschöne  Effekte bei der
  111.     Umstellung Sommer->Winterzeit und umgekehrt.
  112.  
  113.     Um an dieser Stelle nicht zu langweilen:  Es ist nicht intuitiv  (intuitiv
  114.     würde  ich  für Deutschland GMT+1 setzen, aber das stimmt überhaupt nicht)
  115.     und für einen Nicht-Programmierer auch absolut nicht-trivial, wie sich die
  116.     TZ-Variable zusammensetzt.   Daher  gebe  ich  hier  einfach die richtigen
  117.     Werte an:
  118.  
  119.     Mitteleuropäische Winterzeit: SET TZ=MEZ-1
  120.     Mitteleuropäische Sommerzeit: SET TZ=MEZ-2MSZ
  121.  
  122.     Viele anderen Programe werten diese Variable ebenfalls  aus  (insbesondere
  123.     der  Tosser  beim  Erstellen  der  VIA-Zeilen), es ist also auf jeden Fall
  124.     ratsam, diese Werte so in  die  Autoexec.Bat  (bei OS/2 zusätzlich auch in
  125.     die Config.Sys, aber auch in die  Auotexec.Bat  im  Boot-Drive,  wenn  das
  126.     ganze auch für DOS-Sessions gelten soll!) zu übernehmen und erstmal neu zu
  127.     booten.
  128.  
  129.     Wenn  man  dann die Zeitumstellung (Uhr vor- oder zurückstellen) vornimmt,
  130.     sollte man erst Unisched  runterfahren,  dann  die TZ-Variable ändern, und
  131.     dann Unisched wieder hochfahren.  Anderenfalls werden  periodische  Events
  132.     mehrfach ausgeführt.  (Damit kann man natürlich auch leben, z.B., wenn man
  133.     eine Funkuhr hat ...).
  134.  
  135.     Noch eine Anmerkung:  Es kursiert für OS/2 ein Programm, daß  TZ-Variablen
  136.     ausrechnen  zu können glaubt.  Dieses generiert unglaublich lange Strings,
  137.     die dazu führen sollen, daß man sowohl zur Sommer- als auch zur Winterzeit
  138.     die gleichen Werte benutzen kann,  also  nicht von Hand umstellen braucht.
  139.     Der Nachteil an diesem Programm ist, daß dieses  Format  der  TZ-Variablen
  140.     nur  von  mit  IBM-Compilern  oder  mit  EMX  GCC  kompilierten Programmen
  141.     verstanden werden.  Programme, die  mit  anderen Compilern erstellt wurden
  142.     (wie insbesondere Unisched, bei dem es noch nicht  so  schlimm  ist,  aber
  143.     auch  z.B.  Fastecho), können diese "langen" TZ-Variablen nicht auswerten.
  144.     Deshalb empfehle ich, die  von  mir  oben angegebenen Strings zu verwenden
  145.     und es in Kauf zu nehmen, daß man halt zweimal im Jahr umstellen muß.
  146.  
  147.  
  148.  
  149.     3.1.2 Richtig entpacken
  150.     -----------------------
  151.  
  152.     Das  originale  Distributionsarchiv  von  Unisched  ist  mit  ZIP  gepackt
  153.     OS/2-User  entpacken  die  Datei  bitte unbedingt mit der OS/2-Version von
  154.     INFOZIP oder  PKZIP.   UNISCHE2.EXE  enthält  nämlich erweiterte Attribute
  155.     (das Icon), die der DOS-PKUNZIP nicht korrekt umsetzen kann.
  156.  
  157.     (Wens interessiert, mit RAR habe ich abgeschlossen.  Ich  hatte  an  einer
  158.     Sammelregistration der DS teilgenommen und auf dem Formular angegeben, daß
  159.     ich  DOS-  und  OS/2-Versionen  benötige.  Statt daß man mich nun davon in
  160.     Kenntnis setze, daß ich für  den Sammelregistrierungspreis nur eine Lizenz
  161.     für ein BS erhalten kann und zu fragen, welches ich denn gern hätte,  habe
  162.     ich  schlicht  nur  die  DOS-Version erhalten.  Man war auch nicht bereit,
  163.     diesen Key gegen einen  OS/2-Key  umzutauschen.  Und nochmal Geld ausgeben
  164.     tue ich bei so einem "Service" sicher nicht.)
  165.  
  166.     Wenn Ihr eine umgepackte Version ohne erweiterte Attribute erhalten  habt,
  167.     müßt  Ihr  entweder  ohne das Icon leben, oder das korrekte Archiv bei mir
  168.     requesten, oder (für  Fortgeschrittene),  das  Icon per Ressourcenkompiler
  169.     selbst  wieder  an  die  EXE-Datei  linken  (es  ist  auch   separat   als
  170.     UNISCHED.ICO  beigefügt).   Am  Besten aber macht Ihr Euren Uplinks Dampf.
  171.     Umpackerei ist IMO eines der größten Übel in der Filenetz-Welt.
  172.  
  173.  
  174.  
  175.   3.2. BESCHREIBUNG DER KONFIGURATIONSDATEI
  176.   -----------------------------------------
  177.  
  178.   Vorab:   In  der  Regel  (...)  ist  Unisched   bei   der   Auswertung   der
  179.   Konfigurationsdatei nicht casesensitiv (d.h., Groß- oder Kleinschreibung ist
  180.   egal),  auch  bei  Aktionsnamen  nicht, aber es ist trotzdem eine gute Idee,
  181.   sich eine konsistente Schreibweise anzugewöhnen.
  182.  
  183.   Bevor wir uns nun dem eigentlichen Prinzip von EREIGNIS und AKTION zuwenden,
  184.   muß UNISCHED erst mal  vorkonfiguriert  werden  (Pfade  und der ganze Kram).
  185.   Deshalb folgt im Anschluß eine Beschreibung aller  gültigen  Schlüsselwörter
  186.   in  der  Datei  UNISCHED.CFG.   Falls  Du  zu  den Personen gehörst, die die
  187.   magische  Gabe  haben,  aus  kryptischen  Schlüsselwörtern  instantan  deren
  188.   Bedeutung zu erschließen, kannst Du diesen Abschnitt 3.2 überspringen.  Lies
  189.   aber ab 3.3 auf jeden Fall wieder mit, da wirds wichtig.
  190.  
  191.   Genaugenommen  besteht  die  UNISCHED.CFG  aus  zwei  Teilen.   Zunächst die
  192.   allgemeinen Einstellungen, die im Anschluß beschrieben werden, und dann  die
  193.   Event-Action-Config,  die  in Kapitel 3.3 beschrieben wird.  Die Reihenfolge
  194.   der  zugehörigen  Kommandos  in   der  Config-Datei  ist  übrigens  beliebig
  195.   (Ausnahme:      SemaDir).
  196.  
  197.   In der  Konfigurationsdatei  können  %UMGEBUNGSVARIABLEN%  verwendet werden.
  198.   Einzelne  %-Zeichen  lassen  sich  im  Zweifelsfalle  durch  ein   doppeltes
  199.   %-Zeichen  (also  %%)  erzwingen.  Ein Semikolon in der Konfigurationsdatei,
  200.   das entweder in  der  ersten  Spalte  stehen  oder  aber dem ein Leerzeichen
  201.   vorausgehen muß, leitet einen Kommentar  ein  (d.h.,  einen  Abschnitt,  der
  202.   nicht  beachtet  wird), der bis zum Ende der jeweiligen Zeile dauert.  Falls
  203.   ein Semikolon tatsächlich einmal  irgendwo nicht als Kommentar interpretiert
  204.   werden soll/muß, und es nicht möglich ist, dem Semikolon etwas  anderes  als
  205.   ein   Leerzeichen   vorangehen   zu   lassen,   so  muß  man  es  mit  einer
  206.   Umgebugnsvariablen emulieren:  Vor  dem  Start  von  Unisched den Befehl SET
  207.   SEMIKOLON=; eingeben und  dann  in  der  Konfigurationsdatei  dort,  wo  das
  208.   Semikolon gebraucht wird, stattdessen %SEMIKOLON% schreiben.
  209.  
  210.   Nun zu den eigentlichen  Schlüsselwörtern.   Im folgenden schließen [ eckige
  211.   Klammern ] optionale Parameter ein, das | Pipe-Zeichen trennt Parameter, die
  212.   sich   gegenseitig   ausschließen,   und   <spitze   Klammern>   umschließen
  213.   Platzhalter, an deren Stelle passende Werte eingesetzt werden müssen.   Alle
  214.   anderen Zeichen sind so wie sind anzugeben.
  215.  
  216.  
  217.    Alivetime = <minutes>
  218.    ---------------------
  219.  
  220.    Unisched legt beim Start eine Datei "UNISCHED.BSY" an (Busy-Semaphore), die
  221.    er  erst  bei  Beendigung  wieder  löscht.   Dieser Parameter gibt an, alle
  222.    wieviel Minuten  der  Timestamp  diese  Semaphore  auf  die  neuste Uhrzeit
  223.    gesetzt werden soll.  Wird diese Zeile gar nicht in der  Config  angegeben,
  224.    wird  die  Busy-Semaphore  nur  bei  Programmneustart  auf neuere Uhrzeiten
  225.    gesetzt.
  226.  
  227.  
  228.  
  229.    Autofail = On | Off
  230.    -------------------
  231.  
  232.    Wenn kritische  Fehler  bei  der  Ausführung  von  Unisched  auftreten (was
  233.    durchaus wahrscheinlich  ist,  z.B.  wenn  Unisched  versucht,  nach  einer
  234.    Semaphore  zu  testen,  die noch nicht lesbar ist), erscheint normalerweise
  235.    eine Fehler-Abfrage, unter  DOS  das  obligatorische "Retry, Abort, Fail?",
  236.    unter OS/2 eine Fehler-Dialogox.   Das  ist  im  unbeaufsichtigten  Betrieb
  237.    natürlich unerwünscht, weil  dadurch  das  ganze  System  zum Stehen kommt.
  238.    Unisched installiert deswegen normalerweise eine  Fehlerbehandlungsroutine,
  239.    die diese Fehlermeldungen unterdrückt.
  240.  
  241.    Falls diese Fehlerbehandlungsroutine (int24 unter DOS, DosError unter OS/2)
  242.    zu  Problemen  führrt, kann man sie mit "Autofail = Off" deaktivieren.  Das
  243.    sollte normalerweise jedoch nicht notwendig sein.
  244.  
  245.    Unter OS/2 gilt die Fehlerbehandlungsroutine nur für Unisched selbst, nicht
  246.    aber für seine Tochterprozesse - falls z.B. beim Tossen ein Fehler auftritt
  247.    und  der  Tosser  keine  eigene  Fehlerbehandlung  hat,  gibts  wieder  die
  248.    Dialogbox.  Unter OS/2 sollte  man  daher  immer auch "AUTOFAIL=YES" in die
  249.    CONFIG.SYS schreiben.
  250.  
  251.    Achtung:  In den Betas von Unisched war Autofail defaultmäßig ausgeschaltet
  252.    -  ab  Version  1.0  (Release)  jedoch  ist  Autofail  jetzt  standardmäßig
  253.    eingeschaltet!
  254.  
  255.    Bsp:
  256.    Autofail = On
  257.  
  258.  
  259.  
  260.    Clock = On | Off
  261.    ----------------
  262.  
  263.    Gibt  an,  ob in der Titelzeile eine Uhr eingeblendet werden soll.  Default
  264.    ist On, aber Off spart ein kleines bißchen Rechenzeit ...
  265.  
  266.    Bsp.:
  267.    Clock = On
  268.  
  269.  
  270.  
  271.    DiskLog = <Loglevels>
  272.    ---------------------
  273.  
  274.    Gibt an, welche Arten  von  Meldungen  alle ins Log-File geschrieben werden
  275.    sollen.  Es existieren folgende Loglevel:
  276.  
  277.    !   Statusmeldungen ("starting", "shutting down", nicht abschaltbar)
  278.    ?   Fehlermeldungen und Warnungen (nicht abschaltbar)
  279.    *   Semaphore-Events           \
  280.    .   Funktionstasten-Events      \ Das sind alles Auslöser für Aktionen
  281.    ~   Periodische Events          / von Unisched
  282.    #   Statische Events           /
  283.    +   Aktionen (das, was von Events ausgelöst wird)
  284.    -   Ausgewählte Wide-Beta Debug-Meldungen
  285.    p   Meldungen des Parsers bei der Abarbeitung von Aktionsdefinitionen
  286.    _   Eine   Leerzeile   nach   einem    Event-Aktion-Block    (erhöht    die
  287.        Übersichtlichkeit,  wenn  man  sehr  viel Loggen läßt - ich empfehle, _
  288.        immer dann zu verwenden, wenn man auch p verwendet).
  289.  
  290.    Wenn man die Chance,  daß  ich  auf  Bugreports reagiere, drastisch erhöhen
  291.    will, sollte man  das  mir  übersandte  Logfile  MINDESTENS  mit  folgendem
  292.    DiskLogLevel erstellen:
  293.  
  294.    DiskLog = !?*.~#+-
  295.  
  296.    Während der Wide-Beta Phase sollte man generell nicht weniger nehmen.
  297.  
  298.  
  299.  
  300.    ExcessiveSlicing = <zahlenwert> | Yes | No
  301.    ------------------------------------------
  302.  
  303.    Dieser    Schalter    betrifft    die    Abgabe    von    Zeitscheiben   in
  304.    Multitaskingumgebungen.  Wird er auf einen Zahlenwert ungleich Null gesetzt
  305.    (Yes entspricht 5,  No  entspricht  0),  werden deutlich mehr Zeitschreiben
  306.    freigegeben.  Du mußt selbst ausprobieren, ob Du diesen Schalter  brauchst.
  307.    Generell  gilt:   Wenn  Dir  die Systemlast von Unisched zu hoch erscheint,
  308.    solltest Du ihn soweit hochsetzen, daß die Uhr rechts oben gerade noch jede
  309.    Sekunde einzeln auflöst (etwas ruckelig  darfs  sein, aber es sollten keine
  310.    Sekunden übersprungen werden).
  311.  
  312.    Hier ein paar Erfahrungswerte, mit denen Unisched akzeptabel arbeitet:
  313.  
  314.      OS/2 nativ:    0
  315.      OS/2 DOS-Box:  1 oder 0
  316.      Windows NT:    20
  317.      Windows 95:    Mit 0 läuft es akzeptabel, weitere Tests liegen nicht vor.
  318.  
  319.  
  320.    FlushLog = Yes | No
  321.    -------------------
  322.  
  323.    Wenn  FlushLog  auf  Yes  gesetzt  ist  (das  ist  die Defaulteinstellung),
  324.    schreibt Unisched sein Logfile auf  die  Platte (er erzwingt das selbst bei
  325.    WB Caching, indem er das File schließt und wieder öffnet), sobald er nichts
  326.    besseres  zu  tun  hat.   Der  Vorteil  ist,  daß  dann  selbst  bei  einem
  327.    Systemabsturz oder anderem unnormalen Programmende noch  bis  zuletzt  alle
  328.    Logfiledaten  erhalten  bleiben;  außerdem  zeigt  ein  Logfileviewer  auch
  329.    während Unisched noch läuft immer schon die aktuellsten Logfileeinträge.
  330.  
  331.    Falls dieses Verhalten nicht erwünscht ist (mir fallen dafür freilich keine
  332.    Gründe ein), kann man es  mit  "FlushLog  =  No" abschalten - dann wird das
  333.    Logfile nur sehr selten auf die Platte geschrieben  bzw.  spätestens,  wenn
  334.    Unisched beendet wird.
  335.  
  336.  
  337.    IgnoreOldBusyFlag = <minutes>
  338.    -----------------------------
  339.  
  340.    Im Binkley-Outbound kann für jeden  Node  neben Flowfiles, die Angaben über
  341.    die zu versendenden Dateien enthalten, auch ein .BSY-File  vorhanden  sein.
  342.    Dieses  dient  der  Serialisierung der Zugriffe verschiedener Programme auf
  343.    den gemeinsamen Outbound:  Während  ein  .BSY-File vorhanden ist, darf kein
  344.    anderers  Programm  außer  dem  Ersteller  des  .BSY-Files  Änderungen   am
  345.    Binkley-Outbound vornehmen.
  346.  
  347.    Unisched  hält  sich an dieses Konzept und ist dabei besonders intelligent:
  348.    Wenn er ein .BSY-Flag findet, unterläßt er nicht einfach die Aktion, die er
  349.    eigentlich vorhatte, sondern prüft  in periodischen Abständen später wieder
  350.    nach, ob das .BSY-Flag nun verschwunden ist, und holt, sobald das der  Fall
  351.    ist, seine Änderungen nach.
  352.  
  353.    Nun  kann  es  passieren, daß sich im Outbound .BSY-Flags befinden, die von
  354.    Programmen, die während der  Arbeit  gewaltsam beendet wurden (Abschuß oder
  355.    Absturz ...), nicht mehr gelöscht werden konnten.  In so einem  Fall  würde
  356.    der  Tosser  keine  Mail  mehr für diesen Node tossen, Unisched würde keine
  357.    Pollflags für diesen Node mehr anlegen,  der Mailer würde diesen Node nicht
  358.    mehr anrufen, und effektiv wäre der Link mit diesem Node also tot, bis  der
  359.    Sysop von Hand eingreif.  Dazu muß er das natürlich erst einmal merken ...
  360.  
  361.    Deshalb geht Unisched, wenn er ein Pollflag anlegen oder eine andere Aktion
  362.    im  Binkleyoutbound  durchführen  will,  davon  aus, daß ein Busy-Flag, das
  363.    älter als 3 Stunden ist,  nur  von  einem Systemabsturz herrühren kann, und
  364.    ignoriert bzw. löscht ein solches Flag.
  365.  
  366.    Falls jemand der Defaultwert von 3 Stunden zu kurz oder zu lang  ist,  kann
  367.    er diesen Wert mittles "IgnoreOldBusyFlag" ändern.  Ein Wert von 0 schaltet
  368.    dabei  das Feature ganz ab (in dem Falle wird grundsätzlich jedes .BSY-Flag
  369.    "ernstgenommen" und  gewartet,  bis  es  tatsächlich  verschwindet); andere
  370.    Werte geben das maximal gültige Alter des .BSY-Flags  in  Minuten  an  (der
  371.    Defaultwert ist also 180).
  372.  
  373.    IgnoreOldBusyFlag = 90
  374.  
  375.  
  376.  
  377.    IgnoreOldBusySem = <minutes>
  378.    ----------------------------
  379.  
  380.    Wenn Unisched beim Starten die  Datei UNISCHED.BSY vorfindet, geht er davon
  381.    aus, daß bereits ein  anderer  Unisched-Task  gestartet  ist,  und  startet
  382.    selbst  nicht.   Wird  "IgnoreOldBusySem" verwendet, so prüft Unisched aber
  383.    zuvor, wie alte die  Busy-Semaphore  ist,  und startet ggf. trotzdem, falls
  384.    sie nämlich älter ist als die angegebene Anzahl von Minuten.  (In dem  Fall
  385.    geht  er  davon  aus,  daß  die Busy-Semaphore von einem Systemabsturz o.ä.
  386.    übrig  geblieben  ist).   Wenn  man  IgnoreOldBusySem  verwendet,  muß  man
  387.    natürlich auch AliveTime (s.o.)  verwenden, sonst könnte die Busy-Semaphore
  388.    ein sehr altes Timestamp tragen, obwohl der zugehörige Task noch arbeitet.
  389.  
  390.    Die Anforderungen an die Zahlenwerte  für  AliveTime  und  IgnoreOldBusySem
  391.    hängen  von  der  Konfiguration von Unisched ab.  Wenn man (z.B. unter OS/2
  392.    mit EXEC START /C /MIN BLAHBLUBB.CMD) alle externen Programme, die Unisched
  393.    startet,  in  einem  separaten  Hintergrundtask  startet,  kann  man  davon
  394.    ausgehen, daß Unisched nie  lange  daran  gehindert wird, den Timestamp der
  395.    Busy-Semaphore zu aktualisieren, und man kann kleine Zahlenwerte nehmen:
  396.  
  397.    AliveTime = 1
  398.    IgnoreOldBusySem = 5
  399.  
  400.    In  dem  Fall  ist   eine   übriggebliebene   Busy-Semaphore   nach   einem
  401.    Systemneustart  vermutlich  schon  überaltert,  und  Unisched startet schon
  402.    wieder.
  403.  
  404.    Wenn  man   jedoch,   z.B.   um   Zugriffskonflikte   auf  der  Messagebase
  405.    auszuschließen, externe Aufgaben  wie  Tossen  im  Unisched-Fenster  selbst
  406.    ausführen  läßt  (EXEC  BLAHBLUBB.CMD), muß man damit rechnen, daß Unisched
  407.    für  längere  Zeitspannen  die   Busy-Semaphore  nicht  updaten  kann,  und
  408.    IgnoreOldBusySem  auf  einen   entsprechend   hohen   Wert   setzen.    Ein
  409.    Aufräumevent kann schon mal zwei Stunden dauern:
  410.  
  411.    AliveTime = 10
  412.    IgnoreOldBusySem = 180
  413.  
  414.    Egal  wie  man  es  löst  -  in  jedem  Fall sollte man auch unter OS/2, um
  415.    Tosserausfälle während Abwesenheit zu  verhindern, Unisched aus einer Batch
  416.    heraus starten, die, falls Unisched wegen BusySemaphore nicht  startet  (er
  417.    liefert  in  dem  Fall Errorlevel 255), den Unisched wieder erneut startet,
  418.    solange, bis die BusySemaphore veraltet ist:
  419.  
  420.    :start
  421.    unische2 /cunisched.cfg
  422.    if errorlevel 255 goto start
  423.  
  424.    Unisched  gibt  genug  Zeitschreiben  frei,  damit  diese  Konstellation im
  425.    Zweifelsfalle zumindest unter OS/2 NICHT zu 100% Systemlast führt).
  426.  
  427.  
  428.  
  429.    Include = <path+filename>
  430.    -------------------------
  431.  
  432.    Einbinden zusätzlicher Konfigurationsdateien.  Fügt die angegebene Datei an
  433.    genau dieser Stelle in die Konfiguration ein.  Bsp:
  434.  
  435.    Include = e:\configs\colors.cfg
  436.  
  437.  
  438.  
  439.    KeyColumns = <Spaltenzahl>
  440.    --------------------------
  441.  
  442.    Gibt an, in wieviel Spalten  die  Funktionstastenbeschreibungen  angeordnet
  443.    werden  sollen.   Default  ist 4, wenn man aber kleinere Fenstergrößen oder
  444.    längere Eventnamen wählt, können 3 Spalten besser lesbar sein.
  445.  
  446.    Bsp:
  447.    KeyColumns = 3
  448.  
  449.  
  450.  
  451.    Logfile = <path+filename>
  452.    -------------------------
  453.  
  454.    Hier gibst Du  das  Unisched-Logfile  an.   Dieses Schlüsselwort sollte als
  455.    allererste Zeile in der Unisched.Cfg stehen, da nur so Konfigurationsfehler
  456.    im weiteren Verlauf der Datei, die  zum  Programmabbruch  führen,  auch  im
  457.    Logfile festgehalten werden können.
  458.  
  459.    Bsp.:
  460.    Logfile = e:\box\log\unisched.log
  461.  
  462.    Wenn  Du mehrere Kopien von Unisched gleichzeitig laufen läßt (warum sollte
  463.    man das tun?), muß jede ein anderes Logfile haben.
  464.  
  465.  
  466.  
  467.    MTask = <multitasker>
  468.    ---------------------
  469.  
  470.    Diese Option existiert nur in der  DOS-Version.  Man kann hier angeben, für
  471.    welchen Multitasker  Unisched  Timeslices  freigeben  soll.   Normalerweise
  472.    erkennt  Unisched  den  Multitasker  automatisch,  aber  manche Multitasker
  473.    lassen  sich  nicht  erkennen  (z.B.  Topview),  und  manchmal  klappt  die
  474.    Erkennung  nicht  richtig  (z.B.  Windows  NT).   Für  <multitasker> können
  475.    folgende Strings eingesetzt werden:
  476.  
  477.      DESQview    Quarterdeck DESQview
  478.      PC-MOS      PC-MOS (von wem war das doch gleich?)
  479.      Windows     Windows 3.1, 95 und NT
  480.      DoubleDOS   DoubleDOS
  481.      OS/2        Warum nicht gleich UNISCHE2.EXE nehmen? ;-)
  482.      TopView     TopView
  483.      Multilink   Multilink
  484.      BIOS        Timeslicing über BIOS
  485.      Generic     Timeslicing über Multiplexerinterrupt
  486.      None        Timeslicing ganz ausschalten
  487.  
  488.    Beachte auch  die  zugehörige  Einstellung  von  "ExcessiveSlicing"  (siehe
  489.    oben).
  490.  
  491.  
  492.  
  493.    Outbound = <path>
  494.    -----------------
  495.  
  496.    Gibt  den  Basispfad  des statischen (Binkley-) Outbounds an.  Diese Angabe
  497.    wird für das Erzeugen von Polls beim Uplink benötigt und ist obligatorisch.
  498.    Auch wenn Du keinen  Binkley-Outbound  hast  und/oder die Poll-Funktion gar
  499.    nicht nutzen willst, mußt Du hier was angeben.  Nimm dann halt  irgend  ein
  500.    leeres Verzeichnis.
  501.  
  502.    Bsp.:
  503.    Outbound = e:\box\binkley\outbound
  504.  
  505.    Die  Outbound-Verzeichnisse  anderer  Zonen  (outbound.0f2  usw.) errechnet
  506.    Unisched selbst.  Wenn Du  allerdings  ein vollständiges Domain-Setup hast,
  507.    wo die Outbound-Pfad anders heißen (z.B.  Zone  456,  Domain  mediaserve.de
  508.    führt  zu  mediaser.1c8 statt outbound.1c8), mußt Du diese Verzeichnisse in
  509.    der Config wie folgt angeben:
  510.  
  511.  
  512.  
  513.    <Zonennummer> = <Outboundbasisname>
  514.    -----------------------------------
  515.  
  516.    Das Domain-Setup.   Braucht  man,  wenn  der  Outbound  für  Zone 456 nicht
  517.    Outbound.1c8, sondern Mediaser.1c8 heißt.  (Domainesetup bei  Binkley;  bei
  518.    McMail  verändert  sich  der  Outboundname  auch  bei eingetragenen Domains
  519.    nicht).   Wichtig:   Bei   Outboundbasisname  den  tatsächlichen  Pfadnamen
  520.    angeben, *nicht* den eigentlichen Domainnamen.  Die  Zonennummer  muß  aber
  521.    dezimal angegeben werden.  Beispiel:
  522.  
  523.    Zonennummer:    Domainname:     Outboundverzeichnisname:
  524.    1               fidonet         e:\inout\outbound.001
  525.    2               fidonet         e:\inout\outbound
  526.    ...
  527.    6               fidonet         e:\inout\outbound.006
  528.    9               virnet          e:\inout\virnet.009
  529.    242             fido.de         e:\inout\fidode.0f2
  530.  
  531.    Eine solche Outboundkonfiguration wird in Unisched eingetragen als:
  532.  
  533.    Zone = 2
  534.    Outbound=e:\inout\outbound
  535.    9   = Virnet
  536.    242 = FIDODE
  537.  
  538.    Man beachte: fidode, NICHT fido.de, aber 242, NICHT 0f2.
  539.  
  540.  
  541.  
  542.    Pipe = <pipename>
  543.    -----------------
  544.  
  545.    Schreibt  Unisched-Logmeldungen  in  eine  Named  Pipe,  aus  der  sie   mit
  546.    Snooper-Programmen  wie  PMPIPER,  PIPEMAN,  RXSNOOP  u.a. ausgelesen werden
  547.    können.  Nützlich, wenn  man  einen  auf  dem  Server laufenden Unisched von
  548.    einem anderen Rechner aus überwachen will.  Beispiel:
  549.  
  550.    Pipe = \\pipe\unisched
  551.  
  552.    Unisched unterstützt bei Pipes übrigens auch  Reconnects,  im  Gegensatz  zu
  553.    Binkley und anderen, die in dem Fall immer neu gestartet werden müssen.
  554.  
  555.    Eine  Pipe sollte nur konfiguriert werden, wenn sie auch tatsächlich benutzt
  556.    wird, da dies sonst den Start von Unisched unnötig verzögert.
  557.  
  558.  
  559.  
  560.    PipeLog = <Loglevels>
  561.    -----------------------
  562.  
  563.    Gibt an, welche Arten von Meldungen in die Named  Pipe  geschrieben  werden
  564.    sollen.    Syntax  und  verfügbare  Loglevels  ist  genau  gleich  wie  bei
  565.    "DiskLog".
  566.  
  567.  
  568.  
  569.    RecentActivityLines = <n>
  570.    -------------------------
  571.  
  572.    Gibt  an,  wieviele  Zeilen  im  Backscroll-Puffer  gehalten  werden.   Der
  573.    Backscrollpuffer speichert ältere Zeilen, die im Logfenster standen, so daß
  574.    man komfortabel  mit  PgUp/Dn,  Home/End  und  den  Cursortasten durch alte
  575.    Einträge im Logfenster scrollen kann.  Mit der Logdatei hat das aber nichts
  576.    zu tun.  - Der Defaultwert für diese Variable ist 100, und  das  Hochsetzen
  577.    auf Werte > 500 empfiehlt sich NUR in der OS/2-Version.
  578.  
  579.    Wem dieses Schlüsselwort bekannt  vorkommt:   Ja,  es  heißt bei Binkley XE
  580.    genauso  -  die  Technik,  die  bei  Unisched  dahinter  steckt,  ist  aber
  581.    wesentlich robuster als bei Binkley :-).
  582.  
  583.  
  584.  
  585.    ResetDialCounters = Yes | No
  586.    ----------------------------
  587.  
  588.    Vor    einem   Poll   grundsätzlich   alle   Nodial-Marks,   Dial-Counters,
  589.    Overtry-Marks etc. des  betreffenden  Nodes  löschen.   Kann man alternativ
  590.    aber statt hier global auch nur für einzelne Polls über RDC bei der  Aktion
  591.    POLL definieren (siehe dort).
  592.  
  593.  
  594.  
  595.    RescanSema = <path+filename>
  596.    ----------------------------
  597.  
  598.    Name  der  Semaphore-Datei,  die Deinen Mailer dazu bewegt, einen Rescan zu
  599.    machen.   Unisched  muß  einen  solchen  z.B.  beim  Erzeugen  eines  Polls
  600.    auslösen.
  601.  
  602.    Bsp:
  603.    RescanSema = e:\box\sema\btrescan.flg
  604.    RescanSema = e:\box\sema\mcmscan.all
  605.  
  606.    Unisched kann auch nur auf der  Line, die konkret pollen soll, einen Rescan
  607.    auslösen.  Die Linenummer wird dann erst von  Unisched  in  den  Dateinamen
  608.    eingefügt.   Die  Stelle,  an  der die Nummer eingefügt wird, wird wie in C
  609.    üblich eingetragen:
  610.  
  611.    %d für dezimal
  612.    %03d für dezimal, aber immer drei Stellen, ggf. mit 0en auffüllen
  613.    %x für hexadezimal
  614.    %02x für hex, aber immer zwei Stellen, ggf. mit Nullen auffüllen
  615.    etc.
  616.  
  617.    Bsp.:
  618.    RescanSema = e:\box\sema\mcmscan.%d
  619.  
  620.    Dies führt dann  zu  mcmscan.1,  mcmscan.2  usw.,  je  nachdem, welche Line
  621.    gewünscht ist.
  622.  
  623.    Es können bis zu zehn verschiedene  "RescanSema"-Zeilen  angegeben  werden.
  624.    Dies  ist  dann  interessant,  wenn  man  im  Wechsel  verschiedene  Mailer
  625.    (Binkley,  McMail,  ...)  benutzt  und  immer  für  alle  gleichzeitig  die
  626.    richtigen Semaphoren erstellen möchte.
  627.  
  628.  
  629.  
  630.    Registername = <Name>
  631.    Registerkey = <Key>
  632.    ---------------------
  633.  
  634.    Überweis'  mir  zwölf  Euros, und ich sage Dir, was Du hier eintragen mußt.
  635.    :-)))
  636.  
  637.  
  638.  
  639.    ScreenLog = <Loglevels>
  640.    -----------------------
  641.  
  642.    Gibt  an,  welche  Arten  von  Meldungen  im Log-Fenster auf dem Bildschirm
  643.    erscheinen sollen.  Syntax und  verfügbare  Loglevels  ist genau gleich wie
  644.    bei "DiskLog".
  645.  
  646.  
  647.    SeeHiddenFiles = Yes | No
  648.    -------------------------
  649.  
  650.    Dieses  Flag  bestimmt, ob Unisched beim Suchen nach Sempahoren und anderen
  651.    Flagfiles  (ausführliche  Erklärung  folgt  unten)  nur  "normale"  Dateien
  652.    "sieht"  (No,  Defaulteinstellung),  oder  ob  er  auch  versteckte Dateien
  653.    (solche mit "Hidden" oder "System" Attribut) sehen kann.
  654.  
  655.  
  656.    SemaDir = <Pfadname>
  657.    --------------------
  658.  
  659.    Hier kannst Du Dein Semaphorenverzeichnis eintragen  (das  Verzeichnis,  in
  660.    dem  die Signaldateien mit Nullänge liegen, über die verschiedene Programme
  661.    untereinander kommunizieren).   Semaphoren  können  hinterher auch woanders
  662.    sein, dies ist nur das Default-Verzeichnis, das verwendet wird, wenn Du  in
  663.    der Event-Action-Config keinen expliziten Pfad für eine bestimmte Sempahore
  664.    angibst.   SemaDir  wirkt  sich  nur auf diejenigen Semaphoren-Definitionen
  665.    aus,  die  in  der  Konfigurationsdatei  UNTERHALB  des  SemaDir-Statements
  666.    stehen.  Deshalb schreibt man  SemaDir  am  Besten  GANZ  AN DEN ANFANG der
  667.    KONFIGURATIONSDATEI.
  668.  
  669.    Bsp.:
  670.    SemaDir = e:\box\sema
  671.  
  672.  
  673.  
  674.    SemaphoreCheckInterval = <sekunden>
  675.    -----------------------------------
  676.  
  677.    Unisched bietet eine Funktion, Aktionen auszulösen, wenn Dateien erscheinen,
  678.    gelöscht  werden,  älter  als  xx  Stunden  sind, und so weiter.  Dafür muß
  679.    Unisched periodisch auf die Festplatte zugreifen um nachsehen zu können, ob
  680.    sich bei den überwachten Dateien etwas verändert hat.
  681.  
  682.    Mit SemaphoreCheckInterval kann  man  angeben,  alle wieviel Sekunden diese
  683.    Prüfung  erfolgen  soll.   Es  handelt  sich  dabei  um  einen   ungefähren
  684.    Richtwert.   Der  Standardwert ist 1 (jede Sekunde prüfen).  Er garantiert,
  685.    daß Unisched schnellstmöglich  auf  Änderungen  reagiert.  Solange Unisched
  686.    Dateien prüft, die sich auf einer lokal vorhandene Festplatte befinden, ist
  687.    das  kein  Problem,  da  diese Anfragen aus dem Cache befriedigt werden und
  688.    somit praktisch keine Systembelastung darstellen.
  689.  
  690.    Prüft Unisched jedoch Dateien auf über ein LAN gemounteten Laufwerken, oder
  691.    auf Laufwerken, für die kein Cache  aktiv  ist (DOS ohne SmartDrv o.ä.), so
  692.    empfiehlt es sich, diesen Wert auf 10 Sekunden oder höher zu setzen, um die
  693.    Netz- bzw.  Festplattenbelastung zu minimieren.
  694.  
  695.    Bsp.:
  696.    SemaphoreCheckInterval = 30    ;jede halbe Minute prüfen
  697.  
  698.  
  699.  
  700.    SmallWindow = On | Off
  701.    ----------------------
  702.  
  703.    Mit SmallWindow = On benutzt Unisched statt 80x25 nur 66x18  Zeichen.   Das
  704.    macht unter DESQview Sinn, wenn man eine kleinere Fenstergröße einstellt.
  705.  
  706.    Unter  OS/2  wird  dieser  Parameter  von  zukünfitgen Versionen nicht mehr
  707.    unterstützt werden.  Unter OS/2 kann  man  vor  dem Start von Unisched über
  708.    Kommandozeile mittles MODE beliebige Fenstergrößen einstellen (zum Beispiel
  709.    MODE CO66,18), die Unisched automatisch erkennt und sich dann  entsprechend
  710.    anpaßt.
  711.  
  712.    Bsp.:
  713.    SmallWindow = Off
  714.  
  715.  
  716.  
  717.    SpawnInit = $Aktionsname
  718.    ------------------------
  719.  
  720.    Führt  die  angegebene  Aktion  einmalig bei Programmstart aus.  Was Du bei
  721.    $Aktionsname eintragen kannst, erfährst Du  in  Abschnitt 3.3.  Es sind bis
  722.    zu 16 SpawnInit-Angaben zulässig.
  723.  
  724.    Bsp:
  725.    SpawnInit = $Begrüßungslied
  726.  
  727.    Hinweis für OS/2-User:  Was NICHT funktioniert, ist sowas wie "SpawnInit  =
  728.    EXEC MODE CO150,80".  Wenn man die VIO-Fenstergröße verändern will, muß man
  729.    dies  echt vor dem Aufruf von Unisched machen (in einer CMD), weil Unisched
  730.    das sonst nicht merkt (liegt  an  Beschränkungen meines Compilers, nicht an
  731.    mir ...).
  732.  
  733.  
  734.  
  735.    Zone = <nr>
  736.    -----------
  737.  
  738.    Hier gibst Du Deine "Heimatzonennummer" an (Europa:  2,  USA:   1).   Diese
  739.    Angabe  ist obligatorisch, da sie für die korrekte Ermittlung der Namen der
  740.    Outbound-Verzeichnisse notwendig ist.  Wenn Du keinen Binkley-Outbound hast
  741.    und/oder die Pollfunktion nicht  nutzen  willst, gibst Du einfach irgendwas
  742.    an.
  743.  
  744.    Bsp.:
  745.    Zone = 2
  746.  
  747.  
  748.  
  749.    ColBorder          = <nr>
  750.    ColKeys            = <nr>
  751.    ColKeyDescriptions = <nr>
  752.    ColHeadLine        = <nr>
  753.    ColEvent           = <nr>
  754.    ColLog             = <nr>
  755.    -------------------------
  756.  
  757.    Farbnummern, falls die Defaults nicht gefallen, und zwar  wird  die  Nummer
  758.    berechnet über Vordergrundfarbe+16*Hintergrundfarbe aus folgender Tabelle:
  759.  
  760.                 │     │Hinter-│Vorder-                  │     │Hinter-│Vorder-
  761.    Farbe        │ Wert│grund? │grund?      Farbe        │ Wert│grund? │grund?
  762.    ═════════════╪═════╪═══════╪═══════    ══════════════╪═════╪═══════╪═══════
  763.    BLACK        │  0  │ Ja    │ Ja         DARKGRAY     │  8  │ Nein  │ Ja
  764.    BLUE         │  1  │ Ja    │ Ja         LIGHTBLUE    │  9  │ Nein  │ Ja
  765.    GREEN        │  2  │ Ja    │ Ja         LIGHTGREEN   │ 10  │ Nein  │ Ja
  766.    CYAN         │  3  │ Ja    │ Ja         LIGHTCYAN    │ 11  │ Nein  │ Ja
  767.    RED          │  4  │ Ja    │ Ja         LIGHTRED     │ 12  │ Nein  │ Ja
  768.    MAGENTA      │  5  │ Ja    │ Ja         LIGHTMAGENTA │ 13  │ Nein  │ Ja
  769.    BROWN        │  6  │ Ja    │ Ja         YELLOW       │ 14  │ Nein  │ Ja
  770.    LIGHTGRAY    │  7  │ Ja    │ Ja         WHITE        │ 15  │ Nein  │ Ja
  771.  
  772.    Beispiel: Roter Vordergrund, grüner Hintergrund = 4+16*2 = 36, also z.B.
  773.    ColKeys = 36
  774.  
  775.  
  776.  
  777.   3.3. Events und Actions
  778.   -----------------------
  779.  
  780.   3.3.1 ACTIONS
  781.   -------------
  782.  
  783.   Wie  bereits erwähnt:  Unisched reagiert auf Ereignisse (EVENT) mit Aktionen
  784.   (ACTION).   Bevor  wir  Events  festlegen,  müssen  wir  erst  die  Aktionen
  785.   definieren (*was* soll Unisched tun?).
  786.  
  787.   Eine  Definition einer Aktion beginnt immer mit einem $-Zeichen, gefolgt von
  788.   dem Name der  Aktion  (NUR  Buchstaben  und  der  Unterstrich!!!).  Dann ein
  789.   Gleichheitszeichen, und dahinter die eigentliche Aktion.
  790.  
  791.   Bsp.:
  792.   $HUB_ANRUFEN = POLL 2:2476/404 crash 2
  793.  
  794.   Im Folgenden wird nun die Syntax aller  Aktionen  erklärt,  die  hinter  dem
  795.   Gleichheitszeichen verwendet werden können:
  796.  
  797.  
  798.      BEEP [<Frequenz> [<Dauer>]]
  799.      ---------------------------
  800.  
  801.      Gibt einen Piepton aus.  Frequenz und Dauer können angegeben werden in
  802.      Hertz bzw.  Millisekunden; werden sie weggelassen, werden 1000 Hz und 100
  803.      ms angenomen (kurzer Piepser).
  804.  
  805.      Anwendungsgebiete:  Weck-Piepser, Stündliches Piepsen wie bei Armbanduhr,
  806.      ...
  807.  
  808.      Bsp.:
  809.      $LANG_UND_LAUT = BEEP 800 4000
  810.      $PIEPSIG = BEEP 1000 80
  811.  
  812.      Wer mehr machen will als nur einen Piepston ausgeben, der sollte sich die
  813.      Aktion "PLAY" in Verbindung mit MUS-Dateien ansehen.
  814.  
  815.  
  816.      EXEC <command>
  817.      --------------
  818.  
  819.      Unisched  führt  das  externe  Programm  <command>  aus und wartet dessen
  820.      Beendigung  ab.   <command>   wird   dabei  an  den  Kommando-Interpreter
  821.      (COMMAND.COM, CMD.EXE) übergeben, so daß neben  EXE-  und  COM-Programmen
  822.      auch BAT- und CMD-Dateien (auch REXX-Skripte) ausgeführt werden können
  823.      ebenso wie Befehle des  Kommando-Interpreteres (z.B. COPY). Also nochmal:
  824.  
  825.      > Alles, was hinter EXEC kommt, wird genauso ausgeführt,  als  würde  man
  826.      > von  Unisched aus eine DOS/OS/2Shell gehen und dort genau diesen String
  827.      > eingeben.
  828.  
  829.      Bsp.:
  830.      $MAIL_Exportieren = EXEC e:\box\batch\export.bat
  831.  
  832.      Ein Tip für OS/2-User:  Wenn der Tosser in einem separaten Task gestartet
  833.      werden soll, kann man die START-Aktion statt der EXEC-Aktion verwenden.
  834.  
  835.  
  836.  
  837.      EXIT <errorlevel>
  838.      -----------------
  839.  
  840.      Unisched beendet sich mit <errorlevel>.  Dies ist nützlich, wenn Unisched
  841.      selbst aus einer Batch heraus  aufgerufen wird.  Der Errorlevel kann dann
  842.      von der Batch ausgewertet werden, um das passende  Programm  zu  starten.
  843.      Gegenüber  dem  direkten  Starten  eines  Programmes  mit  EXEC hat diese
  844.      Methode den Vorteil, daß  Unisched  während der Ausführung des Programmes
  845.      sich nicht mehr im Speicher befindet, so daß ca.  60KB mehr zu  Verfügung
  846.      zu stehen.
  847.  
  848.      Bsp:
  849.      $TOSSER_UEBER_BATCH_STARTEN = EXIT 80
  850.  
  851.  
  852.  
  853.      IGNORE
  854.      ------
  855.  
  856.      Tut schlicht und ergreifend nichts.
  857.  
  858.  
  859.  
  860.      OPEN <OBJEKT_ID> und OPEN <PFADNAME>
  861.      ------------------------------------
  862.  
  863.      Dieser Befehl steht nur unter OS/2  zur  Verfügung, und auch da nur, wenn
  864.      die Workplace Shell installiert ist.  Mit  diesem  Befehl  kann  Unisched
  865.      WPS-Objekte   genau   so   öffnen,  wie  wenn  man  auf  der  WPS  darauf
  866.      doppelklicken würde.
  867.  
  868.      Als  Parameter für OPEN kann zum einen in spitzen Klammern eine Objekt-ID
  869.      eingegeben werden.  Mittels  Drittsoftware  wie  z.B.  Deskman/2 kann man
  870.      beliebigen Icons auf der WPS eine eindeutige Objekt-ID zuweisen.  Mittels
  871.      einfachen Rexx-Skripten  (ich  verweise  auf  die  Rexx-Dokumentation  zu
  872.      "SysSetObjectData")   kann  man  zumindest  neue  Icons  mit  definierten
  873.      Objekt-IDs erstellen.  So  ist  es  dann  möglich, mit Unisched beliebige
  874.      "Icons" zu starten.  Das hat übrigens einen netten Seiteneffekt:  Die WPS
  875.      ist ja defaultmäßig so  konfiguriert,  daß  sie  jedes  Icon  nur  einmal
  876.      startet  und  bei  einem  erneuten  Doppelklick  (oder  eben  Start durch
  877.      Unisched) nur zum  laufenden  Programm  switched,  es  aber nicht nochmal
  878.      parallel ausführt.  So könnte  man  z.B.  ein  Icon  für  den  Tossertask
  879.      anlegen  und  dann  dieses  via  WPS  starten  lassen - und schon ist man
  880.      sicher, daß der Tosser nie zweimal gleichzeitig gestartet wird.
  881.  
  882.      Das  folgende  Rexx-Skript  würde  z.B.   ein  Icon  erstellen,  das  die
  883.      "tosser.cmd" aufruft.  Das Skript als "test.cmd"  abspeichern,  und  zwar
  884.      so,  daß  die  Zeichenfolge  /* als erstes in der ersten Zeile ganz links
  885.      oben in der Datei steht:
  886.  
  887.        /* REXX */
  888.        call RxFuncAdd 'SysCreateObject', 'RexxUtil', 'SysCreateObject'
  889.        n = SysCreateObject("WPProgram",,
  890.                            "Tosser Starten",,
  891.                            "<WP_DESKTOP>",,
  892.                            "EXENAME=e:\tools\tosser.cmd;"||,
  893.                            "OBJECTID=<MYID_TOSSERTASK>",,
  894.                            "update")
  895.        exit
  896.  
  897.      Ein solchermaßen erstelltes Icon läßt sich von Unisched mittels folgender
  898.      Aktion aufrufen:
  899.  
  900.         $Tosser = OPEN <MYID_TOSSERTASK>
  901.  
  902.      Zum  anderen kann man statt einer Objekt-ID auch einfach einen Dateinamen
  903.      angeben.  Hierbei muß  es  sich  allerdings  um einen voll qualifizierten
  904.      Pfadnamen handeln, also Laufwerksbuchstabe plus  absoluter  Pfad.   Dabei
  905.      passiert dann genau das gleiche, wie wenn Du in den Laufwerksobjekten auf
  906.      die   entsprechende   Datei   klicken  würdest,  incl.   Beachtung  aller
  907.      Assoziationen u.ä.  Um z.B.  das  Papageienvideo abzuspielen, könntest Du
  908.      Folgendes schreiben:
  909.  
  910.         $Papagei = OPEN c:\mmos2\movies\macaw.avi
  911.  
  912.  
  913.  
  914.  
  915.      PLAY <filename.MUS>
  916.      -------------------
  917.  
  918.      Spielt   die    angegebene    MUS-Datei    ab.    MUS-Dateien   enthalten
  919.      Klartext-Kommandos, die in der Syntax ganz ähnlich sind wie BEEP:
  920.  
  921.         TONE <frequenz> <hundertstelsekunden>
  922.         WAIT <hundertstelsekunden>
  923.  
  924.      Man kann damit selbst komponieren, wenn man Lust hat.  Es handelt sich um
  925.      das Format, in dem auh die Proboard- und  Remote  Access  -  Musikdateien
  926.      (Pagesongs)  gehalten  sind.   Ein paar Beispiel-MUS-Dateien kann man bei
  927.      mir (2:2476/418) unter UAPS10.ARJ requesten.
  928.  
  929.      In der OS/2-Version werden die  Kunstwerke im Hintergrund abgespielt, die
  930.      Abarbeitung von Events wird also nicht aufgehalten.  Das  Abspielen  kann
  931.      mit der Aktion ABORTMUSIC abgebrochen werden.  Bsp:
  932.  
  933.      $Wecker = PLAY f:\box\pb\Wecker.MUS
  934.      $Jajajaistjagut = ABORTMUSIC
  935.  
  936.      In der DOS-Version muß man den Wecker bis zum Ende ertragen ...
  937.  
  938.  
  939.  
  940.      PLAY <filename.WAV|.MID>
  941.      ------------------------
  942.  
  943.      Spielt  die  angegebene WAV- oder MID-Datei ab.  Diese Aktion funktioniert
  944.      nur in der OS/2-Version und erfordert installierten MMPM/2.  Das Abspielen
  945.      erfolgt im Hintergrund.
  946.  
  947.      Bsp:
  948.      $Bigben = PLAY f:\sounds\gong.wav
  949.  
  950.  
  951.  
  952.      POLL <node> [<flavour>] [COND] [RDC] [LINE<linenr>]
  953.      ---------------------------------------------------
  954.  
  955.      Legt im Binkley-Outbound einen Poll für <nodenumber> an.  Die Reihenfolge
  956.      der Paramter ist wie obenstehend angegeben einzuhalten.
  957.  
  958.      <node>:        Nodenummer in 3D oder 4D
  959.      <flavour>:     Folgende   Flavours  können  angegeben  werden:   "crash",
  960.                     "immediate",  "direct",  "normal",  "hold"  (Unsinn, oder?
  961.                     ;-), "poll".   Man  beachte,  daß  "immediate"  nicht  bei
  962.                     BinkleyTerm  funktioniert,  und  daß "poll" ausschließlich
  963.                     bei McMail ab Gamma  5 implementiert ist.
  964.                     (Ebenfalls  möglich  sind die Flavours FL0 bis FL9.  Diese
  965.                     generieren FLO-Pakete der Art  0LO  bis  9LO.  Dies ist in
  966.                     einem Draft für  einen  erweiterten  Binkley-Outbound  vom
  967.                     BT-XE-Team  spezifiert,  aber  noch  nicht  konkret in die
  968.                     Praxis umgesetzt ... außer in Unisched ;-)
  969.      COND:          Wird diese Zeichenfolge angegeben, so wird  der  Poll  nur
  970.                     ausgeführt,  wenn  für  die  angegebene Nodenummer bereits
  971.                     irgendetwas da liegt.
  972.      RDC:           Abkürzung  für  "Reset  Dial  Counters".   Wenn angegeben,
  973.                     werden vor Anlegen des Polls alle Dial Counter, Busy Marks
  974.                     u.ä.  entfernt.   Dies  sind  die  Dateien <nodenetz>.$??,
  975.                     .&??, .#?? und .-??.  Ich  hoffe,  damit  alle  derartigen
  976.                     Flags  aller üblichen Mailer erschlagen zu haben ...  Wenn
  977.                     man das sowieso bei  jedem  Poll  machen lassen will, kann
  978.                     man, statt bei jedem einzelnen Poll RDC angeben zu müssen,
  979.                     auch global  "ResetDialCounters=Yes"  in  das  Config-File
  980.                     aufnehmen.
  981.      <line>:        Gibt die Nummer der Line  an, die den Poll ausführen soll.
  982.                     Falls bei "RescanSema" (s.o.)  die  %-Parameter  verwendet
  983.                     wurden,  sollte  die  Linenummer  immer  angegeben werden,
  984.                     damit Unisched auf der  richtigen Line den Rescan auslösen
  985.                     kann (so  daß  der  Mailer  von  dem  Poll  überhaupt  was
  986.                     mitkriegt).  Man beachte, daß zwar der Rescan dann nur für
  987.                     die  entsprechende  Line  angelegt  wird,  daß man so aber
  988.                     nicht verhindern kann,  daß  evtl.  nicht doch eine andere
  989.                     Line rauswählt.  Ausnahme:  Bei dem  Flavour  "Poll",  der
  990.                     nur  von  McMail  unterstützt  wird,  wird  ein spezieller
  991.                     Line-Poll angelegt, der bewirkt, daß definitv keine andere
  992.                     Line rauswählt.
  993.                     Es  ist  mehr  als  ein  LINEx-Statement  zulässig, jedoch
  994.                     werden  zusätzliche  LINEx-Statements  nur  zum  Erstellen
  995.                     zusätzlicher     Rescan-Semaphoren     verwednet.      Ein
  996.                     McMail-Taskpoll wird immer nur für  die  erste  angegebene
  997.                     Line erstellt.
  998.                     Die maximale Line-Nummer beträgt 32,  alles  darüber  gibt
  999.                     einen  Syntax-Error.   (Wer  mehr  als 32 Lines fährt, ist
  1000.                     vermutlich neureich und kann  mir gern eine größere Spende
  1001.                     zukommen lassen, in dem Fall erweitere ich die Anzahl  der
  1002.                     möglichen Lines gerne <g>).
  1003.  
  1004.      Beispiele:
  1005.      $POLL_Hub = Poll 2:2476/998 crash rdc line2 line 3
  1006.        Pollt im Flavour "crash" bei 2:2476/998, rescannen sollen die Lines
  1007.        2 und 3. Vorher Busy-Marks und Dialcounters löschen.
  1008.      $Requeste_bei_Niels = Poll 2:2476/999 immediate cond line1
  1009.        Falls was für 2:2476/999 da liegt  (z.B. Requests, die tagsüber mit dem
  1010.        Flavour direct erstellt wurden), dort sofort mit Line 1 pollen.
  1011.  
  1012.  
  1013.  
  1014.      REFLAVOUR <node> [<oldflavour>] [<newflavour>] [RDC] [COND] [LINE<line#>]
  1015.      -------------------------------------------------------------------------
  1016.  
  1017.      Setzt im Binkley-Outbound alle  Mails  für  den angegebenen Node, die mit
  1018.      Flavour "oldflavour" im Outbound liegt, auf den Flavour "newflavour" um.
  1019.  
  1020.      <node>:        Nodenummer in 3D oder 4D
  1021.      <oldflavour>:  Hier sind alle Flavours zulässig, die auch bei POLL (siehe
  1022.      <newflavour>:  dort) zulässig sind.
  1023.      [RDC] [LINE#]: Haben beide die gleiche Bedeutung wie bei POLL (denn auch
  1024.                     REFLAVOUR läßt natürlich den Mailer hinterher rescannen).
  1025.      [COND]:        Das "Reflavouring" wird nur durchgeführt, falls bereits
  1026.                     Mail mit dem angegebenen neuen Flavour existiert.
  1027.  
  1028.      Man  beachte  dabei,  daß  Unisched ungepackte Mail (?UT-Pakete) nur dann
  1029.      "reflavouren" kann, wenn NOCH KEINE  Mail mit dem angegebenen Zielflavour
  1030.      vorhanden ist.  (Falls  doch,  wird  eine  Warnung  ausgegeben,  und  die
  1031.      ungepackte  Mail  nicht  geändert  -  man muß also nicht Angst haben, daß
  1032.      etwas  überschrieben  wird).   Bei  Arcmail/Files  (?LO-Pakete)  ist  das
  1033.      dagegen kein Problem  -  Hier  wird  z.B.  Hold-Mail  auch dann auf Crash
  1034.      geändert, wenn bereits CLO-Pakete existieren.
  1035.  
  1036.      Das ganze hat zwei wichtige Anwendungsgebiete.  Erstens  kann  man  damit
  1037.      Polls  wieder  löschen.   Bsp:   Du pollst um 2 Uhr Deinen GFD-Uplink an.
  1038.      Falls Du jedoch bis 4 Uhr  noch  nicht durchgekommen bist, möchtest Du an
  1039.      dem Tag nich mehr pollen (Telefongebühren ...):
  1040.  
  1041.      $POLL_GFDnet   = POLL 2:2476/999 crash
  1042.      $UNPOLL_GFDnet = REFLAVOUR 2:2476/999 crash normal
  1043.      #001 02:00 03:59    = $POLL_GFDnet
  1044.      #002 04:00 10:00    = $UNPOLL_GFDnet
  1045.  
  1046.      (Ich   weiß,   es    ist    blöd,    daß    dieses    Beispiel    bereits
  1047.      Zeit-Event-Definitionen  enthält,  obwohl die erst unten behandelt werden
  1048.      ...
  1049.  
  1050.      Ein  weiterer   möglicher   Anwendungsfall   ist   das,   was  ehemaligen
  1051.      Frontdoor-Sysops als "UNHOLD" bekannt ist.  Wenn jemand z.B. sein  System
  1052.      so  konfiguriert,  daß  es  während des Billigtarifs auch für Direct-Mail
  1053.      rauswählt (z.B. eine  gute  Möglichkeit,  File-Requests  in  die Nacht zu
  1054.      verlegen), muß er,  da  der  Mailer  nicht  zwischen  Normal  und  Direct
  1055.      unterscheidet,  die Echomail auch für seinen Uplink HOLD packen, weil der
  1056.      sonst auch in der fraglichen  Zeit  immer angerufen würde, sobald für ihn
  1057.      etwas auf Hold liegt.  - Damit die  Mail  für  den  Uplink  nun  trotzdem
  1058.      rausgeht,  wenn  man  "absichtlich" bei ihm anruft, muß man vor dem Anruf
  1059.      diese wieder auf "Normal" setzen:
  1060.  
  1061.      $POLL_OLAF   = POLL 2:246/9999 crash
  1062.      $UNHOLD_OLAF = REFLAVOUR 2:246/9999 hold normal
  1063.      $Olaf_Anrufen = $UNHOLD_OLAF $POLL_OLAF
  1064.  
  1065.  
  1066.  
  1067.      REMOVE <filename>
  1068.      -----------------
  1069.  
  1070.      Löscht die Datei  <filename>.   Sinn  dieses  Befehls  und Beispiele siehe
  1071.      unter SEMAPHORE.  Wildcards sind (seit der Wide Beta  07)  erlaubt.   Wird
  1072.      kein    Verzeichnispfad    angegeben,    wird    das    zuvor   definierte
  1073.      Semaphoren-Verzeichnis verwendet.
  1074.  
  1075.  
  1076.  
  1077.      REQUEST <filename> [!<password>] <nodenumber> [<flavour>] [LINE<line#>]
  1078.      -----------------------------------------------------------------------
  1079.  
  1080.      Requestet  beim  angegebenen  Node   die  angegebene  Datei.   Außer  dem
  1081.      Filerequest selbst wird auch ein Poll  angelegt,  damit  der  Filerequest
  1082.      auch  verschickt wird, daher sind die restlichen Parameter auch identisch
  1083.      mit denen der Aktion POLL.
  1084.  
  1085.      Beispiel1:
  1086.        $Request_Private_Filelist = REQUEST PVTFILES !GEHEIM 9:99/999 crash 2
  1087.        $Request_BLAND_Files = REQUEST FILES 2:2476/418 crash 1
  1088.  
  1089.  
  1090.  
  1091.      RESTART
  1092.      -------
  1093.  
  1094.      Initialisiert  Unisched  neu.   Dabei  wird  auch  das  Config-File   neu
  1095.      eingelesen.
  1096.  
  1097.  
  1098.  
  1099.      SEMAPHORE <filename> ["Inhalt"]
  1100.      REMOVE <filename>
  1101.      -------------------------------
  1102.  
  1103.      Die  Aktion  SEMAPHORE  legt  die  Semaphorendatei  <filename>  an.  Eine
  1104.      Semaphore-Datei ist  eine  Datei  mit  Nulllänge,  über  die  man anderen
  1105.      Programmen bestimmte Dinge signalisieren kann.  Über bestimmte Semaphoren
  1106.      kann man z.B.  das  Verhalten  des  Mailers  beeinflussen.   Entsprechend
  1107.      löscht die Aktion REMOVE die angegebene Datei (Vorsicht:  Dies geht nicht
  1108.      nur bei Semaphoren, sondern auch bei Dateien, die nicht Nullänge haben!).
  1109.      REMOVE   nimmt   ebenso   wie  SEMAPHORE  das  Semaphore-Verzeichnis  als
  1110.      Standardverzeichnis.
  1111.  
  1112.      So  könnte  z.B.  die  Sempahore   BTFREEZE.01  angelegt  werden,  um  zu
  1113.      verhindern, daß der Binkley-Task Numero 1  weiterhin  abhebt  oder  sonst
  1114.      irgendwas  tut.   Wenn  Binkley  wieder  aktiv  werden  darf, muß die von
  1115.      Binkley nach dem freezing angelegte Datei BTFROZEN.01 gelöscht werden.
  1116.  
  1117.      (Hinweis:  Manchmal  kann  es  einfacher  sein,  Semaphoren  von  der die
  1118.      eigentliche Aktion ausführenden Batch  aus  mit  ECHO>SEMAPHORE.SEM  bzw.
  1119.      DEL SEMAPHORE.SEM erstellen und löschen zu lassen).
  1120.  
  1121.      Wird kein Pfadname angegeben, wird die Datei im zuvor in der Config
  1122.      definierten Sempahoren-Verzeichnis angelegt.
  1123.  
  1124.      $Freeze_BT1 = SEMAPHORE BTFREEZE.01
  1125.      $Unfreeze_BT1 = REMOVE e:\mailer\bt\flags\BTFROZEN.02
  1126.  
  1127.      Optional  kann  die  Aktion  Sempahore  auch  Dateien  anlegen, die nicht
  1128.      Nulllänge, sondern einen bestimmen Inhalt haben.  In diesem Fall gibt man
  1129.      der Aktion  als  zusätzlichen  Parameter  neben  dem  Dateinamen einen in
  1130.      Anführungszeichen  eingeschlossenen  String  mit,  der   in   die   Datei
  1131.      geschrieben   werden   soll.   Innrhalb  des  Strings  kann  mit  \n  ein
  1132.      Zeilenumbruch, mit \"  ein  Anführungszeichen  und  mit  \\ ein Backslash
  1133.      erzeugt  werden.   Als  Anwendungsbeispiel  sei   das   Erstellen   einer
  1134.      Exitsemaphore  für  Xenia angeführt.  Xenia erwartet als Inhalt der Datei
  1135.      den Exitcode, den es zurückliefern soll:
  1136.  
  1137.      $BeendeTask1MitErrorcode99 = SEMAPHORE xmexit.1 "99"
  1138.  
  1139.  
  1140.  
  1141.      SEND <filename> <nodenumber> [<flavour>] [kfs | tfs] [LINE<line#>]
  1142.      ------------------------------------------------------------------
  1143.  
  1144.      Verschickt eine  Datei  an  den  angegebenen  Node.   Die  Parameter sind
  1145.      identisch wie bei REQUEST.  Zusätzlich gibt es noch:
  1146.  
  1147.      kfs:  Steht für "kill file when sent":  Die Datei wird nach dem Versenden
  1148.            gelöscht.
  1149.      tfs:  Steht für "truncate file  when  sent":  Die  Datei  wird  nach  dem
  1150.            Versand auf Nullänge gesetzt.
  1151.  
  1152.      Beispiel:
  1153.        $Send_Hubdiff = SEND 24760900.UPD 2:2476/1 crash line2
  1154.  
  1155.  
  1156.  
  1157.     START ["<title>"] [/option ...] <program> <parameter> ...
  1158.     ---------------------------------------------------------
  1159.  
  1160.     Die Aktion START steht  nur  unter  OS/2  zur  Verfügung.  Sie startet ein
  1161.     Programm direkt in einer eigenen Session.  Im  Unterschied  zu  EXEC  wird
  1162.     also   nicht   Unisched   angehalten   und   eine   Befehlszeile   an  den
  1163.     Kommandoprozessor übergeben und auf deren Abarbeitung gewartet, sondern es
  1164.     wird eine unabhängige Sitzung aufgemacht.
  1165.  
  1166.     START hat "im Wesentlichen" die gleiche Syntax wie der OS/2  START  Befehl
  1167.     ("help  start"  eintippen  ...)  und  sollte sich auch genau so verhalten.
  1168.     Trotzdem hier noch mal eine vollständige Liste:
  1169.  
  1170.     <title>   Ein Titel für die Fensterliste und den Titelbalken eines
  1171.               Fensters (falls vorhanden).
  1172.  
  1173.     <program> <parameters ...>
  1174.               Das Programm, Batchfile oder Skript, das aufgerfuen werden soll.
  1175.  
  1176.     Mögliche Werte für <option> (Einzelne Optionen können direkt oder durch
  1177.     Leerzeichen getrennt  aneinandergehängt  werden)  finden  sich unten.  Man
  1178.     sollte über die Optionen vollständig spezifizieren, was man haben  möchte.
  1179.     Alle Optionen haben auch Defaultwerte, teilweise hängen die aber (dank der
  1180.     Kompatibilität zu START ...) wieder von den Einstellungen anderer Optionen
  1181.     ab,  und  das ganze ist recht undurchsichtig.  Deshalb lieber explizit die
  1182.     gewünschte Optoin setzen.
  1183.  
  1184.       - Sitzungsart: Einer der folgenden Parameter sollte gesetzt sein:
  1185.  
  1186.         /FS         OS/2 Vollbild-Sitzung
  1187.         /WIN        OS/2 Fenster
  1188.         /PM         PM-Anwendung
  1189.         /DOS/WIN    DOS-Anwendung im Fenster
  1190.         /DOS/FS     DOS Vollbild-Sitzung
  1191.  
  1192.       - Vordergrund/Hintergrund:  Einer der folgenden Parameter sollte gesetzt
  1193.         sein (die Defaults hängen von der Sitzungsart ab, und das kann sich eh
  1194.         keiner richtig merken):
  1195.  
  1196.         /F          Im Vordergrund ausführen
  1197.         /B          Im Hintergrund ausführen
  1198.  
  1199.       - Fenstergröße: Die folgenden Parameter sind optional:
  1200.  
  1201.         /MAX        Fenster in maximaler Größe starten.
  1202.         /MIN        Fenster minimiert (versteckt / als Icon) starten.
  1203.  
  1204.       - Startart:  Einer der folgendne Parameter sollte gesetzt sein
  1205.         (Ausnahme:  Bei /DOS darf keiner dieser Parameter gesetzt werden)
  1206.  
  1207.         /N          Programm direkt  starten.   Die  Sitzung  wird  nach
  1208.                     Beendigung des Programms  geschlossen.   Diesen  Parameter
  1209.                     für das Starten von .EXE-Dateien verwenden.
  1210.         /C          Programm über die Kommandoshell starten. Diesen Parameter
  1211.                     verwenden,   wenn   eingebaute  Befehle  (dir  o.ä.)  oder
  1212.                     .CMD-Dateien  (Batchfiles  oder  REXX-Skripte)  ausgeführt
  1213.                     werden.   Diese   Benötigen   die   Shell   (CMD.EXE)  zur
  1214.                     Interpretation.  Die  Sitzung  wird  nach  Beendigung  des
  1215.                     Befehls / des Skripts geschlossen.
  1216.         /K          Wie   /C,   jedoch   bleibt   die  Sitzung  nach
  1217.                     Beendigung  des Befehls oder Skripts offen.
  1218.  
  1219.       - Environment-Variablen: Dieser Parameter ist optional:
  1220.  
  1221.         /I          Normalerweise sieht das Programm genau die Umgebungs-
  1222.                     variablen, die auch Unisched kennt. Setzt man den /I
  1223.                     Parameter, so kennt das Programm in der Sitzung nur die
  1224.                     Umgebungsvariablen,  die  auch ein "frisches" OS/2-Fenster
  1225.                     kennen würde.
  1226.  
  1227.      Beispiele:
  1228.  
  1229.      $Tosser    = START "Tossertask" /WIN/MIN/B/C e:\tools\toss.cmd
  1230.        ;Starten des Tossertasks als minimiertes OS/2 Fenster im Hintergrund.
  1231.        ;Da es sich um ein Batchfile handelt, muß dieses mit /C über den
  1232.        ;Kommandoprozessor gestartet werden.
  1233.  
  1234.      $Fileindex = START /DOS /FS /B  e:\proboard\pbutil.exe fi
  1235.        ;Ein DOS-Programm als Vollbild starten. Um zu verhindern, daß in den
  1236.        ;Vollbild-Modus geschaltet wird, ist der /B Parameter wichtig.
  1237.  
  1238.      $Konfigfile_Editieren = START /PM/F/N c:\os2\e.exe e:\usched\unisched.cfg
  1239.        ;So kann man "on the fly" das Config-File editieren. Später (bei den
  1240.        ;Triggerfiles) werden wir sehen, wie man Unisched veranlassen kann,
  1241.        ;dieses nach einer Änderung auch automatisch wieder einzulesen
  1242.  
  1243.      Eins sollte man beim Starten von Sessions aber  im  Hinterkopf  behalten:
  1244.      Da  diese  unabhängig  von  Unisched  laufen, kann und wird Unisched u.U.
  1245.      mehrere  Sessions  gleichzeitig  starten.   Wenn  man  also  eine Session
  1246.      konfiguriert, die immer dann startet, wenn Mail  vom  Mailer  eingegangen
  1247.      ist,  kann  es  passieren,  daß  die toss.cmd zweimal gleichzeitig läuft.
  1248.      Dann müssen entweder  die  in  der  toss.cmd aufgerunfenen Programme oder
  1249.      aber die toss.cmd selbst dafür Sorge tragen, daß das zu keinen  Problemen
  1250.      führt.   Wem  das  zu  kompliziert  erscheint,  der sollte seine toss.cmd
  1251.      besser über die Aktion EXEC starten.
  1252.  
  1253.  
  1254.  
  1255.   3.3.2 Rekursionen
  1256.   -----------------
  1257.  
  1258.   Bei  der  Definition  von  ACTIONS  sind übrigens auch Rekursionen zulässig.
  1259.   Beispiel:
  1260.  
  1261.   $Tobias_Pollflag = POLL 2:2476/418 crash
  1262.   $Tobias_Unhold   = REFLAVOUR 2:2476/418 hold normal
  1263.   $Tobias_Anrufen  = $Tobias_Unhold $Tobias_Pollflag
  1264.  
  1265.   Die Reihenfolge der Defintion im  Config-File ist beliebig, die letzte Zeile
  1266.   im obigen Beispiel hätte also durchaus auch als erste dastehen können.
  1267.  
  1268.  
  1269.  
  1270.   3.3.3 EVENTS
  1271.   ------------
  1272.  
  1273.   So, jetzt haben wir bereits  Aktionen definiert, die Unisched u.U. ausführen
  1274.   soll, und ihnen Namen gegeben.  Jetzt müssen wir nur noch festlegen,  *WANN*
  1275.   Unisched diese Aktionen ausführen soll:
  1276.  
  1277.   Es  gibt vier mögliche Bedingungen (Ereignisse, EVENTS):  Semaphore-Dateien,
  1278.   statische Zeit-Events, periodische Events und Funktionstasten.
  1279.  
  1280.  
  1281.      Funktionstasten
  1282.      ---------------
  1283.  
  1284.      Syntax: Key<key> = $<action name> [$<action name> .. $<action name>]
  1285.  
  1286.      Dies ist die einfachste Sorte  von  Event.   Sie dient dazu, daß man alle
  1287.      von  Unisched  verwalteten   Funktionen   auch   von   Hand   über   eine
  1288.      Funktionstaste starten kann.  Derzeit definiert sind folgende Tasten:
  1289.  
  1290.      KeyF1 .. KeyF10
  1291.      KeySF1 .. KeySF10 (SF steht für Shift+Fkt.)
  1292.      KeyAltA .. KeyAltZ (Ausnahme: Alt+X, damit wird nämlich Unisched beendet)
  1293.      KeyAlt0 .. KeyAlt9
  1294.      KeyS0 .. KeyS9 (Shift + 0 .. Shift + 9)
  1295.      Key0 .. Key9
  1296.      KeyESC
  1297.  
  1298.      Bsp.:
  1299.      KeyF3 = $Mail_Exportieren
  1300.      KeyAltI = $Mail_Importieren $WAV_Abspielen
  1301.  
  1302.  
  1303.      Semaphore-Dateien
  1304.      -----------------
  1305.  
  1306.      Es  gibt  seit  wb06  zwei  verschiedene Semaphore-Typen:  Flagfiles (die
  1307.      konventionellen Semapohoren) und Triggerfiles.
  1308.  
  1309.        Flagfiles ("normale Semaphoren")
  1310.        --------------------------------
  1311.  
  1312.        Syntax: *<path+filename> = $<action name> [$<action name> ... ]
  1313.  
  1314.        Wenn Unisched die Datei  <path+filename>  vorfindet,  löscht es sie und
  1315.        führt anschließend die angegebene Aktion aus.  Wenn der Pfadname  nicht
  1316.        mit  angegeben  wird,  wird  die  Datei  in  dem  durch  SemaDir (s.o.)
  1317.        bezeichneten Verzeichnis gesucht.
  1318.  
  1319.        Bsp.:
  1320.        *e:\box\sema\MAILIN.SEM = $MAIL_Importieren
  1321.  
  1322.        Hauptzweck der  Flagfile-Funktion ist  es  wohl, den Tosser zu starten,
  1323.        wenn Mail eingegangen ist.  Dazu muß man den Mailer dazu überreden, bei
  1324.        Maileingang die besagte Semaphore-Datei anzulegen.  Schau' dazu in  die
  1325.        Doku  Deines  Mailers.   Bei  McMail und Binkley XE (nur XE!) heißt das
  1326.        zugehörige Schlüsselwort "MailFlag", wobei  man dann noch im Event-File
  1327.        den Errorlevel für Mail-Exits auf 0 setzen muß (McM) bzw.  den  Eintrag
  1328.        für  den Mail-Exit-Level ganz löschen muß (BTXE).  Bei Binkley XE heißt
  1329.        die  Datei  immer  BTMAIL.IN,  bei  McMail  kann  man  den  Namen  frei
  1330.        definieren).
  1331.  
  1332.        Bei  anderen  Mailern  muß  man  es,  findet  man  keine  entsprechende
  1333.        Funktion, notfalls über die Mailerbatch machen:  Jeder Mailer kann sich
  1334.        nach Maileingang mit einem  bestimmten  Errorlevel  beenden, und in der
  1335.        Batch kann man dann mit z.B. ECHO > MAILIN.SEM die Semaphore-Datei  von
  1336.        Hand anlegen.
  1337.  
  1338.  
  1339.  
  1340.        Triggerfiles ("daskannurunischedundsonstkeiner <g>")
  1341.        ----------------------------------------------------
  1342.  
  1343.        Syntax: ^<path+filename> = $<action name> [$<action name> ... ]
  1344.  
  1345.        Im  Gegensatz  zu  Flagfiles  werden  Triggerfiles  von  Unisched NICHT
  1346.        gelöscht, bevor die Aktion ausgeführt wird.  Bei Triggerfiles  muß  die
  1347.        aufgerufene  Aktion (normalerweise eine Batch) selbst dafür sorgen, daß
  1348.        die Datei gelöscht/woandershin verschoben wird.
  1349.  
  1350.        Ein typisches Anwendungsbeispiel:   Man  läßt durch ein zeitgesteuertes
  1351.        Event (s.u.) regelmäßig eine  Fileliste  requesten  und  möchte  diese,
  1352.        sobald  sie  eingetroffen ist, automatisch entpacken und in ein anderes
  1353.        Verzeichnis verschieben lassen:
  1354.  
  1355.        ^e:\mailer\inbound\24760999.zip = $Fileliste_von_999_Entpacken
  1356.  
  1357.        Es  ist  übrigens  problemlos  möglich,  daß die betreffende Aktion ein
  1358.        externes Programm in einer Hintergrundsitzung  startet und sich mit dem
  1359.        Löschen der Datei Zeit läßt.  Unisched ist nicht braindead  -  er  wird
  1360.        NIEMALS für die SELBE Trigger-Datei zweimal die gleiche Aktion starten.
  1361.        Nachdem  er erstmalig für eine Trigger-Datei eine Aktion gestartet hat,
  1362.        reagiert er zunächst nicht mehr  auf  Dateien diesen Namens im Inbound.
  1363.        Kriterium, damit Unisched auf das Auftreten einer Triggerdatei besagten
  1364.        Namens wieder reagiert, ist, daß die  Datei  zwischenzeitlich  entweder
  1365.        verschwunden  gewesen sein muß oder zumindest ihr Dateidatum/Dateilänge
  1366.        geändert hat.
  1367.  
  1368.        Ferner wird Unisched auch nie auf eine Trigger-Datei reagieren, solange
  1369.        diese nicht für Schreibzugriffe zugänglich ist.  Somit ist es - so Dein
  1370.        Mailer File-Sharing unterstützt, was heute die meisten tun - problemlos
  1371.        möglich,  als  Trigger-File   direkt   eine   Datei  im  Mailer-Inbound
  1372.        anzugeben; Unisched wird auf diese erst reagieren, wenn sie vollständig
  1373.        empfangen wurde.
  1374.  
  1375.        Und schließlich unterstützt  das  Triggerfiles-Feature  auch  Wildcards
  1376.        (Jokerzeichen).    Dabei   werden   alle   auf  das  Wildcard  passende
  1377.        Triggerfiles als Einheit betrachtet.   Will  heißen:  Wenn Unisched auf
  1378.        eine bestimmte Datei reagiert hat, reagiert es auf  beliebige  auf  das
  1379.        Wildcard  passende Dateien solange nichtmehr, bis die Datei, auf die er
  1380.        ursprünglich  reagiert  hatte,  gelöscht/wegverschoben  wird  oder  ihr
  1381.        Dateidatum ändert.
  1382.  
  1383.        Je  nach  Anwendung  sollte daher die Aktion, die durch ein Triggerfile
  1384.        ausgelöst wird, dieses File  nach  Beendigung löschen bzw. woanders hin
  1385.        verschieben.  Falls in der Triggerfiledefinition  Wildcards  vorkommen,
  1386.        ist  das  ein Muß.  Es gibt aber andererseits auch Fälle, in denen dies
  1387.        nicht  erforderlich  ist.   Z.B.  könnte  man  über  Triggerfiles  auch
  1388.        Unisched dazu bewegen, daß er,  wenn  man mit einem externen Editor das
  1389.        Config-File ändert, nach dem Abspeichern desselben das File automatisch
  1390.        neu  einliest.   Beim  Abspeichern  wird  nämlich  das  Dateidatum  des
  1391.        Configfiles aktualiesert, und das reicht ja schon, um  ein  Triggerfile
  1392.        zum Auslösen des Events zu veranlassen:
  1393.  
  1394.            $Configfile_Neu_Einlesen = RESTART
  1395.            ^e:\usched\unisched.cfg = $Configfile_Neu_Einlesen
  1396.  
  1397.  
  1398.  
  1399.        invertierte Flagfiles ("invertierte normale Semaphoren")
  1400.        --------------------------------------------------------
  1401.  
  1402.        Syntax: !*<path+filename> = $<action name> [$<action name> ... ]
  1403.  
  1404.        Die genaue  Umkehrung  eines  Flagfiles.   Die  Aktion(en)  wird/werden
  1405.        ausgelöst,  wenn  die  Datei <path.filename> nicht existiert.  Unisched
  1406.        erstellt die Datei daraufhin sofort selbst wieder neu.
  1407.  
  1408.        Dieses Feature läßt sich  z.B.  um  von  einem  anderen Programm aus zu
  1409.        kontrollieren, ob Unisched noch "am Leben ist".  Hierzu wird nicht  mal
  1410.        eine spezielle Aktion benötigt.  Bsp.:
  1411.  
  1412.        !*e:\flags\unisched.alv = IGNORE
  1413.  
  1414.        (Anmerkung für Fortgeschrittene:   Wir  haben  hier  nicht  erst  einen
  1415.        Aktionsnamen deklariert a la "$Tue_Nichts = IGNORE", sondern hinter das
  1416.        Gleichheitszeichen  direkt  den  gewünschten Aktionsbefehl geschrieben.
  1417.        Das ist überall zulässig  -  überall,  wo  man einen Aktionsnamen mit $
  1418.        hinschreiben kann, kann man stattdessen auch direkt einen Aktionsbefehl
  1419.        hinschreiben.)
  1420.  
  1421.  
  1422.  
  1423.        invertierte Triggerfiles
  1424.        ------------------------
  1425.  
  1426.        Syntax: !^<path+filename> = $<action name> [$<action name> ... ]
  1427.  
  1428.        Hier wird wie folgt vorgegangen:  Die Aktion(en) wird/werden ausgelöst,
  1429.        wenn  die  angegebene  Datei  nicht  exisitert.   Anschließend wird die
  1430.        Aktion so lange  nicht  wieder  ausgelöst,  wie  die Datei verschwunden
  1431.        bleibt.  Unisched registriert intern, wenn die Datei erneut  erscheint,
  1432.        und  erst,  wenn  sie  nach einem erneuten Erscheinen anschließend dann
  1433.        wieder verschwindet, wird die Aktion wieder ausgelöst.
  1434.  
  1435.        Wildcards sind hier nicht zulässig.
  1436.  
  1437.        Praktisches Anwendungsbeispiel: Weiß jemand eines? ;)
  1438.  
  1439.  
  1440.  
  1441.      Statische Zeitgesteuerte Events
  1442.      -------------------------------
  1443.  
  1444.      Die Bezeichnung "statisch" dient der  Unterscheidung mit den weiter unten
  1445.      erläuterten periodischen Events.  Statische Events sind  am  ehesten  mit
  1446.      dem  vergleichbar,  was  man  auch  von den eingebauten Schedulern vieler
  1447.      Mailer her  kennt.   Allerdings  handhabt  Unisched  auch  die statischen
  1448.      Events   etwas   anders   (besser!    ;-)   als   die   meisten   Mailer.
  1449.      Erfahrungsgemäß verursacht dies zunächst leichte Verständnisprobleme  ...
  1450.      lies Dir bitte die Doku sorgfältig durch, bevor Du damit rumspielst.  ;-)
  1451.  
  1452.  
  1453.      Syntax:
  1454.      #<nr> <from> <to> [<weekday>] [<fromdate> <todate>] [even|odd] = $<action>
  1455.  
  1456.      <nr>:      Nummer des Events, anhand derer Unisched bestimmt, ob das Event
  1457.                 schon   ausgeführt   wurde  oder  nicht.   Diese  Nummer  dient
  1458.                 lediglich dazu,  das  Event  eindeutig  zu identifizieren.  Die
  1459.                 Nummern müssen nicht aufeinanderfolgend sein, es muß auch keine
  1460.                 Reihenfolge eingehalten werden (ein Event,  das  später  kommt,
  1461.                 darf  problemlos  eine  niedrigere Nummer haben) - das einzige,
  1462.                 was man  beachten  muß,  ist,  daß  man  nicht  zwei Events die
  1463.                 gleiche Nummer geben darf (sollte  ...),  und  daß  die  Nummer
  1464.                 kleiner  als  1000  sein muß, also i.d.R. dreistellig angegeben
  1465.                 werden sollte.
  1466.  
  1467.                 Wenn man an der Config  was ändert, sollte man gleichbleibende
  1468.                 Events nicht umnumerieren, ansonsten werden sie nämlich an dem
  1469.                 Tag,  an  dem  man  an  der  Config  rumbastelt  u.U.  nochmal
  1470.                 ausgeführt.
  1471.  
  1472.      <from>,
  1473.      <to>:      Die  Start- und End-Uhrzeit des Events.  Unisched verhält sich
  1474.                 hier grundlegend anders  als  die  Braindead-Scheduler einiger
  1475.                 Mailer.  Unisched stellt sicher,  daß  die  angegebene  Aktion
  1476.                 innerhalb der angegebenen Zeitspanne *genau* einmal ausgeführt
  1477.                 wird.   Solche  Effekte,  daß der Tosser zwanzig Mal gestartet
  1478.                 wird,  weil  innerhalb  der  Zeitspanne,  innerhalb  derer  er
  1479.                 eigentlich  nur  einmal  gestartet  werden  soll,  was anderes
  1480.                 passierte, der Mailer runterfuhr, das Event dann neu  startete
  1481.                 und  damit auch den Tosser nochmal, etc, pp., - solche Effekte
  1482.                 gibt es mit Unisched  nicht.   Deshalb kann man die Zeitspanne
  1483.                 ruhig schön groß wählen.  Wenn z.B. um  05:00  eine  Statistik
  1484.                 generiert  werden  soll, und es von eminenter Wichtigkeit ist,
  1485.                 daß die Statistik auf jeden  Fall erstellt wird, wähle man als
  1486.                 Zeitspanne einfach 05:00 24:00 - dann wird die  Statistik  mit
  1487.                 großer  Wahrscheinlichkeit irgendwann erstellt werden, selbst,
  1488.                 wenn der um 04:30  gestartete  Tosser  mal  3 Stunden statt 30
  1489.                 Minuten brauchen sollte.
  1490.  
  1491.                 Und  hier  nochmal  für  alle,   die   prinzipiell   nur   das
  1492.                 Fettgedruckte lesen:
  1493.  
  1494.                 ES  MACHT  FAST NIE SINN, EINE ZEITSPANNE VON NUR EINER MINUTE
  1495.                 ZU DEFINIEREN.  ES IST  FAST  IMMER BESSER, EINE ZEITSPANNE ZU
  1496.                 DEFINIEREN, DIE SCHOEN GROSSZUEGIG BIS ZUM  TAGESENDE  LAEUFT,
  1497.                 WEIL DANN DAS EVENT EVTL. NACHGEHOLT WERDEN KANN.
  1498.  
  1499.                 Und   hier   nochmal  für  die,  die  von  gewissen  hirntoten
  1500.                 Mailer-Schedulern verdorben sind:
  1501.  
  1502.                 EVENT-ZEISPANNEN    VERSCHIEDENER    EVENTS    DUERFEN    SICH
  1503.                 UEBERLAPPEN, UNISCHED HAT DAMIT ABSOLUT KEIN PROBLEM.
  1504.  
  1505.                 Um  darüber  auf  dem  Laufenden  zu  bleiben,   was   bereits
  1506.                 ausgeführt  wurde  und  was noch nicht, verwendet Unisched die
  1507.                 Datei UNISCHED.DAY, die  es  im  aktuellen Verzeichnis anlegt.
  1508.                 Es  ist  daher  keine  gute  Idee,  diese  Datei  zu  löschen.
  1509.                 (Ausnahme:  Du hast den Eindruck, daß Unisched überhaupt nicht
  1510.                 das tut, was Du  konfiguriert  hast  -  in  dem  Fall  ist  es
  1511.                 möglich,  daß  die  DAY-Datei  kaputt  ist,  und Du kannst mal
  1512.                 probieren, sie zu löschen, vielleicht hilfts).
  1513.  
  1514.                 Die  Zeitspanne  darf  auch  die  24:00-Grenze  überschreiten,
  1515.                 Unisched hat  damit  kein  Problem.   (Seit  der wb05 wirklich
  1516.                 nicht mehr ;-)))
  1517.  
  1518.      <weekday>: Defaultmäßig wird die Aktion an  jedem  Wochentag  ausgeführt.
  1519.                 Hier kann  man  aber  explizit  einen  oder  mehrere Wochentage
  1520.                 angeben, an denen  die  Aktion  ausgeführt  werden  soll  (wenn
  1521.                 mindestens  ein  Wochentag  angegeben  wird, wird die Aktion an
  1522.                 allen nicht  angegebenen  Tagen  nicht  ausgeführt).   Die Tage
  1523.                 werden      auf      Deutsch       oder       Englisch       in
  1524.                 Zwei-Buschstaben-Abkürzungen  angegeben:   Mo Di Mi Do Fr Sa So
  1525.                 oder  Mo  Tu  We  Th  Fr  Sa  Su.  Ebenfalls  möglich  sind die
  1526.                 Abkürzungen "Week" (für Mo-Fr) und "WkEnd"  (für  Sa+So).   Bei
  1527.                 Events,  die die 24:00-Grenze überschreiten, wird als Wochentag
  1528.                 der Wochentag *nach* 24:00 genommen!
  1529.  
  1530.      <fromdate>,
  1531.      <todate>:  Normalerweise  wird  die   Aktion   an   jedem  Tag  im  Monat
  1532.                 ausgeführt.  Hier kann man optional angeben,  daß  die  Aktion
  1533.                 nur zwischen zwei bestimmten Daten gestartet werden soll.  Die
  1534.                 Daten können entweder als Tagesnummern, als Kombinationen  aus
  1535.                 Tag  und  Monat,  oder  aus voll spezifizierten Daten mit Tag,
  1536.                 Monat und vierstelliger Jahreszahl bestehen. Beispiele:
  1537.  
  1538.                 01. 01.       ; Event am 1. jeden Monats ausführen
  1539.                 24. 31.       ; Event an jedem Tag vom 24. an ausführen
  1540.                 20. 05.       ; Event  an  jedem  Tag  vom  20.  eines Monats
  1541.                               ; bis einschließlich dem 05. des Folgemonats
  1542.                               ; ausführen
  1543.                 21.06. 22.09. ; Event nur im Sommer (jeden Jahres) ausführen
  1544.                 24.12. 06.01. ; Event  nur  während  der  Weihnachtsferien
  1545.                                 ausführen
  1546.                 01.01.2000 01.01.2000 ; Event nur am 1.1.2000 ausführen
  1547.  
  1548.                 Wie aus den Beispielen zu  erkennen  ist, muß immer ein ganzer
  1549.                 Datumsraum, bestehend aus Anfang und Ende,  angegeben  werden.
  1550.                 Will  man das Event nur an einem bestimmten Tag ausführen, muß
  1551.                 das Ende  des  Datumsraums  das  gleiche  sein  wie der Anfang
  1552.                 (s.o., 01. 01.).
  1553.  
  1554.      even, odd: Wenn das Wörtchen "even" oder "odd" in der Eventdefintionszeile
  1555.                 erscheint, wird das Event nur  ausgeführt,  wenn  die  aktuelle
  1556.                 Wochennummer gerade (even) bzw. ungerade (odd).  Nützlich, wenn
  1557.                 man  z.B.  etwas im 14-Tage-Rhytmus tun will.  Für diesen Zweck
  1558.                 muß  zusätzlich  zu  "even"   oder  "odd"  natürlich  noch  ein
  1559.                 Wochentag angegeben werden, da sonst das Event an  *jedem*  Tag
  1560.                 in den geraden bzw. ungeraden Wochen ausgeführt würde.
  1561.  
  1562.      <action>:  Der Name der Aktion wie zuvor definiert.
  1563.  
  1564.      Beispiele:
  1565.      #010 00:00 24:00 01. 01.       = $Statistik
  1566.      #020 00:00 04:00               = $Exportieren
  1567.      #030 04:05 04:55 Mo We Fr      = $POLL_THOMAS
  1568.      #040 04:10 04:55               = $POLL_Hub
  1569.      #050 12:00 13:00 Mo even       = $Preisliste_in_KOMMERZ_GER_Posten
  1570.      #060 08:00 24:00 01.06. 22.06. = $Tobias_Hat_Demnächst_Geburtstag
  1571.  
  1572.  
  1573.      Periodische Events
  1574.      ------------------
  1575.  
  1576.      Periodische Events dienen dazu, bestimmte Aktionen regelmäßig durchführen
  1577.      zu lassen.  Beispielsweise  könnte  man  alle  15 Minuten ein REXX-Skript
  1578.      aufrufen lassen, das überprüft, ob noch alle Mailer-Tasks oben sind,  und
  1579.      falls  nicht,  diese  neu  startet  (oder den Rechner neu bootet, je nach
  1580.      Gesachmack).  Ein anderes  Anwendungsgebiet  wäre,  z.B.  alle xx Minuten
  1581.      automatisch Netmail exportieren zu lassen.
  1582.  
  1583.      Syntax:
  1584.       #<nr> ~<min> [+<sync> | -<sync>] [exact] [<from> <to>] [<weekday[s]>]
  1585.                           [<fromdate> <todate>] = $<action[s]>
  1586.  
  1587.      <nr>:     Wie  oben  eine Nummer im Bereich von 1 bis einschließlich 999,
  1588.                aufgrund derer das  Event  identifiziert  wird,  nicht mehr und
  1589.                nicht weniger.
  1590.  
  1591.      <min>:    Nach  so  viel  Minuten  wird  die  Aktion  erneut  ausgeführt.
  1592.                ACHTUNG:  Wenn man die  Periodendauer eines bereits bestehenden
  1593.                Events  ändert,  sollte  man   wie   folgt   vorgehen:    Event
  1594.                auskommentieren,   Konfig   neu   einlesen,   Semikolon  wieder
  1595.                entfernen, neue  Periodendauer  einstezen,  Konfig  nochmal neu
  1596.                einlesen.  Ansonsten kann es passieren, daß  die  ersten  zwei,
  1597.                drei  Ausführungen des Events zu falschen Zeiten kommen.  Wenns
  1598.                doch passiert, zur Not das DAY-File löschen (s.u.).
  1599.  
  1600.      <+sync>:  Normalerweise   werden   periodische   Events   an   0:00   Uhr
  1601.      <-sync>:  synchronisiert,  d.h.,  die   projektierten   Ausführungszeiten
  1602.                liegen   dann   bei  0:00  Uhr  +  n  *  Periodendauer.   Diese
  1603.                Synchronisation kann  man  mit  "+<minutenzahl>"  nach "später"
  1604.                oder mit  "-<minutenzahl>"  nach  "früher"  verschieben.   Sinn
  1605.                macht  das,  wenn man viele Aufgaben regelmäßig ausführen läßt,
  1606.                und es  dann  z.B.  bei  60-minütigen  Periodendauern immer zur
  1607.                vollen Stunde zu einem regelrechten "Eventstau" kommt.
  1608.  
  1609.      exact:    Normalerweise holt Unisched  die  Ausführung  des  periodischen
  1610.                Events  nach,  wenn  er  sie  nicht  genau zur synchronisierten
  1611.                Ausführungszeit starten kann.  Dies  ist  in den meisten Fällen
  1612.                sinnvoll (z.B. ist es bei Mail-Export-Events nicht so  wichtig,
  1613.                wann  genau  sie  ausgeführt  werdne,  nur, DASS sie mindestens
  1614.                einmal pro xx Minuten ausgeführt werden), manchmal kann es aber
  1615.                nerven, z.B.,  wenn  man  zu  bestimmten  Uhrzeiten  einen Gong
  1616.                abspielen will o.ä.  Die Angabe der Zeichenfolge "exakt" in der
  1617.                Event-Definition  bewirkt,  daß  das  periodische  Event  NICHT
  1618.                nachgeholt wird, falls es nicht genau zur synchronisierten Zeit
  1619.                ausgeführt werden kann.
  1620.  
  1621.  
  1622.      Die übrigen Parameter haben genau  die  gleiche Syntax wie bei statischen
  1623.      Events, jedoch haben sie eine etwas andere  Bedeutung.   Die  <from>  und
  1624.      <to>  Uhrzeiten  geben  hier  nur eine Zeitspanne an, innerhalb derer das
  1625.      Event ausgeführt werden darf.  Je  nachdem,  wie die Periode gewählt ist,
  1626.      könnte das Event innerhalb dieser Zeitspanne aber auch  mehr  als  einmal
  1627.      ausgeführt werden.  Bitte lies  Dir  auch  den  Text unter den Beispielen
  1628.      sorgfältig durch, um das zu verstehen!
  1629.  
  1630.      Bsp.:
  1631.      #510 ~60 -10 = $Exportieren
  1632.      ;Exportiert immer um 10 Minuten nach  der  vollen  Stunde  (oder  später,
  1633.      ;falls es geanu zu dem Zeitpunkt nicht klappt)
  1634.  
  1635.      #520 ~60 exact 08:00 20:00 Week Sa = $Stundengong
  1636.      ;Ein "Kuckuck", aber nur, wenn es wirklich genau die volle Stunde ist.
  1637.      ;außerdem  ist  unser  Kuckuck  in  der  Nacht  (von 21:00 bis 07:00) und
  1638.      ;Sonntags abgeschaltet, der lieben Nachbarn wegen :-)
  1639.  
  1640.      #530 ~60 +30 exact 08:00 20:00 Week Sa = $Halbstundengong
  1641.      ;Ebenso, aber immer nur zur halben Stunde und NICHT zur vollen
  1642.  
  1643.  
  1644.      Wie  genau  behandelt  Unisched  nun periodische Events?  Zunächst einmal
  1645.      synchronisiert Unisched ein neu definiertes  Event mit 00:00h (oder einer
  1646.      entsprechend verschobenen Zeit, s.o.) des aktuellen Tages.  Wird also ein
  1647.      viertelstündliches Event definiert,  wird  dieses  auch  immer  genau  um
  1648.      xx:00h,  xx:15h, xx:30h und xx:45h ausgeführt.  Etwas wirr wird dies nur,
  1649.      wenn man eine Zeitspanne definiert,  die  kein  Teiler von 1440 (der Zahl
  1650.      der Minuten eines Tages) ist.  Z.B. 27 Minuten.  Dann sind von Tag zu Tag
  1651.      die Ausführzeiten unterschiedlich ...
  1652.  
  1653.      Kann Unisched zur synchronisierten Zeit das Event nicht  ausführen,  weil
  1654.      er  down  ist  oder  ein  Event  mit  höherer Priorität startet, wird das
  1655.      periodische Event nachgeholt - aber  nur solange, bis bereits die nächste
  1656.      Instanz dieses periodischen Events fällig wäre.  So wird  vermieden,  daß
  1657.      es  einen  Stau  von  Events gibt, wenn man ein Event definiert, das jede
  1658.      Minute ausgeführt werden soll, das aber 10 Minuten dauert ...
  1659.  
  1660.      Will man das Nachholen von periodischen Events ganz unterdrücken, muß man
  1661.      die Zeichenkette  "exact"  in  die  Definition  einfügen.   Dies ist aber
  1662.      wirklich NUR für Stunden-Gongs o.ä.  geeigenet  -  alles,  was  irgendwie
  1663.      wichtig ist, sollte man auf jeden Fall nachholen lassen.
  1664.  
  1665.      Die  Parameter  from,  to,  weekdays,  fromday  etc. pp. definieren einen
  1666.      Zeitrahmen, in dem das Event  ausgeführt  werden darf.  An der Behandlung
  1667.      und Synchronisation ändert sich dadurch gar nichts  -  Unisched  arbeitet
  1668.      das  alles  durch,  und  erst, wenn es so weit ist, das Event genau jetzt
  1669.      auszuführen,  wird  geprüft,  ob  die  aktuelle  Uhrzeitn  dem  erlaubten
  1670.      Zeitrahmen liegt oder nicht und evtl. die Ausführung unterlassen.
  1671.  
  1672.      Um diese etwas  theoretische  Ausführungen  zu verdeutlichen, einfach ein
  1673.      paar Beispiele.  Nehmen wir das folgende viertelstündliche Event:
  1674.  
  1675.      #123 ~15 14:50 17:25 = $Tue_Was
  1676.  
  1677.      Dieses Event wird  erstmals  um  15:00h  ausgeführt.   Um  15:10  startet
  1678.      Unisched   ein  anderes  Event,  das  bis  15:20  dauert.   Die  nächsten
  1679.      Ausführzeiten des periodischen Events  123  sind  nun:  15:20 15:30 15:45
  1680.      etc.  Das Event um 15:15 hat sich also auf 15:20 verschoben.  - Um  15:50
  1681.      startet  Unisched  wieder  ein  anderes Event, das bis 16:47 dauert.  Die
  1682.      weiteren Ausführzeiten sind nun 16:47  17:00 17:15.  Die Events um 16:00,
  1683.      16:15 und 16:30 sind also unter den Tisch gefallen.  Das Event  um  16:45
  1684.      hat  sich  auf  16:47 verschoben.  Das Event um 17:30 liegt außerhalb des
  1685.      erlaubten Zeitrahmens.
  1686.  
  1687.  
  1688.   So, nun viel Spaß beim  Einrichten.   Falls  Du Probleme hast, die auch nach
  1689.   mehrmaligem Durchlesen der Doku sich nicht lösen, kannst Du Dich  gerne  bei
  1690.   mir melden. Siehe dazu Kapitel 6.
  1691.  
  1692.  
  1693.   3.4 AUFRUF UND BEDIENUNG
  1694.   ------------------------
  1695.  
  1696.   Unisched wird einfach  durch  Aufruf  von  UNISCHE2.EXE  bzw.   UNISCHED.EXE
  1697.   gestartet.   Dabei wird dann die Datei UNISCHED.CFG (ausschließlich!) in dem
  1698.   Verzeichnis gesucht, in dem sich  die  .EXE-Datei befindet.  Ein anderer Ort
  1699.   oder  anderer  Namen  der  Konfigurationsdatei  kann   mit   dem   Parameter
  1700.   /c<filename> angegeben werden.
  1701.  
  1702.   In diesem Verzeichnis legt Unisched unter dem  Stammnamen  der  Config-Datei
  1703.   (also i.d.R. UNISCHED) noch ein paar weitere Dateien an:
  1704.  
  1705.      UNISCHED.DAY  Enthält Informationen des Schedulers darüber, welche Events
  1706.                    heute schon wann gestartet wurden.  Löscht man diese Datei,
  1707.                    während Unisched nicht läuft,  werden beim nächsten Startup
  1708.                    alle noch ausführbaren Events  nachgeholt.  - Manchmal kann
  1709.                    es nützlich sein, Unisched herunterzufahen, diese Datei  zu
  1710.                    löschen,  und  Unisched  wieder  zu  starten.  Insbesondere
  1711.                    dann, wenn Unisched  periodische  Events  zu anderen Zeiten
  1712.                    ausführt als gedacht.
  1713.  
  1714.      UNISCHED.ACT  Enthält    einen   Dump   des   Logfensters   mitsamt   dem
  1715.                    Backscrollpuffer  und  kann  jederzeit  problemlos gelöscht
  1716.                    werden.  (Es ist aber nicht erforderlich,  diese  Datei  zu
  1717.                    löschen,  im  Gegensatz  zu gewissen anderen Produkten, die
  1718.                    gelegentlich aus dem  Tritt  kommen, wenn das Activity-File
  1719.                    korrupt ist ... <g>).
  1720.  
  1721.      UNISCHED.BSY  Semaphore-Datei, die anzeigt, daß Unisched bereits (mit der
  1722.                    dazugehörigen Config-Datei  UNISCHED.CFG)  läuft.  Unisched
  1723.                    startet dann bei einem erneuten Aufruf nicht.  Es ist somit
  1724.                    eine gute Idee, diese Datei während des Systemstartvorgangs
  1725.                    vorsorglich löschen  zu  lassen.   Falls  der  Rechner  mal
  1726.                    während Abwesenheit neu bootet oder so ...
  1727.  
  1728.   Bsp:    UNISCHED   /Ce:\configs\usched1.cfg
  1729.   Startet  Unisched  mit  der Konfigurationsdatei e:\configs\usched1.cfg.  Die
  1730.   restlichen Dateien nennt  Unisched dann entsprechend e:\configs\usched1.day,
  1731.   usched1.act und usched1.bsy.
  1732.  
  1733.   Wenn  sich ein grundlegender Fehler in der Config befindet, startet Unisched
  1734.   nicht, sondern gibt  (mittlerweile  <g>)  einen  sauberen  Log-Dump aus (die
  1735.   Fehlerursache steht meist fast ganz unten) und wartet 30 Sekunden auf  einen
  1736.   Tastendruck, bevor es sich beendet.  Behebbare Fehler während der Ausführung
  1737.   (Tippfehler in Event-Definitionen) werden  gelogged,  ohne daß sich Unisched
  1738.   beendet.
  1739.  
  1740.   Ist  Unisched  einmal  gestartet,  sieht  man  oben  eine Liste mit belegten
  1741.   Funktionstasten (genaugenommen sind nur  die Funktionstasten aufgeführt, die
  1742.   der User selbst definiert hat),  gefolgt  von  einer  Anzeige,  die  angibt,
  1743.   welche  statischen  bzw. periodischen Events als nächstes mit der Ausführung
  1744.   dran  sein  werden,  und  schließlich  (der  normalerweise  größte  Teil des
  1745.   Fensters) folgt das Logfenster,  in  dem  Events  (Auslösende  Ursachen  von
  1746.   Aktionen)  und  Aktionen  (was  so passiert) bei ihrem Auftreten aufgelistet
  1747.   werden.
  1748.  
  1749.   Zur Bedienung von Unisched ist nicht viel zu sagen.   Die  folgenden  Tasten
  1750.   sind vorbelegt und können nicht verändert werden:
  1751.  
  1752.   Alt+X          Unisched benden.
  1753.   Cursor Hoch:   Das Logfenster um eine Zeile nach oben (zurück) scrollen.
  1754.   Cursor Runter: Das Logfenster um eine Scrolle nach unten (wieder vorwärts)
  1755.                  scrollen.
  1756.   Page Up:       Das Logfenster um eine ganze Seite zurückscrollen.
  1757.   Page Down:     Das Logfenster um eine ganze Seite vorwärtsscrollen.
  1758.   Home (Pos1):   Ganz  an  den  Anfang  (zum  ältesten Eintrag) des Logfensters
  1759.                  springen.
  1760.   End (Ende):    Ganz  ans  Ende  (zum  aktuellsten  Eintrag)  des  Logfensters
  1761.                  springen.
  1762.  
  1763.   Unter  OS/2  kann  man  Unisched  neuerdings  auch  durch  Klick   auf   den
  1764.   Close-Button   sauber   beenden;   ebenso   beendet   sich   Unisched   beim
  1765.   Systemabschluß  korrekt.   Dummerweise muß man jedoch vorher immer noch eine
  1766.   Bestätigungsmeldung des  Betriebssystems  ("Diese  Sitzung enthält eventuell
  1767.   ...") wegklicken.  Wen dies stört, der kann diese Meldung unter  Warp  4  im
  1768.   Systemobjekt,  Notepad  "Bestätigungen", generell abschalten (gilt dann auch
  1769.   für andere VIO-Programme).  Unter Warp 3  kann man ein Tool namens "SendYes"
  1770.   verwenden, um den gleichen Effekt zu erhalten.
  1771.  
  1772.   Weitere Tasten sind in  Unisched  nicht  belegt.   Alle  anderen  Funktionen
  1773.   können  bzw.  müssen  mit  Hilfe  der KeyXXX-Statements in der Config selbst
  1774.   erzeugt werden.  Beispiele:
  1775.  
  1776.   Eine DOS-Shell  gefällig?
  1777.  
  1778.     KeyAltJ = EXEC COMMAND.COM  bzw.
  1779.     KeyAltJ = EXEC CMD.EXE
  1780.  
  1781.   Konfiguration aus Unisched heraus editieren?
  1782.  
  1783.     $EditConfig = EXEC c:\msdos\edit.exe e:\mailer\sys\unisched.cfg
  1784.     $ReadConfig = RESTART
  1785.     $Konfigurieren = $EditConfig $ReadConfig
  1786.     KeyAltC = $Konfigurieren
  1787.  
  1788.   Die Möglichkeiten sind unbegrenzt.
  1789.  
  1790.  
  1791.  
  1792. 4. UNISCHED FUER FORTGESCHRITTENE
  1793. ---------------------------------
  1794.  
  1795.   4.1 Online-Tossing
  1796.   ------------------
  1797.  
  1798.   4.1.1 - Was ist Online-Tossing?
  1799.  
  1800.     Normalerweise erhältst Du von Deinem Uplink z.B. zwei 2 MB-Pakete in einem
  1801.     Poll.  Erst wenn sämltiche Pakete  komplett empfangen sind und die Session
  1802.     beendet ist, wird Dein Tosser gestartet.  Die Zeit, bis die Mail  komplett
  1803.     für  Downlinks von Dir zur Verfügung steht, ist also die Zeit, die für den
  1804.     Transfer benötigt wird,  plus  die  Zeit,  die  fürs Tossen benötigt wird.
  1805.     Ruft Dein Downlink schon an, während Du noch die letzten 50 KB von  den  4
  1806.     MB transferierst, bekommt er - NICHTS.
  1807.  
  1808.     Mit Online-Tossing bittest  Du  Deinen  Uplink,  Dir mehrere kleine Pakete
  1809.     (z.B. 10 400K - Pakete) zu schicken.  Mit modernen Tossern  ist  das  kein
  1810.     Problem.   Unisched  überwacht kontinuierlich Deinen Inbound.  Sobald dort
  1811.     ein  Mailpaket  *komplett   empfangen*   bereitliegt,  startet  er  Deinen
  1812.     Tossertask.  Dieser kann nun das erste / die ersten Pakete schon eintossen
  1813.     und bereitlegen, während der Mailer die  restlichen  Pakete  transferiert.
  1814.     Solange  der  Tosser  dies tut, setzt Unisched die Inbound-Überprüfung aus
  1815.     (kann  aber   sonstige   Funktionen,   wie   Polls  generieren,  weiterhin
  1816.     ausführen).  Erst, wenn er von  dem  gestarteten  Tossertask  signalisiert
  1817.     bekommt,  daß  er  fertig ist, schaut er wieder in den Inbound und startet
  1818.     den Tosser ggf. erneut.   Wenn  Dein  Downlink  nun anruft, während Du die
  1819.     letzten 50 KB von den 4  MB  transferierst,  bekommt  er  bereits  3.6  MB
  1820.     mitgesendet.
  1821.  
  1822.   4.1.2 - Systemanforderungen für Online-Tossing.
  1823.  
  1824.     1. Du solltest Dich mit Unisched und Deinem System  schon  gut  auskennen.
  1825.        Begriffe wie Semaphore-Datei, Unprotected  Inbound, Maximum Pack Ratio,
  1826.        Badmail etc. sollten bei Dir keine Bauchschmerzen hervorrufen.
  1827.     2. Dein  Mailer  muß  File-Sharing  unterstützen, d.h.  Pakete während des
  1828.        Empfangs  mit  SH_DENYALL   öffnen.    Ansonsten  kann  Unisched  nicht
  1829.        erkennen, ob das Paket bereits empfangen ist, oder nicht.
  1830.     3. Dein System muß einwandfrei multitaskingtauglich sein.
  1831.     4. Der Tosser muß einwandfrei konfiguriert sein.
  1832.  
  1833.     Bemerkungen zu  2.:   Getestet  habe  ich  selbst  McMail,  Binkley  XE und
  1834.     Cantaloup.  McMail  1.0g5  hatte  kein  Problem.   Binkley  XE  unterstützt
  1835.     File-Sharing  in  allen Versionen außer den DOS-Versionen XR1 und XR2.  Die
  1836.     OS/2-Versionen und die DOS-Versionen  ab  XR3 sind kein Problem.  Cantaloup
  1837.     war auch unproblematisch.  Zu beachten ist, daß man unter DOS das  Programm
  1838.     SHARE.EXE  laden  muß, um File-Locking-Support zu erhalten.  Ob Dein Mailer
  1839.     Online-Tossing-tauglich ist, kannst  Du  wie  folgt herausfinden:  Requeste
  1840.     Dir ein großes File, das ein bißchen  zur  Übertragung  braucht.   Versuche
  1841.     nun,  bereits  während der Übertragung dieses File mit TYPE anzuzeigen oder
  1842.     sonstwie zu lesen.  Dabei mußt  Du eine SHARING VIOLATION als Fehlermeldung
  1843.     erhalten.  Kriegst Du das nicht, ist Dein Mailer /  Dein  Betriebssystem  /
  1844.     Dein  Netzwerk  nicht  geeignet.   Ich bitte hierbei um Rückmeldung, welche
  1845.     Mailersoftware  hier  außer  der  von  mir  getesteten  problemlos  ist und
  1846.     insbesondere, welche *nicht* problemlos ist.
  1847.  
  1848.     Bemerkungen zu 3.:  Heutzutage schimpft  sich ja fast jedes Betriebssystem
  1849.     und   vieles,    wo    "Betriebssystem"    auf    der    Packung    steht,
  1850.     multitaskingtauglich.  Es ist dann meist auch  kein  allzugroßes  Problem,
  1851.     eine  kleine  Zwei-Line-BBS zu fahren mit einem Background-Tossertask.  In
  1852.     den  meisten  Fällen  läuft  der  Tossertask  ja  eh  nicht  während eines
  1853.     Transfers, und wenn doch,  sind  kurzfristige  geringfüge Rückgänge in der
  1854.     cps-Rate ja nicht so  tragisch.   Mit  Online-Tossing  forcierst  Du  aber
  1855.     geradezu,  daß  praktisch  während  der  ganzen Transferzeit grundsätzlich
  1856.     immer der Tosser läuft.  Sagen wir, daß das einen Rückgang der cps-Rate um
  1857.     300 cps bedingt,  dann  verursachst  Du  durch  Einsatz des Online-Tossing
  1858.     Deinen Downlinks nicht von der Hand zu weisende Mehrkosten.
  1859.  
  1860.     Ideal geeignet für  den  Einsatz  von  Online-Tossing  ist  ein System mit
  1861.     folgenden Merkmalen:  80486dx2-66, SCSI, FIFOs, aktive ISDN-Adapter,  OS/2
  1862.     Warp  3 mit nativen OS/2-Mailern, einem nativen OS/2-Tosser und Ray Gwinns
  1863.     SIO als Schnittstellentreiber.   Eine  derartige  Konfiguration ist in der
  1864.     Lage, Online-Tossing auch im Multilinebetrieb ohne den geringsten  Einfluß
  1865.     auf  die  cps-Rate  durchzuführen.  Bei allen anderen Konfigurationen kann
  1866.     ich  keinerlei  Garantien  abgeben.  Möglicherweise geht es auch, aber das
  1867.     mußt Du selbst herausfinden.
  1868.  
  1869.     Bemerkungen zu 4:  Du mußt ABSOLUT sicherstellen,  daß  Dein  Tosser  ALLE
  1870.     PKTs  im  Inbound  und  im  Protected Inbound sowie ALLE Arcmail-Pakete im
  1871.     Protected Inbound ENTFERNT.  Wenn er  ein Archiv nicht entpacken will oder
  1872.     kann, muß er es umbennen oder sonstwohin verschieben.   Wenn  er  ein  PKT
  1873.     verweigert, muß er es in BAD umbenennen.  Ansonsten fängt sich Unisched in
  1874.     einer  ENDLOSSCHLEIFE,  weil der Tosser immer wieder für das gleiche Paket
  1875.     aufgerufen wird.
  1876.  
  1877.     Online-Tossing is not for the  weak  of  heart.   Unisched macht es Dir so
  1878.     einfach wie möglich, aber es ist trotzdem problemlos möglich,  damit  Dein
  1879.     System  lahmzulegen,  Downlinks  zu  vergraulen, etc. pp.  Sage nicht, ich
  1880.     hätte Dich nicht gewarnt.  Wenn  man  aber  sein System im Griff hat, kann
  1881.     Online-Tossing eine sehr feine Sache  sein.   Ich selbst setze es übrigens
  1882.     ein, ohne dabei Probleme zu haben, nur falls jemand daran zweifeln sollte.
  1883.     :-)
  1884.  
  1885.  
  1886.   4.1.3 - Jetzt aber ran ans Werk!
  1887.  
  1888.      Folgende (in Kapitel 3 nicht erwähnte) Konfigurationsstatements sind  für
  1889.      Online-Tossing relevant.  Lese Dir das *genau* und *sorgfältig* durch und
  1890.      aktiviere die Statements erst, wenn Dir alles klar ist.
  1891.  
  1892.  
  1893.      Inbound = <inbound directory>
  1894.      -----------------------------
  1895.  
  1896.      In   dem  angegebenen  Directory  sucht  Unisched  (ausschließlich)  nach
  1897.      .PKT-Dateien.  Das Keyword INBOUND  darf  in  der  Config mehr als einmal
  1898.      auftauchen, so daß es möglich ist, durch Wiederholung der  Zeile  mehrere
  1899.      Verzeichnisse  anzugeben,  z.B.  den  Unprotected  Inbound  und den Local
  1900.      Inbound.
  1901.  
  1902.      Bsp:
  1903.      Inbound=e:\bt\inound
  1904.      Inbound=e:\bt\local
  1905.  
  1906.  
  1907.      ProtIn = <directory>
  1908.      --------------------
  1909.  
  1910.      In dem  angegebenen  Directory  sucht  Unisched  nach  .PKT-Dateien *und*
  1911.      Arcmail-Paketen (*.MO?, *.TU?, ..., *.SU?).  Auch  hier  könnten  mehrere
  1912.      Verzeichnisse  angegeben  werden, mir ist aber gerade kein Anwendungsfall
  1913.      dafür bewußt.
  1914.  
  1915.      Bsp:
  1916.      ProtIn=e:\bt\secure
  1917.  
  1918.  
  1919.      TosserSema = <dateiname>
  1920.      ------------------------
  1921.  
  1922.      Diese Datei zeigt an, ob  gerade  der  Tosser  aktiv ist oder nicht.  Sie
  1923.      wird, wenn kein Pfadname angegeben ist, im SemaDir (siehe dort) abgelegt.
  1924.      Unisched legt diese Datei automatisch an, wenn es nach  einem  gefundenen
  1925.      Mailpaket  den  Tosser startet.  Umgekehrt wird der Tosser nur gestartet,
  1926.      wenn diese Datei noch  nicht  existiert.   Es  ist deshalb eine sehr gute
  1927.      Idee, diese Datei beim Systemstart vom Startup-Skript LOESCHEN zu lassen,
  1928.      sonst läuft der Tosser z.B. nach einem Stromausfall u.U. nicht mehr.
  1929.  
  1930.      Bsp:
  1931.      TosserSema = e:\sema\tossing.sem
  1932.  
  1933.  
  1934.      TosserAction = $<action1> [$<action2> ...]
  1935.      ------------------------------------------
  1936.  
  1937.      Die eigentliche Aktion, die nach einem  gefundenen  Mailpaket  ausgeführt
  1938.      werden  soll.  Beim Entwerfen der zugehörigen Batch sind einige besonders
  1939.      wichtigen Regeln zu beachten:
  1940.  
  1941.      - Ich betone  es  nochmal,  die  Batch  MUSS  MUSS  MUSS  UNBEDINGT  alle
  1942.        PKT-Dateien  und  ARC-Mail-Packets  aus  den  angegebenen  Inbound- und
  1943.        ProtIn-Verzeichnissen entfernen.  Wenn  das  durch die Arbeitsweise des
  1944.        Tossers nicht sichergestellt ist, sollte man dies  am  Ende  der  Batch
  1945.        durch RENAMEs von Hand sicherstellen.
  1946.      - Am Ende der Batch  MUSS  die unter TosserSema angegebene Datei gelöscht
  1947.        werden, um Unisched zu singnalisieren, daß es den Tosser gegebenenfalls
  1948.        erneut wieder starten kann.
  1949.      - Es ist nicht ratsam, in dieser Batch den Ticker anzuwerfen.  Man sollte
  1950.        nur  Echomail  und Netmail tossen.  Grund:  Der Ticker könnte anlaufen,
  1951.        wenn zwar schon ein  TIC-File,  aber  noch nicht die dazugehörige Datei
  1952.        angekommen sind.  Dann landet das schon mal  im  BAD-Verzeichnis.   Aus
  1953.        genau  diesem  Grund  reagiert  Unisched  auch gar nicht auf TIC-Files.
  1954.        (Das kann man mit CheckTIC  =  Yes  ändern, wird aber nicht empfohlen).
  1955.        Den Ticker solltest Du erst nach Session-Ende starten - dazu gibts  die
  1956.        Tosser-Semaphoren, siehe unten.
  1957.  
  1958.      Bsp:
  1959.      TosserAction = $Import_Mail_Only
  1960.  
  1961.  
  1962.      Tosser-Sempahore-Dateien
  1963.      ------------------------
  1964.  
  1965.      Syntax: +<path+filename> = $<action name> [$<action name> ... ]
  1966.  
  1967.      Auf die auf diese Art definierten  Semaphore-Dateien  funktionieren  wird
  1968.      genau  so  geprüft  wie  auf  normale  (mit  *  statt  mit + deklarierte)
  1969.      Semaphore-Dateien (siehe dort), mit  dem  einen Unterschied, daß hier nur
  1970.      reagiert  wird,  wenn  die  unter  TosserSema  angegebene   Datei   nicht
  1971.      existiert.
  1972.  
  1973.      Du  brauchst  das für folgenden Zweck:  Vermutlich wirst Du mit dem unter
  1974.      TosserAction angegebenen Skript/Batch  nicht die komplette Importprozedur
  1975.      durchlaufen.  Der Ticker z.B. *darf* gar  nicht  aufgerufen  werden,  und
  1976.      vielleicht  möchtest  Du  ja  auch noch andere Aufgaben trotzdem nur nach
  1977.      Sessionende ausführen.  Dann mußt  Du  weiterhin auf die MailIn-Sempahore
  1978.      Deines Tossers (BTMAIL.IN o.ä.) prüfen.  Würdest Du das  jetzt  weiterhin
  1979.      mit  der Methode mit * machen, dann könnte es passieren, daß die Aktionen
  1980.      nach Sessionende schon ausgeführt werden,  während noch getosst wird.  Um
  1981.      das zu verhindern, prüfst Du mit der + - Methode, dann  wird  die  Aktion
  1982.      erst ausgeführt, wenn alle Pakete getosst sind.
  1983.  
  1984.      Umgekehrt  wird bei der + - Methode auch vor Ausführen der Aktion die bei
  1985.      TosserSema  angegebene  Datei  angelegt,  so  daß  diese  Datei  von  der
  1986.      angegebennen Aktion GELOESCHT WERDEN MUSS.  Genau wie bei TosserAction.
  1987.  
  1988.      Bsp:
  1989.      +btmail.in = $ImportAbschluss
  1990.  
  1991.  
  1992.   4.1.4 - Viel Spass!
  1993.  
  1994.      Nachdem Du das jetzt alles konfiguriert  hast, lasse Dir erst nochmal die
  1995.      komplette Logik der Konfiguration  durch  den  Kopf  gehen.   Ich  möchte
  1996.      nochmals betonen, dass man hier im Zweifelsfall viel verbocken kann ...
  1997.  
  1998.  
  1999.  
  2000.   4.2 Logausgaben fallweise unterdrücken
  2001.   --------------------------------------
  2002.  
  2003.   In  manchen Fällen ist es sehr ärgrlich, daß sich ein bestimmtes Event immer
  2004.   wieder im Logfile meldet.  Hierzu  gehören  z.B. periodische Events mit sehr
  2005.   hoher Frequenz wie z.B. das Erstellen einer Alive-Semaphore o.ä.   Man  kann
  2006.   nun periodische Events gar nicht mehr anzeigen lassen, allerdings möchte man
  2007.   alle anderen außer dem einen bestimmten vielleicht doch sehen.
  2008.  
  2009.   Deshalb   gibt   es   neben   der  Möglichkeit,  die  Logausgaben  über  die
  2010.   Schlüsselworte  DiskLog,  ScreenLog  und   PipeLog   zu  steuern,  noch  die
  2011.   Möglichkeiten, einzelne Aktionen oder Events "zu  klammern".   Man  schließt
  2012.   hierzu   die   zugehörige   Zeile   in  der  Konfiguration,  das  kann  eine
  2013.   Aktionsdefinition oder eine  Eventdefinition  sein,  in eckige Klammern ein.
  2014.   Es wird dann alles, was mit dieser Aktion oder diesem  Event  zusammenhängt,
  2015.   *nicht*  geloggt,  weder  im  Disklog,  noch  im  Fenster, noch in der Pipe,
  2016.   unabhängig vom Loglevel. Beispiel:
  2017.  
  2018.   $Create_Alivesemaphore = SEMAPHORE e:\flags\unisched.alv
  2019.   #111 ~1 = $Create_Alivesemaphore
  2020.  
  2021.   Dies führt zu sehr häufigen  Einträgen  im Logfile.  Ändert man diese Zeilen
  2022.   nun entweder so:
  2023.  
  2024.   [ $Create_Alivesemaphore = SEMAPHORE e:\flags\unisched.alv ]
  2025.   #111 ~1 = $Create_Alivesemaphore
  2026.  
  2027.   oder so:
  2028.  
  2029.   $Create_Alivesemaphore = SEMAPHORE e:\flags\unisched.alv
  2030.   [ #111 ~1 = $Create_Alivesemaphore ]
  2031.  
  2032.   oder so:
  2033.  
  2034.   [ $Create_Alivesemaphore = SEMAPHORE e:\flags\unisched.alv ]
  2035.   [ #111 ~1 = $Create_Alivesemaphore ]
  2036.  
  2037.   ab, dann wird nichts, was mit  der  Alive-Semaphore  zu  tun  hat,  mehr  im
  2038.   Logfile erscheinen.
  2039.  
  2040.  
  2041.  
  2042.   4.3 Auf Semaphoren mit Zeitverzögerung reagieren
  2043.   ------------------------------------------------
  2044.  
  2045.   Wir erinnern uns an Kapitel 3 zurück. Mit einer Zeile wie der folgenden:
  2046.  
  2047.   *btmail.in = $Tossen
  2048.  
  2049.   kannst Du, sobald die Datei  btmail.in  auftaucht,  eine  Aktion  (hier  den
  2050.   Tosser)  starten  und  gleichzeitig die Datei löschen (Flagfile-Semaphoren).
  2051.   Mit einer Ziele wie der folgenden:
  2052.  
  2053.   ^\mailer\inbound\xxxfiles.zip = $Fileliste_Entpacken
  2054.  
  2055.   kannst Du, sobald eine Datei  auftaucht,  eine Aktion starten, ohne daß die
  2056.   Datei gelöscht wird.  Die Aktion wird erst dann erneut ausgelöst,  wenn  die
  2057.   Datei  entweder  verschwindet  und  dann wieder neu auftaucht, oder wenn sie
  2058.   zumindest ihr Datum oder ihre Größe ändert. (Triggerfiles).
  2059.  
  2060.   Manchmal  kann  es jedoch wünschenswert sein, nicht instantan bei Erscheinen
  2061.   einer Datei eine Aktion auszulösen, sondern  nur, wenn die Datei schon älter
  2062.   als eine bestimmte Anzahl von Minuten oder  Stunden  ist  (oder  alternativ:
  2063.   erst,  wenn  die  Datei  mindestens  eine bestimmten Anzahl von Minuten lang
  2064.   vorhanden ist).
  2065.  
  2066.   Das geht, indem Du unmittelbar hinter dem * (der ein Flagfile markiert) bzw.
  2067.   hinter dem ^ (der ein Triggerfile markiert) in <spitzen> Klammern die Anzahl
  2068.   von Minuten angibst, um die  das  auslösen des Events verzögert werden soll.
  2069.  
  2070.   Hier zwei Anwendungsbeispiele:
  2071.  
  2072.   4.3.1 Mails etwas verzögert exportieren
  2073.  
  2074.      ^<-10>echotoss.log = $Exportieren
  2075.  
  2076.      Viele Mail-Editoren schreiben, wenn Du eine Mail erstellt hast, den Namen
  2077.      der Area,  in  der  die  Mail  geschrieben  wurde,  in  eine Datei namens
  2078.      echotoss.log (für Squish) oder netmail.jam bzw. echomail.jam  (für JAM).
  2079.  
  2080.      Es  macht  Sinn,  daß  Du, sobald eine solche Datei existiert, den Tosser
  2081.      startest, um  ihn  die  geschriebene  Mail  exportieren  zu lassen.  (Der
  2082.      Tosser liest die Datei übrigens aus und scanned nur die Areas, die in ihr
  2083.      gelistet sind, so daß das Exportieren recht schnell von statten geht).
  2084.  
  2085.      Jedoch möchtest Du den Tosser vielleicht nicht  unmittelbar,  nachdem  Du
  2086.      die  Mail erstellt hast, starten - es könnte ja sein, daß Dir kurz darauf
  2087.      einfällt, daß Du ja noch etwas  anfügen  wolltest, oder Du gehst aufs Klo
  2088.      und denkst dabei nochmal drüber nach, ob Du die Flame von eben vielleicht
  2089.      doch nicht abschicken wolltest ;-).
  2090.  
  2091.      Deshalb  konfigurierst  Du  echotoss.log  nicht  einfach   als   normales
  2092.      Triggerfile   (wir   verwenden   keine   Flagfiles,  da  der  Tosser  die
  2093.      echotoss.log  auswerten  möchte  und  wir  sie  deshalb  nicht  schon von
  2094.      Unisched löschen lassen wöllen), sondern als verzögertes Triggerfile.  In
  2095.      obigem  Beispiel  hast  Du  nach  schreiben  der  Mail  noch  10  Minuten
  2096.      Bedenkzeit, bevor die Mail dann vom Tosser gescanned und exportiert wird.
  2097.  
  2098.   4.3.2 Überprüfen, ob der Mailer noch läuft
  2099.  
  2100.      *<-30>e:\flags\cl-alive.01 = $Aktion
  2101.  
  2102.      Der  Mailer  Cantaloup  legt,   wenn   er   startet,  eine  Datei  namens
  2103.      cl-alive.<tasknummer>  an.   Wenn  nun  Cantaloup  #1  startet,   "sieht"
  2104.      Unisched in obigem Beispiel die Datei zunächst nicht, weil sie jünger als
  2105.      eine halbe Stunde.
  2106.  
  2107.      Was für einen Sinn würde es jetzt aber machen, 30 Minuten nach dem  Start
  2108.      von Cantaloup eine Aktion ausführen zu lassen?  Nun, gar keinen.  Man muß
  2109.      nämlich wissen, daß Cantaloup den "Timestamp" dieser Datei alle 5 Minuten
  2110.      wieder  aufs  aktuelle  Datum setzt.  Das Resultat ist, daß die Datei nie
  2111.      "älter" als 5 Minuten zu sein  scheint,  und Unisched die Datei nie sehen
  2112.      wird.
  2113.  
  2114.      Der einzige Fall, in dem die Aktion in obigem Beispiel  ausgeführt  wird,
  2115.      ist  der,  daß  Cantaloup  abstürzt.   Dann  bleibt die Datei cl-alive.01
  2116.      liegen, ihr Timestamp wird  nicht  mehr  angepaßt,  und nach einer halben
  2117.      Stunde schließlich merkt  Unisched  davon  und  kann  eine  entsprechende
  2118.      Aktion  ausführen  (z.B.  Alarm  schlagen, oder den Rechner booten).  Man
  2119.      sieht daraus übrigens deutlich, daß  dies ein fiktives Beispiel ist, denn
  2120.      Cantaloup stürzt nicht ab.  Wenn Du  allerdings  einen  DOS-Mailer  hast,
  2121.      könnte  das  anders aussehen :-).  Dateien, die vergleichbarm it cl-alive
  2122.      sind, werden  von  fast  jedem  gängigen  Mailer  (teils  nur auf Wunsch)
  2123.      angelegt.
  2124.  
  2125.      Als Anmerkung zum Schluß möchte ich  darauf  hinweisen,  daß  mit  obiger
  2126.      Zeile  der  Fall,  daß Cantaloup sich halbwegs geordnet beendet (z.B. mit
  2127.      einem  Errorlevel,  der  in  der  Batch,  die  Cantaloup  aufruft,  nicht
  2128.      abgefangen wird, so daß die Batch beendet wird und netto der Mailer nicht
  2129.      mehr läuft),  auch  nicht  erkannt  wird,  weil  in  dem  Falle die Datei
  2130.      cl-alive ja gelöscht wurde und gar nicht mehr existiert.  Deshalb  sollte
  2131.      man vielleicht noch ein invertiertes Triggerfile wie folgt definieren:
  2132.  
  2133.      !^e:\flags\cl-alive.02 = $Start_CL_Task_1
  2134.  
  2135.   Da  im  letzten  Beispiel invertierte Triggerfiles zur Sprache kamen, möchte
  2136.   ich  noch  auf   eines   hinweisen:    Verzögertes  Ausführen  von  Aktionen
  2137.   funktioniert nur mit normalen Trigger- und Flagfiles, d.h., man kann prüfen,
  2138.   ob eine Datei  seit  mindestens  xx  Minuten  (unverändert)  existiert.
  2139.  
  2140.   Es funktioniert jedoch nicht mit  invertierten Trigger- und Flagfiles, d.h.,
  2141.   man  kann  nicht  prüfen,  ob  eine  Datei  bereits  mindestens  xx  Minuten
  2142.   "verschwunden ist".  Eine Syntax wie !^<-30>blah = $blubb wäre  daher  nicht
  2143.   zulässig.   Denk mal drüber nach - eine existente Datei hat einen Timestamp,
  2144.   an dem man prüfen kann, wie alt sie ist, eine nicht-existente Datei hat aber
  2145.   auch keinen Timestamp, mit dem prüfen könnte, wie lange sie schon nicht mehr
  2146.   existiert ...
  2147.  
  2148.  
  2149. 5. SHAREWARE
  2150. ------------
  2151.  
  2152. Unisched  ist  (C)  1996-99 by Tobias Ernst.  Diese Software ist Shareware und
  2153. darf innerhalb einer Testphase von  30  Tagen kostenlos verwendet werden.  Die
  2154. Sharewareversion darf  beliebig  weitergegeben  werden,  sofern  das  Programm
  2155. vollständig  und  unmodifiziert weitergegeben wird.  Nach der Testphase von 30
  2156. Tagen muß man sich registrieren lassen.
  2157.  
  2158. Die  Registrierung   beträgt   EUR   12   und   gilt   für   alle  zukünftigen
  2159. textorientierten   Versionen   von   Unisched   für   OS/2   und   DOS.    Das
  2160. Registrier-Formular   findet   sich   in   der   Datei   REGISTER.GER.     Die
  2161. Sharewareversion  ist  im  Funktionsumfang nicht eingeschränkt.  Eine Garantie
  2162. für Funktionstüchtigkeit des Programmes  oder  eine  Verantwortung für aus der
  2163. Nutzung entstehende  Folgeschäden  kann,  soweit  gesetzlich  zulässig,  nicht
  2164. übernommen werden.
  2165.  
  2166. Wer  die Sharewareversion länger als 30 Tage unregistriert verwendet, den möge
  2167. der Blitz beim Sch...en treffen ;-))).
  2168.  
  2169.  
  2170.  
  2171. 6. KONTAKT UND SUPPORT
  2172. ----------------------
  2173.  
  2174. Fidonet (bevorzugt):
  2175.  
  2176.   Ich lese regelmäßig die folgenden Echoareas:
  2177.  
  2178.       FIDO_UTIL
  2179.       OS2BBS.GER
  2180.       FIDOSOFT.MISC.GER
  2181.  
  2182.   Alle diese Areas sind gut geeignet, um über Unisched zu diskutieren, und ich
  2183.   werde dort gestellte Fragen zu Unisched auch beantworten.
  2184.  
  2185.   Ansonsten bin ich über Fidonet Netmail erreichbar unter
  2186.  
  2187.       Tobias Ernst @ 2:2476/418
  2188.  
  2189.   Die jeweils neuste Version von Unisched ist verfügbar via  Fido  Filerequest
  2190.   unter dem Magic "UNISCHED" bei 2:2476/418.
  2191.  
  2192. Internet:
  2193.  
  2194.   Es  gibt  eine  Mailingliste  über  Unisched.  Ich werde dort neue Versionen
  2195.   ankündigen, und jeder User darf  dort  Fragen stellen oder (falls nötig <g>)
  2196.   Kritik anbringen :-).  Um sich die Mailingliste zu abonnieren  schreibt  man
  2197.   eine e-mail an
  2198.  
  2199.                unisched-list-request@bmtmicro.net
  2200.  
  2201.   and gibt im Text der Mail als einzige Zeile folgendes an:
  2202.  
  2203.                subscribe
  2204.  
  2205.   Man kann mich auch per e-mail erreichen unter
  2206.  
  2207.                ternst@bmtmicro.net
  2208.  
  2209.   ich beantworte Fragen aber lieber in der Mailing-Liste :-).
  2210.  
  2211.   Die jeweils neuste Version von Unisched ist verfügbar bei:
  2212.  
  2213.                ftp://ftp.bmtmicro.com/bmtmicro
  2214.  
  2215. [EOF]
  2216.