Achtung - diese Seite ist in noch Bearbeitung und beschreibt eine Funktionalität der noch geändert werden kann!
Für den Fall das COBOL Gruppenstufen abgebildet werden müssen, kann eine von der abstrakter Basisklasse DataGroup
abgeleitete Klasse definiert werden. Diese enthält dann für jedes Datenelement eine property
:
sealed class VerteilRecord : DataGroup { public Numeric<System.Double, BetragFormat> Steuer { get...; set...; } public Numeric<System.Double, BetragFormat> Zuschlag { get...; set...; } ... }
Aus den definierten Properties leitet die Basisklasse DataGroup
dann die Struktur ab, und berücksichtigt diese z.B. beim Initialize
oder Bytes
.
Für die Implementierung der Properties werden die Methoden GetMember
und SetMember
von der Basisklasse DataGroup
verwendet:
public Numeric<System.Double, BetragFormat> Steuer { get => GetMember<Numeric<System.Double, BetragFormat>>(); set => SetMember(value); }
Um REDEFINES aus COBOL Datendefinitionen abzubilden, kann das .NET Attribut RedefinesAttribute
verwendet werden:
private sealed class IndicesGroup : DataGroup { public ZwEbnIndicesGroup ZwEbnIndices => GetMember<ZwEbnIndicesGroup>(); [Redefines(nameof(ZwEbnIndices))] public ZwEbnTabGroup ZwEbnTab => GetMember<ZwEbnTabGroup>(); }
Es gibt kein Formatangeben für DataGroup
.
protected T GetMember<T>([CallerMemberName] string name = null) where T : DataElement;
Liefert das Datenelement name
. Wenn name
nicht angegeben wird der Namen des Aufrufes verwendet.
protected void SetMember<T>(T value, [CallerMemberName] string name = null) where T : DataElement;
Bestückt das Datenelement name
. Wenn name
nicht angegeben wird der Namen des Aufrufes verwendet.
protected static int SizeOf<TGroup>() where TGroup : DataGroup, new();
Liefert die Anzahl Bytes welche für die angegebene TGroup
benötigt werden.