Obercodes

<< Click to Display Table of Contents >>

Navigation:  Datenmodifikation > Variablen und Codes > Gruppierungen >

Obercodes

Overcodes sind eine komfortable Möglichkeit, einzelne Codes zusammenzufassen und (zusätzlich zu den Einzelcodes) darzustellen. Sie ersetzen beispielsweise den Aufwand, die Variable in eine Mehrfachnennung umzuformen und mittels RECODE oder IF-Statements zusätzliche Gruppen abzubilden.


Overcode

Syntax:

 OVERCODE [<ocname>] { :<label> }*n "<text des OVERCODEs"

<ocname> ::= neuer eindeutiger Name des OVERCODEs

Overcodes werden im Zuge der VALUELABEL-Definition definiert.

Nach dem Schlüsselwort OVERCODE kann ein Overcode-Name stehen, mit dem man sich auf den Overcode beziehen kann. Im Anschluss werden die Codes definiert, aus denen der Overcode bestehen soll. Hierbei kann man sich auf Wertebereiche beziehen ( z.B. 1 : 19 ) oder Einzelwerte in beliebiger Folge angeben. Beide Formen lassen sich mischen.

Zum Beispiel:

VALUELABELS V001 =
OVERCODE O001 4 2 3 7 9:11 22 "Erster Overcode" 

1 "Label 1"

2 "Label 2"
...

22 "Label 22"

;

Die Overcodes erhalten in der Reihenfolge ihrer Bildung folgende Codewerte: 65001, 65002 usw.


OverOverCode

Syntax:

OVEROVERCODE  [ SUM ] <oocname> { :<ocname> }*n 
"<text des OVEROVERCODEs"

<oocname> ::= neuer eindeutiger Name des OVEROVERCODE
<ocname> ::= gültiger Name eines bestehenden OVERCODE 
 oder OVEROVERCODE

Ein OVEROVERCODE ist ein Overcode, der nur aus Overcodes und ggf. Overovercodes zusammengesetzt ist. Voraussetzung für die Benutzung ist, dass alle Overcodes und Overovercodes einen innerhalb der VALUELABELS eindeutigen Namen haben. Mehrfach verwendete Namen werden erkannt und führen zu einem Syntaxfehler.

Die leitende Idee bei der Verwendung von OVEROVERCODE ist, Codes in einer Labelliste nur einmal als Referenz in einem OVERCODE zu verwenden.

Ein ganz simples Beispiel:

LABELS SORTTESTX =

1 eins

2 zwei

OVERCODE OC1 1:2 "erster OC"

3 drei

4 vier

5 fünf

OVERCODE OC2 3:5 "zweiter OC"

6 sechs

7 sieben

OVERCODE OC3 6 7 "dritter OC"

8 acht

9 neun

10 zehn

OVERCODE OC4 8 9 10 "vierter OC"

OVEROVERCODE OOC1 :OC3 :OC2 "erster OVEROVERCODE"

OVEROVERCODE OOC2 :OC4 :OC1 "zweiter OVEROVERCODE"

OVEROVERCODE OOOC1 :OOC1 :OOC2 "erster OVER-OVEROVERCODE"

;

Die Namen OC1, OC2... und OOC1 bzw. OOOC1 wurden hier der Übersichtlichkeit halber gewählt, selbstverständlich kann man hierfür auch inhaltlich definierte Namen verwenden. Es gelten zusätzliche Regeln zur Reihenfolge: ähnlich, wie man mit Variablen nur dann rechnen kann, wenn sie erzeugt sind und sie einen Wert haben, kann man Overovercodes nur aus Overcodes bilden, die weiter oben erzeugt wurden und einen eindeutigen Namen tragen.

Die Platzierung der atomaren Codes unterliegt vergleichsweise weniger Regeln; Codes können auch dann Overcodes zugeordnet werden, wenn sie noch nicht definiert sind.

Das folgende Beispiel ist eine syntaktisch korrekte Labelliste:

LABELS sorttestxx =

OVERCODE OC1 1:2 "erster OC"

OVERCODE OC2 3:5 "zweiter OC"

OVERCODE OC3 6 7 "dritter OC"

OVERCODE OC4 8 9 10 "vierter OC"

OVEROVERCODE OOC1 :OC3 :OC2 "erster OVEROVERCODE"

OVEROVERCODE OOC2 :OC4 :OC1 "zweiter OVEROVERCODE"

OVEROVERCODE OOOC1 :OOC1 :OOC2 "erster OVER-OVEROVERCODE"

1 eins

2 zwei

3 drei

4 vier

4 vier

5 fünf

6 sechs

7 sieben

8 acht

9 neun

10 zehn

;

Die interne Vergabe der Codewerte für die OverOvercodes reiht sich mit Codewerten ab 65001 in die der Overcodes ein.


Einstellungen für Overcodes

Mehrfach zugeordnete Codes

Syntax:

DOUBLECODEINOVERCODE = [YES | NO];

 

Codes dürfen mehrfach in Overcodes auftauchen. Problematisch wird es aber bei hierarchischer Sortierung mit AUTOOVERSORT: dann ist es nicht eindeutig, welchem Obercode ein Code zugeordnet werden soll. DOUBLECODEINOVERCODE = YES; überwacht diesen Zustand und bricht ggf. mit einem Syntaxfehler ab.

Unterdrücken von Over[over]codes in Tabellen

Over[over]codes können in Tabellen vom Typ TABLE unterdrückt werden. Hierfür gibt es

NOOCINHEADER = [ YES | NO ]

zur Ansprache des Tabellenkopfes

und

NOOCINSTUB = [ YES | NO ];

zur Ansprache des seitlichen Tabellenaufrisses.