Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

CANCEL-Anweisung

&pagelevel(4)&pagelevel

Funktion

Die CANCEL-Anweisung bewirkt, dass sich das angegebene Programm beim nächsten Aufruf im Initialzustand befindet.

Format


CANCEL {bezeichner-1 | literal-1} ...


Syntaxregeln

  1. literal-1 muss ein alphanumerisches Literal und ein gültiger Programmname sein. Es darf jedoch keine figurative Konstante sein.

    Ist literal-1 der Name eines getrennt übersetzten Programms bzw. des äußersten Programms eines geschachtelten Programms, muss es mit einem alphabetischen Zeichen beginnen und darf nur Großbuchstaben und Ziffern enthalten. Die Namenslänge ist abhängig vom Modulformat.
    Ist literal-1 der Programmname für ein inneres Programm eines geschachtelten Programms, muss es mit einem alphabetischen Zeichen beginnen, darf Groß- und Kleinbuchstaben sowie Ziffern enthalten und darf eine Länge von maximal 30 Zeichen haben.

  2. bezeichner-1 muss als alphanumerisches Datenfeld definiert sein, so dass sein Wert ein gültiger Programmname, wie in 1. beschrieben, sein kann.

Allgemeine Regeln

  1. literal-1 bzw. der Inhalt von bezeichner-1 geben das Programm an, das den Initialzustand erhält.

  2. Eine erfolgreich ausgeführte CANCEL-Anweisung bewirkt, dass die Dateien im angesprochenen Programm geschlossen werden. Wird das Programm im Anschluss an eine erfolgreich ausgeführte CANCEL-Anweisung in derselben Ablaufeinheit bzw. in einem geschachtelten Programm aufgerufen, befindet es sich im Initialzustand.

    Der durch literal-1 oder den Inhalt von bezeichner-1 benannte Programmname muss in der Ablaufeinheit bzw. im geschachtelten Programm eindeutig sein, ausgenommen es handelt sich um einen Programmnamen, der unter bestimmten Bedingungen (siehe „CALL-Anweisung", allgemeine Regel 4) mehrmals verwendet werden darf.Der Programmname darf nicht mit den ersten 7 Zeichen des Programmnamens im PROGRAM-ID-Paragrafen des Programms, das diese CANCEL-Anweisung enthält, übereinstimmen.

  3. Aufgerufene Programme dürfen CANCEL-Anweisungen enthalten. Ein aufgerufenes Programm darf jedoch keine CANCEL-Anweisung ausführen, die direkt oder indirekt das aufrufende Programm referenziert.

  4. Die logische Verbindung zu einem Programm, das mittels einer CANCEL-Anweisung in den Initialzustand gesetzt wurde, wird nur wiederhergestellt, wenn es nachfolgend mit CALL aufgerufen wird.

  5. Eine CANCEL-Anweisung bleibt ohne Wirkung, wenn einer der folgenden Fälle vorliegt:

    • Das betreffende Programm befindet sich noch im Initialzustand, weil es in der aktiven Ablaufeinheit bzw. im geschachtelten Programm noch nicht aufgerufen wurde.

    • Das betreffende Programm wurde schon mittels einer CANCEL-Anweisung in den Initialzustand versetzt.

    • Das betreffende Programm bzw. (bei geschachtelten Programmen) ein übergeordnetes Programm besitzt das Attribut INITIAL.

    In diesen Fällen geht die Steuerung über zur nächsten ausführbaren Anweisung nach der CANCEL-Anweisung.
  6. Während der Ausführung einer CANCEL-Anweisung wird für jede zugeordnete, geöffnete interne Datei eine implizite CLOSE-Anweisung (ohne jedwede optionale Angabe) durchgeführt. Für diese Dateien angegebene USE-Prozeduren werden nicht ausgeführt.

  7. Eine CANCEL-Anweisung darf nur solche Programme ansprechen, deren Aufruf innerhalb der Aufrufhierarchie zulässig ist.

  8. Wird eine explizite oder implizite CANCEL-Anweisung ausgeführt, so werden auch alle inneren Programme des von der CANCEL-Anweisung angesprochenen Programms storniert.

Beispiel 8-27

Hauptprogramm:

IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01  FEHLER-CODE PIC 9.
    88  O-K VALUE 0.
...
PROCEDURE DIVISION.
P1 SECTION.
HAUPT.
    PERFORM WITH TEST AFTER UNTIL O-K
      CALL "UPROG1" USING FEHLER-CODE
      IF NOT O-K
      THEN 
        CANCEL "UPROG1"
      END-IF
    END-PERFORM
    STOP RUN.

Unterprogramm:

IDENTIFICATION DIVISION.
PROGRAM-ID. UPROG1.
ENVIRONMENT DIVISION.
DATA DIVISION.
   ...
LINKAGE SECTION.
01  FEHLER-CODE  PIC 9.
    88  O-K  VALUE 0.
PROCEDURE DIVISION USING FEHLER-CODE.
    ...
    IF INTERN-ERROR
    THEN 
      CONTINUE
    ELSE 
      SET O-K TO TRUE
    END-IF
    EXIT PROGRAM.

UPROG1 wird solange aufgerufen, bis der Wert 0 zurückgeliefert wird. Solange ein Wert ungleich 0 zurückgeliefert wird, wird UPROG1 in den Initialzustand zurückgesetzt und die Schleife fortgesetzt.