Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Allgemeine Regeln für die Segmentierung

&pagelevel(3)&pagelevel
  1. Wenn die zu einem Segment gehörenden Kapitel, d.h. Kapitel mit der gleichen Segmentnummer, verstreut in der Übersetzungseinheit auftreten, ist es notwendig dass sie vom Compiler umgeordnet werden. Der Compiler gewährleistet jedoch, dass der logische Datenfluss der Übersetzungseinheit erhalten bleibt. Er fügt auch die zum Laden eines Segmentes notwendigen Anweisungen ein und/oder stellt gegebenenfalls den Initialzustand eines Segmentes wieder her. Innerhalb einer Übersetzungseinheit kann zu jedem beliebigen Paragrafen in einem Kapitel verzweigt werden, d.h. es ist nicht erforderlich, auf den Anfang eines Kapitels zu verzweigen.

  2. Während des Programmablaufs bleiben nur die festen Segmente im Internspeicher resident. Sowohl die überlagerbaren festen Segmente als auch die unabhängigen Segmente können einander überlagern.

  3. Die folgenden Gesichtspunkte sollten beim Einteilen der Segmente berücksichtigt werden:

    Logische Erfordernisse: 

    Kapitel, die zu jeder Zeit verfügbar sein müssen oder sehr häufig aufgerufen werden, sollten als permanente Segmente eingeteilt werden. Kapitel, die weniger häufig verwendet werden, sollten entweder zu einem der überlagerten festen Segmente oder zu einem der unabhängigen Segmente gehören. Dies hängt jeweils von den logischen Erfordernissen des Programmablaufs ab.

    Beziehungen zu anderen Kapiteln: 

    Kapitel, die häufig miteinander in Verbindung stehen, sollten dieselbe Segmentnummer erhalten. Alle Kapitel mit derselben Segmentnummer bilden ein Programmsegment für sich.

  4. Wird die Segmentierung angewendet, sind für die ALTER-, PERFORM-, MERGE- und SORT-Anweisungen sowie aufgerufene Programme folgende Regeln zu beachten:

    ALTER-Anweisung:

    1. Eine GO TO-Anweisung in einem Kapitel, dessen Segmentnummer 50 oder größer ist, darf nicht von einer ALTER-Anweisung in einem Kapitel mit einer anderen Segmentnummer angesprochen werden.

    2. Eine GO TO-Anweisung in einem Kapitel, dessen Segmentnummer kleiner als 50 ist, darf von einer ALTER-Anweisung in jedem beliebigen Kapitel angesprochen werden, selbst dann, wenn die von der ALTER-Anweisung angesprochene GO TO-Anweisung in einem Programmsegment steht, das noch nicht zum Ablauf aufgerufen worden ist.

    PERFORM-Anweisung:

    1. Eine PERFORM-Anweisung, die innerhalb eines Kapitels geschrieben wird, des-sen Segmentnummer kleiner ist als die Segmentnummer in der SEGMENT-LIMIT-Klausel, kann innerhalb ihres Bereichs nur folgende Kapitel haben:

      • Kapitel mit Segmentnummern kleiner als 50.

      • Kapitel, die vollständig in einem einzelnen Segment mit einer Segmentnummer größer als 49 liegen.

      Der Compiler erlaubt jedoch, dass die PERFORM-Anweisung innerhalb ihres Bereichs Kapitel mit einer beliebigen Segmentnummer ansprechen kann.

    2. Eine PERFORM-Anweisung, die innerhalb eines Kapitels geschrieben wird, dessen Segmentnummer gleich oder größer ist als die Segmentnummer in der SEGMENT-LIMIT-Klausel, kann innerhalb ihres Bereichs nur folgende Kapitel haben:

      • Kapitel mit derselben Segmentnummer wie das Kapitel, das die PERFORM-Anweisung enthält.

      • Kapitel mit Segmentnummern, die kleiner sind als die Segmentnummer in der SEGMENT-LIMIT-Klausel.

      Der Compiler erlaubt jedoch, dass die PERFORM-Anweisung innerhalb ihres Bereichs Kapitel mit einer beliebigen Segmentnummer ansprechen kann.

    SORT-/MERGE-Anweisung:

    1. Wird eine SORT- oder MERGE-Anweisung innerhalb eines Kapitels verwendet, das kein unabhängiges Segment ist, müssen sich die Eingabeprozeduren oder Ausgabeprozeduren, die von dieser SORT- oder MERGE-Anweisung angesprochen werden,

      • ganz innerhalb unabhängiger Segmente oder

      • ganz in einem einzigen unabhängigen Segment befinden.

    2. Wird eine SORT- oder MERGE-Anweisung innerhalb eines unabhängigen Segments verwendet, müssen sich die Eingabeprozeduren oder Ausgabeprozeduren, die von dieser SORT- oder MERGE-Anweisung angesprochen werden,

      • ganz innerhalb unabhängiger Segmente oder

      • ganz in dem gleichen unabhängigen Segment wie diese SORT- oder MERGE-Anweisung befinden.

    Diese Einschränkungen gelten nicht für den in diesem Handbuch beschriebenen Compiler.

Aufgerufene Programm

Ein Programm, das durch eine CALL-Anweisung aufgerufen wurde, darf die Einsprungstellen nur im permanenten Segment haben.