Die INITIALIZE-Anweisung


Die INITIALIZE-Anweisung wird, wie ihr Name schon sagt, dazu verwendet, Datenfelder zu initialisieren. Dieser Vorgang ist für einzelne Datenfelder, Datengruppen oder Tabellen durchführbar. Weiterhin ist es möglich, mit dem REPLACING-Zusatz nur ganz bestimmte Datenfelder in einer Datengruppe zu initialisieren. Der ganze Vorgang soll an einigen Beispielen verdeutlicht werden:

1. Man kann die Anweisung verwenden, um ein einzelnes Datenfeld zu initialisieren:

INITIALIZE Nummer.

Datenfeld

Inhalt vorher

Inhalt nachher

01 Nummer PIC 9(5).

47112

00000

Hier hätte man genauso gut mit der MOVE-Anweisung arbeiten können:
MOVE ZERO TO Nummer

...

2. Man kann mit der INITIALIZE-Anweisung auch eine ganze Datenguppe initialisieren (das ist der eigentliche Sinn dieser Anweisung):

INITIALIZE Name-Satz.

Datenfeld

Inhalt vorher

Inhalt nachher

01 Name-Satz.

.....05 Nummer PIC *.*9(5).

*.*47112

*.*00000

.....05 Person.

..........10 Name PIC X(30).

Kasulske

Spaces

..........10 Vorname PIC X(30).

Edwin

Spaces

..........10 Strasse PIC X(30).

Cobolstr. 23

Spaces

..........10 PLZ-Ort PIC X(30).

22056 Pilzdorf

Spaces

.....05 Postfach PIC X(15).

FD 54-97 FRD

Spaces

.....05 Filler PIC X(30) VALUE ALL "!#!".

!#! 10 mal

!#! 10 mal

.....05 Umsatz PIC 9999999V99.

000058263

000000000

Der Vorteil hier, gegenüber der MOVE-Anweisung, liegt hier darin, daß die Datenfelder innerhalb der Datengruppe gemäß ihrer Definition initialisiert werden, ohne daß man sich im Einzelnen darum kümmern müßte.

...

3. Initialisierung mit Hilfe des REPLACING-Zusatzes

INITIALIZE Name-Satz REPLACING NUMERIC DATA BY ZERO

Datenfeld

Inhalt vorher

Inhalt nachher

01 Name-Satz.

.....05 Nummer PIC 9(5).

47112

00000

.....05 Person.

..........10 Name PIC X(30).

Kasulske

Kasulske

..........10 Vorname PIC X(30).

Edwin

Edwin

..........10 Strasse PIC X(30).

Cobolstr. 23

Cobolstr. 23

..........10 PLZ-Ort PIC X(30).

22056 Pilzdorf

22056 Pilzdorf

.....05 Postfach PIC X(15).

FD 54-97 FRD

FD 54-97 FRD

.....05 Filler PIC X(30) VALUE ALL "!#!".

!#! 10 mal

!#! 10 mal

.....05 Umsatz PIC 9999999V99.

000058263

000000000

Hier werden nur die Datenfelder, die numerischen Ursprungs sind, mit Nullen initialisiert. Die übrigen Felder bleiben unberücksichtigt. Natürlich ist dies auch für alphanumerische Datenfelder möglich:

INITIALIZE Name-Satz REPLACING ALPHANUMERIC DATA BY "*"

Datenfeld

Inhalt vorher

Inhalt nachher

01 Name-Satz.

.....05 Nummer PIC 9(5).

47112

47112

.....05 Person.

..........10 Name PIC X(30).

Kasulske

* 30 mal

..........10 Vorname PIC X(30).

Edwin

* 30 mal

..........10 Strasse PIC X(30).

Cobolstr. 23

* 30 mal

..........10 PLZ-Ort PIC X(30).

22056 Pilzdorf

* 30 mal

.....05 Postfach PIC X(15).

FD 54-97 FRD

* 30 mal

.....05 Filler PIC X(30) VALUE ALL "!#!".

!#! 10 mal

!#! 10 mal

.....05 Umsatz PIC 9999999V99.

000058263

000058263

Hier wurden bei der Initialisierung die alphanumerischen Datenfelder mit Sternen aufgefüllt. Weitere Möglichkeiten der gezielten initialisierung von Datenfeldern sind:

INITIALIZE Bezeichner REPLACING ALPHABETIC DATA BY Bezeichner oder Literal
INITIALIZE Bezeichner REPLACING ALPHANUMERIC-EDITED DATA BY Bezeichner oder Literal
INITIALIZE Bezeichner REPLACING NUMERIC-EDITED DATA BY Bezeichner oder Literal

...

4. Die INITIALIZE-Anweisung kann auch sehrgut zur Initialisierung von Tabellen genutzt werden.

Die Folgende Tabelle wird mit Hilfe von drei INIZIALIZE-Anweisungen in ganz bestimmten Elementen ganz bestimmt initialisiert:

01 Tabelle.

.....05 Element OCCURS 12.

..........10 Monat PIC X(9).

..........10 Umsatz PIC 9(8)V99.

INIZIALIZE Element (5).
INITIALIZE Monat (3) BY "Re-Monat".
INITIALIZE Monat (8) BY "Abschluss".

Vorher

Nachher

St.:

Monat

Umsatz

Monat

Umsatz

(1)

Mai

036456289

Mai

036456289

(2)

Juni

048683617

Juni

048683617

(3)

Juli

033376916

Re-Monat

033376916

(4)

August

040598021

August

040598021

(5)

September

041749822

Spaces

000000000

(6)

Oktober

050739872

Oktober

050739872

(7)

November

039289777

November

039289777

(8)

Dezember

035882915

Abschluss

035882915

(9)

Januar

029478653

Januar

029478653

(10)

Februar

037298746

Februar

037298746

(11)

März

035819942

März

035819942

(12)

April

040389227

April

040389227

Natürlich können auch ganze Bereiche (Zeilen oder Spalten) der Tabelle initialisiert werden:

INITIALIZE Tabelle REPLACING NUMERIC DATA BY ZERO.

Vorher

Nachher

St.:

Monat

Umsatz

Monat

Umsatz

(1)

Mai

036456289

Mai

000000000

(2)

Juni

048683617

Juni

000000000

(3)

Juli

033376916

Juli

000000000

(4)

August

040598021

August

000000000

(5)

September

041749822

September

000000000

(6)

Oktober

050739872

Oktober

000000000

(7)

November

039289777

November

000000000

(8)

Dezember

035882915

Dezember

000000000

(9)

Januar

029478653

Januar

000000000

(10)

Februar

037298746

Februar

000000000

(11)

März

035819942

März

000000000

(12)

April

040389227

April

000000000

...

... zurück