Tip – QSYSOPR Autoreply mit *N
Nov 11th, 2008 | By Redaktion | Category: Hot-Tipsvon Gary Guthrie
Frage
Ich habe ein Programm (Abbildung 1) geschrieben, das eine Abfragenachricht an die Nachrichtenwarteschlange QSYSOPR sendet und den Operator auffordert, eine Diskette in einen PC einzulegen. Ist die Diskette eingelegt, muss die Nachricht mit G (fortsetzen) oder C (abbrechen) beantwortet werden. Diese Verfahren hat einwandfrei funktioniert, bis das System plötzlich vor einiger Zeit begann, die Nachricht automatisch mit *N zu beantworten. Dies aber ist eine ungültige Antwort (nämlich nicht G oder C) und führt dazu, dass das Programm sich in eine endlose Schleife begibt, aus der fortgesetzt die Abfragenachricht an die Nachrichtenwarteschlange gesendet wird. Da das System diese Nachricht aber auch fortgesetzt mit *N beantwortet, füllt sich die Nachrichtenwarteschlange in kürzester Zeit, was letztlich zu einem Stillstand des gesamten Systems führt. Die System Reply List ist leer und niemand hat Veränderungen an dem Programm vorgenommen. Was veranlasst das System, mit *N zu antworten und was kann ich unternehmen, um das Problem zu vermeiden?
Antwort
Als erstes sollte das Programm abgeändert werden, damit ein mögliches Auftreten von *N als Antwort gehandhabt werden kann. Diese Änderung verhindert, dass das Programm in eine unendliche Schleife gerät, aus der dann letztlich das Problem resultiert. Nachfolgend habe ich ein paar Informationen zu Nachrichtenwarteschlangen zusammengestellt, die zum Verständnis des Problems beitragen. Für Nachrichtenwarteschlangen lassen sich vier Modi definieren:
- *Hold – Nachrichten werden in der Nachrichtenwarteschlange gehalten, bis sie von einem Benutzer oder einem Programm angefordert werden.
- *Break – Trifft eine Nachricht in der Nachrichtenwarteschlange ein, wird der Job, dem die Nachrichtenwarteschlange zugeordnet ist, unterbrochen und das für diesen Fall spezifizierte Programm (oder DspMsg) wird aufgerufen.
- *Notify – Trifft eine Nachricht in der Nachrichtenwarteschlange ein, wird der interaktive Job, dem die Nachrichtenwarteschlange zugeordnet ist, mit einem Nachrichtenindikator und/oder einem akustischen Signal informiert.
- *Dft – Nachrichten, die eine Antwort erwarten, werden automatisch mit ihrem definierten Unterlassungswert beantwortet.
Die Antwort *N entspricht der Antwort null. In Ihrem Fall erhalten Sie eine Antwort, weil die Nachrichtenwarteschlange sich im Modus *Dft befindet. Die Antwort ist null, weil für die von Ihnen ausgegebene Nachricht keine Standardantwort definiert wurde. Mit der interaktiven Anweisung DspMsg lässt sich der aktuell zugeordnete Modus der Nachrichtenwarteschlange feststellen. Die Unterstützungsebene sollte bei dieser Abfrage auf Intermediate eingestellt sein. Der zugeordnete Modus erscheint in der oberen rechten Ecke der Bildschirmanzeige.