5 Stimmen

Wie man einen Job absichtlich beendet

Ist es möglich, Ihre Arbeit absichtlich durch ein COBOL-Programm zu beenden? Angenommen, ich habe eine Eingabedatei mit Header-, Detail- und Trailer-Datensätzen. Ich werde ein COBOL-Programm schreiben, das diese Datei liest. Wenn keine Detail-Datensätze in dieser Datei gefunden werden, möchte ich meinen Auftrag abbrechen, indem ich eine Abend-Meldung und einen Abend-Code eingebe. Ist das möglich?

8voto

NealB Punkte 16282

Wollen Sie Ihr Programm ABENDEN oder nur eine RETURN-CODE ?

Ich vermute, dass das Setzen eines RETURN-CODE, das Schreiben einer Nachricht zu schreiben und dann das Programm mit einer STOP RUN o GOBACK ist alles, was was Sie wirklich tun wollen. Ein tatsächliches ABEND zu verursachen, ist nicht unbedingt notwendig.

In einer IBM-Batch-Umgebung wird der von Ihrem Programm gesetzte RETURN-CODE zum RC für den JCL-Jobstep, unter dem das Programm ausgeführt wurde. Dies ist normalerweise das, was Sie einstellen und testen wollen.

En RETURN-CODE wird festgelegt durch MOVE mit einem numerischen Wert versehen. Zum Beispiel:

         DISPLAY 'No Detail Records found in file.'
         MOVE 16 TO RETURN-CODE
         GOBACK.

Sie können auch einen Programmdump aus einem Programm heraus erstellen, das unter der Sprachumgebung (IBM Mainframe-Option) mit die Funktion CEE3DMP--Dump generieren Nutzen.

In älteren IBM-Mainframe-COBOL-Programmen kann es zu Aufrufen der ILBOABN0 Routine. Dieser Aufruf hat Ihr Programm abgebrochen und einen Dump ausgegeben. Diese Routine ist jetzt abgeschrieben zu Gunsten der oben beschriebene Technik.

Schließlich können sehr alte Programme Code enthalten, der Abends erzeugt. Dies kann auf verschiedene Arten geschehen, aber die Division durch Null war oft ein Favorit:

        DIVIDE SOME-NUMBER BY ZERO GIVING SOME-NUMBER.

Funktioniert jedes Mal!

Ich persönlich empfehle die Einstellung der RETURN-CODE über den Aufruf ILBOABN0 oder Datenausnahmetechniken.

Anmerkung: Das RETURN-CODE Spezialregister ist nicht Teil des COBOL-85 Standards. Es ist als IBM-Erweiterung für die Sprache verfügbar. Wenn Sie in einer nicht-IBM-kompatiblen Umgebung arbeiten, müssen Sie möglicherweise auf einen anderen Mechanismus zurückgreifen.

3voto

Jared Punkte 38791

Siehe den folgenden Link, wie Sie den an einen JCL-Job-Step zurückgegebenen Return-Code einstellen und einen Abened-Code erzwingen können. http://www.tek-tips.com/viewthread.cfm?qid=1058302&page=22

2voto

Abacus Punkte 1905

Zunächst sollten Sie prüfen, welche Arbeitsstandards in Ihrem eigenen Geschäft/auf Ihrer Baustelle akzeptiert werden. Die meisten Teams haben bereits eine akzeptierte Methode, um ein Programm absichtlich aus einem "logischen" Grund abzubrechen. In einem Unternehmen, in dem ich gearbeitet habe, gibt es ein sehr einfaches Programm namens SYSABND2, das, wie ich glaube, in Assembler geschrieben ist und nur zum Abbrechen des Programms aufgerufen wird.

Das heißt, um ABEND zu machen (nicht nur den Rückgabewert zu setzen), sollten Sie das Modul CEE3ABD (oder vorherige Version ILBOABN0 (die jetzt veraltet ist).

Einzelheiten siehe:

0voto

Developer Punkte 112

Eine Methode, um ein abnormales Laufende zu melden, ist die Ausgabe einer Meldung an das Benutzerterminal oder an den Bediener in einem Großrechnerzentrum und gegebenenfalls an einen Drucker, je nachdem, auf welchem Computertyp das Programm ausgeführt werden soll. In cobol ist es möglich, DISPLAY UPON .. zu verwenden und eine Kennung für das Terminal, die Bedienerkonsole oder den Drucker zu verwenden, die in einem Eintrag im Abschnitt SPECIAL-NAMES der ENVIRONMENT DIVISION definiert ist. Ein Beispiel könnte ähnlich lauten, wobei die richtigen Gerätenamen für Ihren Fall verwendet werden OPERATOR-CONSOLE IS OUT-OP2 in special-names mit DISPLAY "RUN ERROR - NO DETAIL RECORDS, ABORTING" UPON OUT-OP2 und DISPLAY "REPORT TO OPERATIONS MANAGER" UPON OUT-OP2 und STOP RUN. in der Verfahrensabteilung. Ein Hinweis auf diesen Umstand müsste in jeden Job oder jedes Makro und jede Betriebsanleitung aufgenommen werden.

0voto

manoj kumar Punkte 1

Ja, es ist möglich, Ihren Auftrag absichtlich durch ein COBOL-Programm abzubrechen, indem Sie einfach ein Modul aufrufen, das nicht existiert. Dies führt zu einem S806 Abbruchcode.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X