Aliasnamen für Java-Wrapper-Namen erstellen
Der EGL-Generator wendet auf Aliasnamen für Java™-Wrappernamen die folgenden Regeln an:
- Wenn der EGL-Name nur aus Großbuchstaben besteht, wird er in Kleinbuchstaben umgesetzt.
- Ist der Name ein Klassen- oder Methodenname, wird der erste Buchstabe als Großbuchstabe angegeben. (Die Getter-Methode für x ist beispielsweise getX() und nicht getx().)
- Alle Unterstreichungszeichen (_) und Bindestriche (-) werden gelöscht. (In EGL-Namen sind Bindestriche zulässig, wenn Sie den VisualAge-Generator-Kompatibilitätsmodus verwenden.) Folgt auf ein Unterstreichungszeichen oder einen Bindestrich ein Buchstabe, wird dieser in einen Großbuchstaben geändert.
- Handelt es sich bei dem Namen um einen qualifizierten Namen, bei dem der Punkt (.) als Trennzeichen verwendet wird, werden alle Punkte durch ein Unterstreichungszeichen ersetzt und dem Namen wird ein Unterstreichungszeichen vorangestellt.
- Enthält der Name ein Dollarzeichen ($), wird das Dollarzeichen durch zwei Unterstreichungszeichen ersetzt und dem Namen ein Unterstreichungszeichen vorangestellt.
- Handelt es sich bei einem Namen um ein Java-Schlüsselwort, wird dem Namen ein Unterstreichungszeichen vorangestellt.
- Lautet der Name * (ein Stern, der als Platzhalter verwendet wird), wird der erste Stern in Filler1, der zweite Stern in Filler2 etc. umbenannt.
Darüber hinaus gelten bei den Java-Wrapperklassennamen für Programmwrapper, Datensatzwrapper und unterstrukturierte Feldgruppenfelder besondere Regeln. Diese Regeln werden im Folgenden erläutert und durch Beispiele ergänzt. Generell gilt, dass bei Namenskonflikten bei Feldern innerhalb einer generierten Wrapperklasse der qualifizierte Name zur Bestimmung von Klassen- und Variablennamen verwendet wird. Lässt sich der Konflikt so nicht lösen, wird bei der Generierung eine Ausnahme ausgelöst.
Programmwrapperklasse
Satzparameterwrapper werden benannt, indem die obigen Regeln auf den Namen der Typdefinition angewendet werden. Ergibt sich bei dem Namen der Datensatzwrapperklasse ein Namenskonflikt mit dem Namen der Programm- oder Programmwrapperklasse, wird am Ende des Namens der Datensatzwrapperklasse Record hinzugefügt.
- Die Satzparametervariable wird nach den obigen Regeln benannt, die auf den Parameternamen angewendet werden. Diese Namen sind daher in den Methoden get() und set() enthalten, nicht der Klassenname.
- Die Methoden get und set erhalten den Namen get oder set gefolgt vom Parameternamen, auf den die obigen Regeln angewendet wurden.
Datensatzwrapperklasse
- Das unterstrukturierte Feldgruppenfeld wird zu einer untergeordneten Klasse der Datensatzwrapperklasse und der Klassenname wird abgeleitet, indem die obigen Regeln auf den Feldnamen angewendet werden. Ergibt sich bei diesem Klassennamen ein Namenskonflikt mit dem Namen der übergeordneten Datensatzklasse, wird Structure an den Feldklassennamen angehängt.
- Ergeben sich Namenskonflikte innerhalb der Feldklassennamen, werden die qualifizierten Feldnamen verwendet.
- Die Methoden erhalten einen Namen, bei dem auf get bzw. set der Feldname folgt, auf den die obigen Regeln angewendet wurden.
- Ergeben sich Namenskonflikte innerhalb der Feldnamen, werden die qualifizierten Feldnamen verwendet.
Klasse für unterstrukturierte Feldgruppenfelder
- Das unterstrukturierte Feldgruppenfeld wird zu einer untergeordneten Klasse der Wrapperklasse, die für das übergeordnete unterstrukturierte Feldgruppenfeld generiert wurde, und der Klassenname wird abgeleitet, indem die obigen Regeln auf den Feldnamen angewendet werden.
- Ergibt sich bei diesem Klassennamen ein Namenskonflikt mit dem Namen der übergeordneten Klasse für unterstrukturierte Feldgruppenfelder, wird Structure an den Feldklassennamen angehängt.
- Die Methoden erhalten einen Namen, bei dem auf get bzw. set der Feldname folgt, auf den die obigen Regeln angewendet wurden.
- Ergeben sich Namenskonflikte innerhalb der Feldnamen, werden die qualifizierten Feldnamen verwendet.
Beispiel
Das folgende Beispielprogramm und die generierte Ausgabe zeigen den Verlauf einer Wrappergenerierung:
Beispielprogramm
Program WrapperAlias(param1 RecordA)
end
Record RecordA type basicRecord
10 fieldA CHAR(10)[1];
10 field_b CHAR(10)[1];
10 field$C CHAR(10)[1];
10 static CHAR(10)[1];
10 fieldC CHAR(20)[1];
15 field CHAR(10)[1];
15 fieldD CHAR(10)[1];
10 arrayField CHAR(20)[5];
15 innerField1 CHAR(10)[1];
15 innerField2 CHAR(10)[1];
end
Generierte Ausgabe
| Ausgabe | Name |
|---|---|
| Programmwrapperklasse | WrapperaliasWrapper mit einem Feld Param1, das eine Instanz der Datensatzwrapperklasse DatensatzA ist. |
| Parameterwrapperklassen | DatensatzA, auf den mit folgenden Methoden
zugegriffen werden kann:
|