Data klasser
Data klasser är den enklaste typen av klasser, och används normalt för att lagra data i.
Klasserna består av en RtBody med attribut.
För att skapa en klass lägger man ett $ClassDef objekt under 'Class' objektet.
Namnet på $ClassDef objektet kommer att bli klassens namn.
Under $ClassDef objektet skapar man ett $ObjBodyDef objekt som automatiskt får namnet RtBody.
Under RtBody objektet skapas ett $Attribute objekt som definierar ett attribut i klassen.
Namnet på $Attribut-objektet ger attribut-namnet. I objektet måste anges följande:
- attributets typ anges i TypeRef. Ett 32-bitars heltal anges t ex med pwrs:Type-$Int32,
ett 32-bitars flyttal med pwrs:Type-$Float32 och en boolean med pwrs:Type-$Boolean.
Det som läggs in är egentligen namnet på ett typdefinitions-objekt. Se i objekts
handboken pwrs/Types, vilka typer som finns definierade.
- om attributnamnet innehåller nationella tecken måste man ange ett namn utan nationella
tecken som godkänns av c-kompilatorn. Detta anges i PgmName.

Definition av ett attribut
När man sparar, skapas en instans av den aktuella klassen med namnet Template under
$ClassDef objektet. Här kan man se hur ett objekt av klassen ser ut. I Template objektet kan
man också lägga in default-värden på attributen. När instanser av klassen skapas, tas en
kopia av Template objektet.

Template objekt med defaultvärden
Vektorer
Ett vektor-attribut definieras med ett $Attribute objekt på samma som övriga attribut. Här
sätter man Flags biten Array, och anger antalet element i vektorn i Elements.

Definition av vektor attribut med 50 element
Attributobjekt
Med attributobjekt avses attribut som beskrivs av en datastruktur. Orsaken kan vara att man
vill samla ett antal data i objektet under en mapp, eller att datastrukturen upprepas, i det
här fallet gör man ett attribut objekt i form av en vektor.
Datastrukturen för attributet måste defineras av en egen klass. Klassen ska enbart innehålla
en runtime body, och får inte ha en development body.
Attributobjektet definieras med ett $Attribute objekt. Som TypeRef anges den klass som
beskriver datastrukturen, och i Flags sätts biten Class.
Man kan även göra en array av attributet genom att sätta Array biten i Flags, och ange
antalet element i Elements.
Attributobjekt kan i sin tur ha attribut som är attribut objekt. Antalet nivåer är dock
begränsat till 20, och längden på det sammanlagda attribut-namnet får maximalt vara 255 tecken.
Ett attribut i ett attributobjekt refereras med punkt som avgränsare, dvs attributet
Description i attributobjektet Pump i objektet o, refereras med namnet 'o.Pump.Description'.
Om pump dessutom är en vektor av pumpobjekt blir namet på Description attributet i det
första pumpobjektet 'o.Pump[0].Description'.

Definition av ett attributobjekt av klassen Table.
Subklass
Man kan även definiera en klass som en subklass till en annan klass. Subklassen kommer att
ärva attribut och metoder av den andra klassen, som kallas för superklass.
En subklass definieras genom att det första $Attribute objektet i klassen har namnet 'Super',
och bitarna Class och SuperClass satta i Flags ordet. Superklassen anges i TypeRef.
Alla attribut som finns i superklassen kommer även att finnas i subklassen. Subklassen kan
byggas ut med fler attribut som defineras på normalt sätt med $Attribute objekt.
En superklass får enbart innehålla en runtime body, ej någon dev body.

Super attributet gör MyDataClass till en subklass till MySuperDataClass