Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Verzweigungen definieren

&pagelevel(4)&pagelevel

Verzweigungen im Prozedurlauf können mit IF-Blöcken erzeugt werden. In IF-Blöcken werden Kommandofolgen abhängig vom Ergebnis einer Bedingung ausgeführt. Ein IF-Block wird mit dem Kommando IF eingeleitet und mit dem Kommando END-IF abgeschlossen. Er kann mit einer Marke versehen werden.

Wenn nur eine Bedingung geprüft werden soll, besteht der IF-Block aus dem IF-Kommando mit der Bedingung, der dazugehörenden Kommandofolge und dem Kommando END-IF. Die Bedingung muss als boolescher Wert angegeben werden.

/IF bedingung

kommandofolge1

/END-IF

Wenn die Bedingung im IF-Kommando erfüllt ist, wird kommandofolge1 ausgeführt. Wenn die Bedingung nicht erfüllt ist, wird der IF-Block beendet. Das Kommando, das auf END-IF folgt, wird ausgeführt.

Wie in höheren Programmiersprachen wird in IF-Blöcken zwischen THEN-Zweig und ELSE-Zweig unterschieden. Im obigen Beispiel bildet kommandofolge1 den THEN-Zweig und der Sprung zu END-IF den ELSE-Zweig.

Wenn alternativ zu kommandofolge1 eine andere Kommandofolge ausgeführt werden soll, muss explizit ein ELSE-Zweig angegeben werden. Der ELSE-Zweig enthält die alternative Kommandofolge. Er wird mit dem Kommando ELSE eingeleitet und mit dem Kommando END-IF abgeschlossen.

/IF bedingung

kommandofolge1

/ELSE

kommandofolge2

/END-IF

Wenn die Bedinung im IF-Kommando erfüllt ist, wird kommandofolge1 ausgeführt, und der Block wird beendet. Wenn die Bedingung nicht erfüllt ist, wird kommandofolge2 ausgeführt.In einem IF-Block können auch mehrere Bedinungen nacheinander geprüft werden.

/IF bedingung1
kommandofolge1

/ELSE-IF bedingung2
kommandofolge2

/ELSE-IF bedingung3
kommandofolge3

...

/ELSE

kommandofolgei

/END-IF

Ist die Bedingung im IF-Kommando erfüllt, wird kommandofolge1 ausgeführt. Ist sie nicht erfüllt, wird die Bedingung im ersten ELSE-IF-Kommando geprüft. Ist diese Bedingung erfüllt, wird kommandofolge2 ausgeführt, andernfalls wird die Bedingung im nächsten ELSE-IF-Kommando geprüft usw. Ist keine der Bedingungen erfüllt, wird kommandofolgei aus-geführt, die dem ELSE-Kommando folgt.

Die Kommandofolgen zwischen den Kommandos IF, ELSE-IF, ELSE und END-IF bilden jeweils eigene Blöcke.

Beispiel

Abhängig vom Wert der Variablen A soll eine Datei angelegt werden, deren Dateiname als Teilnamen den Wert der Variablen enthält:

  • Wenn der Wert der Variablen A kleiner ist als 11, soll eine Datei DATEI.KLEIN.&A angelegt werden.

  • Wenn der Wert der Variablen A zwischen 11 und 100 liegt, soll eine Datei DATEI.MITTEL.&A angelegt werden.

  • Ist A größer als 100, soll eine Datei DATEI.GROSS.&A angelegt werden.

/DECLARE-PARAMETER A(INITIAL-VALUE=*PROMPT,TYPE=*INTEGER)
/IF (A < 11)
/    CREATE-FILE DATEI.KLEIN.&A,SUPPORT=*PUB-DISK(SPACE=*RELA(PRIM-ALLOC=30))
/ ELSE-IF (A < 101)
/    CREATE-FILE DATEI.MITTEL.&A,SUPPORT=*PUB-DISK(SPACE=*RELA(PRIMALLOC=60))
/ ELSE
/    CREATE-FILE DATEI.GROSS.&A,SUPPORT=*PUB-DISK(SPACE=*RELA(PRIM-ALLOC=90))
/END-IF

Die Dateien werden angelegt mit SUPPORT = *PUB-DISK(SPACE = *RELA(PRIM-ALLOC= ...)) im Kommando CREATE-FILE:

  • SUPPORT = *PUBLIC-DISK bewirkt, dass die Datei als Plattendatei auf einer gemeinschaftlichen Platte angelegt wird.

  • SPACE = *RELATIVE bewirkt relative Speicherplatzzuweisung.

  • PRIMARY-ALLOCATION bewirkt, dass der Datei n PAM-Seiten Speicherplatz zugewiesen werden.

Wie Dateien erzeugt werden, ist ausführlich im Handbuch „Einführung in das DVS“ [1] beschrieben. Dort sind auch die Begriffe „Plattendatei“, „gemeinschaftliche Platte“, „(relative) Speicherplatzzuweisung“ und „PAM-Seite“ erklärt.