(Kunden-)Spezifika

<< Click to Display Table of Contents >>

Navigation:  Anhang >

(Kunden-)Spezifika

AddNameToVartitle

Syntax:

ADDNAMETOVARTITLE = [ YES | NO ];

Bei YES werden in Kreuztabellen neben dem VARTITLE auch die Variablennamen ausgegeben.


AutoReplaceOpen

Syntax:

AUTOREPLACEOPEN = [ YES | NO ];

In einem Auswertungs-Script gilt die Voreinstellung während der Interpretation der nachstehenden AUTOOPEN-Statements. Für jeden Code in der Codeliste des AUTOOPEN-Statements wird eine Anweisung der Art IF NOT SYSMISS IN <autoopenvariable> THEN REPLACE <code> <variable> = <autoopenvariable>; ausgeführt.

Beispiel:

AUTOOPEN f12 = 97:99 text 'Nachfrage zu Code @SystemAutoOpencode ';

IF NOT SYSMISS IN f12_open_97 THEN REPLACE 97 f12 = f12_open_97;

etc.

Inhaltlich bewirkt der Schalter AUTOREPLACEOPEN=YES; also dass bei den folgenden Variablen mit AUTOOPEN-Erweiterung der Triggercode (97 etc) durch die Kodierung im OpenQFile ersetzt wird, wenn für den jeweiligen fall mindestens ein Code vorliegt.


Chapter

Syntax:

CHAPTER <varlist> =  [ {<string>}*n ];

Um die Auswahl von darzustellenden Variablen bei interaktiver Tabellierung zu erleichtern, kann (sollte) man Variablen inhaltlichen Gruppen zuordnen. Nur diesem Zweck dient diese Variableneigenschaft. In der Tabelliersoftware werden die Variablen unterhalb dieser CHAPTER-Bezeichnungen dargestellt.

CHAPTER-Eigenschaften werden bei der JSON-Ausgabe für invertierte Datensätze mit ausgegeben.

Beispiel:

CHAPTER mg.20.open = ["Hauptbefragung","Der Grid-Kram","MGQ"];

Die Umsetzung der hierarchischen Kapitelzuordnung wird folgendermaßen in die JSON-Syntaxbeschreibung übertragen:

   {

       "varname": "mg.20.open",

       "chapter": [

           "Hauptbefragung",

           "Der Grid-Kram",

           "MGQ"

       ],

       "label": {

           "1": "fgjhj",

           "2": "zwanzig",

           "3": "&&&"

       }

   },


ColBin-Formatnamen

Erlaubte COLBIN-Formatnamen:

ELDAS: privates Format des Instituts für angewandte Sozialwissenschaften in Bad Godesberg (infas).

QUANTUM: QUANTUM-Datenformat (reg. Trade Mark). Datenformat besteht aus ASCII-Spalten. Wenn in einer Spalte X bzw. Y oder Mehrfachlochungen stehen, wird an der betreffenden Stelle ein Sternchen »*« gesetzt. Im Anschluss an die letzte belegte Position steht ein Sonderzeichen (ASCII 127). Darauf folgen für jedes Sternchen zwei Bytes, die ein COLBIN-Wort bilden. Damit diese Bytes druckbaren ASCII-Zeichen entsprechen, ist jeweils das oberste Bit gesetzt, die Byte-Werte liegen damit zwischen 64 (leere COLBIN-Halbspalte) und 127 (alle 4 Bits in der COLBIN-Halbspalte gesetzt).


ExportFile

GESS bzw. infratest-dimap spezifisches internes Format

Syntax:

EXPORTFILE = [ <filename> | "" ];

Die ausgegebenen Dateien können nach Uhrzeit gekennzeichnet werden, die Zeichenfolge »%T« im Dateinamen wird zur Uhrzeit expandiert.


FixedPosition

Syntax:

FIXEDPOSITION <VarList> = [ YES | NO ];

Wird nur für Variablen vom Typ FAMILY ausgewertet. Hat eine FamilyVar die Eigenschaft FIXEDPOSITION, so wird jeder Code bei der Ausgabe an einer festen Stelle ausgegeben: der Code 1 im ersten Spaltenfeld, der Code 2 im zweiten Spaltenfeld, etc. In gewisser Hinsicht werden damit die negativen Eigenschaften von FAMILY- und GROUP- Variablen vereinigt.

Achtung: Wenn man z.B. 20 Spalten (10 x 2) für die Ausgabe einer FamilyVar vereinbart hat, kann ein Labelwert größer als 10 nicht mehr wiedergegeben werden, da es keine 11. und weitere Position gibt.


Hyperlink

Syntax:

HYPERLINK = <URI> <text> ;

z.B.:

TABLE = a BY b;

HYPERLINK =

".\verweistabellen.pdf#27"

"Ergebnisse der vorangegangenen Welle"

;

Im Anschluss an eine Tabelle können beliebig viele HYPERLINK-Statements stehen. Diese werden nur bei Ausgabe in PDF oder HTML interpretiert. In HTML wird vor die jeweilige Tabellenausgabe je eine Zeile eingefügt, die einen anklickbaren Link darstellt. In PDF wird der Link in die Inhaltsübersicht eingefügt. Die Links führen entweder auf eine andere HTML-Seite oder auf eine Seite einer PDF-Datei. Die URI kann nach dem # eine Seitenangabe enthalten. Eine erste Anwendung ist natürlich, dass man historische Tabellenseiten dahinter legt. Man kann aber z.B. auch auf eine aktuelle PDF-Seite verlinken, die die dazugehörigen Charts enthält.

Zu HYPERLINK in PDF:  Das ist leider nicht in allen Umgebungen korrekt anwendbar. Grundsätzlich stellt die von ADOBE entwickelte Syntax zu PDF auch sogenannte Action bereit, mittels derer man auch auf Inhalte anderer PDF-Dokumente verweisen kann. Das widerspricht aber offensichtlich einer zunehmenden Normung, dass PDF-Dokumente »vollständig« sein müssen, in dem Sinne, dass ihre Darstellung nicht von Informationen außerhalb der Datei abhängen dürfen. Das Argument ist gut nachvollziehbar, soweit es sich um rechtsgültige Dokumente im administrativen Bereich handelt. Mit einigen alternativen PDF-Viewern geht es (noch). Mit dem Foxit Reader war es z.B. bislang möglich.


If... Assert

Syntax:

IF <condition1> ASSERT <condition2> [ TITLE "<text>" ] ;

Wenn in einem Datensatz die erste Bedingung (condition1) wahr ist, dann muss auch die zweite Bedingung (condition2) erfüllt sein, sonst liegt ein Fehler vor, der zu einem RunRimeError 6003 und Programmabbruch führt.  Ist im Statement TITLE angegeben, wird die Fehlerbeschreibung mit ausgegeben.

Kann zum Beispiel Anwendung finden, wenn sichergestellt werden soll, dass ein Befragter, der ein Produkt benutzt, dies Produkt auch kennt, oder dass Personen mit Abitur mindestens 16 oder 17 Jahre alt sind.


MarkCellsExcelSpecial

Es ist ja möglich, MARKCELLS auf verschiedenen Signifikanzniveaus testen zu lassen, und das Resultat kann man in Postscript bzw. PDF sehr differenziert einfärben. Im Standardfall werden für die Ausgabe nach HTML bzw. EXCEL VIA HTML nur zwei CSS-Klassen übertragen: auf mindestens einem der gewählten Signifikanzniveaus signifikant größer (MARKGREATER bzw. MEANGREATER) oder kleiner (MARKLESS bzw. MEANLESS).

Der/die Statistiker/in ist damit zufrieden: man wählt ein Signifikanzniveau und testet entsprechend. Kunden von Kunden haben es doch lieber farbenfroh: Die differenzierte Färbung aus PS/PDF möge doch auch in EXCEL durchscheinen. Hierfür gibt es jetzt MARKCELLEXCELSPECIAL.

Syntax:

MARKCELLEXCELSPECIAL = [ YES | NO ];

Steht dieser Schalter auf YES, werden die erfolgreichen Signifikanzniveaus differenziert übertragen. Die neuen CSS-Classes lauten:

MC999G

MC99G

MC95G

MC90G

MC999L

MC99L

MC95L

MC90L

MC999GM

MC99GM

MC95GM

MC90GM

MC999LM

MC99LM

MC95LM

MC90LM

90, 95, 99 und 999 bezeichnen das Signifikanzniveau

G = GREATER

L = LESS

M = MEAN


MinutesAsHourMean

Zellelement

Wird eine Variable angegeben, die eine Zeitangabe in Minuten enthält, wird diese als Mittelwert in Stunden und Minutenbruchteilen ausgegeben.

Beispiel: Aus 355 Minuten wird 5.55 Stunden.


NoInstitutioninCVS

Mit dem Tableformat NoInstitutionInCSV kann für die Ausgabe der Tabellen im CSV-Format (siehe CSVExport) die Ausgabe der Institution-Bezeichnung unterdrückt werden.


OldExcelFormat

Für einige Anwendungszwecke im Zuge des Excel-Outputs wird eine Speicherung im alten Excel-Format (xlExcel8) gewünscht. Dies kann man mittels

OLDEXCELFORMAT = [ YES | NO ];

beeinflussen.


OldGroupClearMethod

Syntax:

OLDGROUPCLEARMETHOD = [ YES | NO ];

Die Methode zum Löschen von Informationen in VARGOUPs ist unter Anwendung des OLDGROUPCLEARMETHOD-Statements weniger "aggressiv", und bewahrt den MISSING-Status der atomaren Bestandteile. Dies bewirkt, dass atomare Variablen VARGOUPs beim Einlesen von SPSS-Files beim Clearen nicht ungewünscht auf non-missing 0 gesetzt werden. Zur zusätzlichen Sicherheit kann man mit diesem Schalter die alte Löschmethode und zusätzliche Löschung der atomaren Variablen aus dem SPSS-Reader reaktivieren.


QualiTab

Tabellen für "qualitative" Daten

Die qualitativen Tabellen in GESStabs führen ihr verborgenes Dasein. Gemeinsames Charakteristikum ist die fallweise Identifizierbarkeit des Skalen- bzw. Textwertes  jedes tabellierten Falles in den Tabellen. Die fertigen Tabellen werden über die OLE-Schnittstelle direkt in Excel geschrieben: es gibt keine Tabellen in Postscript oder anderen Medien.

Es gibt vier verschiedene Spielarten von QUALITAB:

1.Zur Tabellieren von Alpha- oder Open-Variablen: QUALITAB OPEN = <variable> ;

2.Für fallweise Dokumentation und Häufigkeitsauszählung numerischer Variablen: QUALITAB ITEM = <variable> <low> <high>;

3.Für die fallweise Dokumentation und Häufigkeitsauszählung bipolarer Variablen: QUALITAB BIPOL = <varlist>  <low> <high>;

4.Für die Darstellung mehrerer Variablen zeilenweise nebeneinander: QUALITAB LIST = <varlist>;


QST

Ausgabeformat für VARLIST

Syntax:

VARLIST = <dateipfad> QST;

Die Variablen mit Bezug zu einem spaltenfixierten Datensatz (siehe ASCII und ColumnBinary) und ihre Verspaltung werden in einem speziellen QST-Format dargestellt.


ScriptExportFile

Syntax:

SCRIPTEXPORTFILE = [ APPEND ] <filename>;

Hiermit kann man Teile des Skripts als zu exportierenden »Fremdcode« definieren. Wenn der Name eines ScriptExportFile gesetzt ist, werden alle Bestandteile des Skripts zwischen #StartExport und #EndExport in diese Datei übertragen. Diese Texte werden auch vom Macro-Expander verarbeitet bzw. modifiziert, das macht den Reiz der Konstruktion aus. Man kann also auch z.B. durch geschachtelte Macros erzeugte Variablennamen ausgeben. Da gesstabs den input formatfrei interpretiert, werden allerdings auch keine Zeilenvorschübe übertragen. Man kann aber mit dem senkrechten Strich einen Zeilenvorschub an dieser Stelle erzwingen.

Wenn APPEND gesetzt ist und Filename eine beim Programm-Shutdown existierende Datei ist, wird der scriptexport an die bestehende Datei angehängt.


SortCodeOvercode

Alternative Methode zur Sortierung von Labellisten mit OVERCODE

Syntax:

TABLEFORMAT = +/- SORTCODEOVERCODE;

Es werden alle Labels, die Teil eines OVERCODEs sind, und die OVERCODE-Labels selbst, anhand des Kriteriums sortiert. Codes, die zu einem Overcode gehören, werden im Anschluss an diesen Overcode ausgegeben. Die Hierarchie der Obercodes wird nichts beachtet.

Diese Option ist auf Sortierungen nach ABSOLUTE und alle CELLELEMENTS, die MEAN beinhalten, beschränkt.

SORTCODEOVERCODE und AUTOOVERCODE schließen sich aus. Eine Tabelle, die diese beiden TABLEFORMATs enthält, ist ein syntaktischer Fehler.


Umformung nicht-COMPUTE-fähiger Variablen

LabelValue

Es gibt Fälle, in denen ein Zahlenwert nicht als numerische Variable vorliegt, sondern als Text-Variable: Eine ALPHA-Variable enthält einen String, den ein menschlicher Leser als eine Zahl lesen würde. Mit solchen Größen kann man aber nicht rechnen: Labels lassen sich nicht addieren, und auch nicht rekodieren. Das LABELVALUE-Statement erlaubt es, solche Texte in numerische Größen zu wandeln.

Syntax:

LABELVALUE <numvariable> = <variable>;

Wenn ein Label einer Variablen ein String ist, der eine syntaktisch korrekte Zahl darstellt, dann wird dieser String in einen numerischen Wert gewandelt und in die Zielvariable <numvariable> gespeichert, z.B.:

LABELVALUE NumberVar = alphatest;

Wenn alphatest den String »327« enthält, dann wird in NumberVar der Code 327 abgelegt. Ist es keine gültige Zahl wie z.B. »Micky Maus«, dann ist NumberVar anschließend Missing. Das funktioniert auch bei »normalen« Variablen, in diesem Fall wird das Label untersucht, das dem aktuellen numerischen Wert entspricht.

SingleFromString

Synonym für LABELVALUE

Syntax:

SINGLEFROMSTRING = <newvar> = <alphavar>;

UseOpenAsCode

Eine ähnliche Problematik wie bei LABELVALUE kann es auch bei Antworten auf offene Fragen geben: Die OPEN-Variable enthält einen numerisch interpretierbaren String.

Syntax:

USEOPENASCODE <varlist> = [ YES | NO ];

Steht dieser Schalter auf YES, dann wird versucht, die offene Antwort für die in <varlist> benannten Variablen in eine Zahl zu wandeln, und wenn dies erfolgreich ist, wird der numerische Wert in die betreffende Variable gespeichert.


WriteSignalFile

Syntax:

WRITESIGNALFILE = [ YES | NO ];

Wenn auf YES gesetzt, schreibt die Windows-Version bei Programmende dasselbe Signal-File wie die Linux-Version.


XTab

Neben dem TABLE-Befehl gibt eine weitere Möglichkeit, Kreuztabellen zu beschreiben. Diese zweite, kompliziertere Version macht es einfacher, in Tabellen Variablen nebeneinander zu tabellieren und ggf. auch verschiedene Gewichte in einer Tabelle zu verwenden.

Syntax:

XTAB  
[ <taboptions> ]
=
ROWS LOCAL ( <localvarlist> )
{
| <rowdescriptor> 
}*n
HEADER
{
| <columndescriptor> 
}*n

taboptions ::=
[
NAME <tablename> 
TITLE <tabletitle> 
CELLEEMENTS ( <cellelements> )
FRAMEELEMENTS ( <frameelements> )
TABLEFORMATS ( <tableformats> )
CONTENTKEY <text> 
]
rowdescriptor ::=
[
VARIABLE <localvarname> [ <sortoptions> [ : <condition> ]
|
OVERCODE <localvarname> [ <values> ] <labeltext> 
|
STATISTICS <text> <cellelement> ( <localvarname> ) [ <printoptions> ]
]
sortoptions ::= siehe die SORT Optionen des TABLE-statements
condition ::= jede nach GESS Syntax korrekte Bedingung
printoptions ::= [ : USEFONT <fontname> [ SIZE <size> ] 
 | : FORMAT <formatstring> ]
columndescriptor ::= [ <columnvar> | <singlecolumns> ]
columnvar ::= VARIABLE <varname> : <setlocalvars> [ : <condition> ]
singlecolumns ::= GROUP <condition> { | <singlecolumn> }*n 
 singlecolumn ::= <text> : <condition> : <setlocalvars> 
 { : <columnoption> }*n columnoption ::= [ USEWEIGHT <varname> |
USEFONT <fontname> [ SIZE <size> ] ]
setlocalvars ::= { <localvarname> = <varname> }*n

Am einfachsten verständlich wird es durch ein paar Beispiele. Das erste Beispiel tut dasselbe wie eine ganz simple Kreuztabelle mit TABLE:

XTAB

=

ROWS LOCAL ( v1 )

| VARIABLE

v1

HEADER

VARIABLE a1 : v1 = a2

ist die XTAB-Version des ganz einfachen TABLE-Statements:

TABLE = a1 BY a2; 

Die Anweisung sieht vor allem deshalb etwas umständlich aus, weil die Variable a2 über ein internes Konstrukt, eine lokale Tabellenvariable (v1), übergeben wird, die vorher am Anschluss an das ROWS-Schlüsselwort vereinbart wird. Ansonsten ist zu beachten, dass im Gegensatz zur TABLE-Schreibweise erst die Zeilen (ROWS) und dann die Spalten (HEADER) definiert werden.

Eine Mittelwertzeile z.B. ist über das STATISTICS-Schlüsselwort hinzuzufügen:

XTAB

=

ROWS LOCAL ( v1 )

|   VARIABLE

v1

|   STATISTICS "Mittelwert" MEAN( v1 ) : FORMAT "#,##" 

HEADER

VARIABLE a1 : v1 = a2

Das Ganze entspricht der TABLE-Anweisung:

TABLE = a1 BY a2 MEAN : DESCRIPTION "Mittelwert" : FORMAT "#,##" ( a2 ); 

Das XTAB-Statement erlaubt auch die lokale Definition von Overcodes (die dann nicht in der Labelliste stehen muss):

XTAB

=

ROWS LOCAL ( v1 )

| VARIABLE

v1

| STATISTICS "Mittelwert" MEAN( v1 ) : FORMAT "#,##" 

| OVERCODE v1 [ 1 : 2 ] "Top Box 1+2" 

HEADER

VARIABLE a1 : v1 = a2

Vorteilhaft wird das XTAB-Statement dann, wenn mehrere Variablen parallel in einer Tabelle dargestellt werden sollen. Um das ganze mit einem Beispiel abzurunden: Die Tabelle mit den 5 Items nebeneinander, die wir schon oben mit dem TABLE ADD Statement gebildet haben (Tabelle 13) ist hier noch einmal als XTAB-Version zu sehen. Die Variablen sind die selben wie oben beim TABLE Statement abgedruckt.

XTAB =

ROWS LOCAL ( var

)

| VARIABLE var

| STATISTICS "Mittelwert" MEAN( var )

HEADER

GROUP "5 Items nebeneinander" 

COLUMNS

| "Farbe wichtig": 1 EQ 1 : var=item_1

| "Sprach~qualität wichtig" : 1 EQ

1 : var=item_2

| "Gute Ausstattung wichtig" : 1 EQ 1 : var=item_3

| "Marke bevorzugt" : 1 EQ 1 : var=item_4

| "Marke abgelehnt" : 1 EQ 1 : var=item_5

XTAB - mehrere Variablen nebeneinander

XTAB - mehrere Variablen nebeneinander

Wenn wir diese Tabelle etwas »aufbohren« wollen, weil wir bei den Items immer eine Aufteilung nach dem Geschlecht sehen wollen, müssen wir 5 Groups definieren, und innerhalb der GROUPS differenzieren wir die COLUMNS nach Männern und Frauen. Da wir da 5 mal benötigen, machen wir das in einem Macro.

#macro #Item( &1 &2 )

GROUP "&1" 

COLUMNS

| "Männer": geschl eq 1 : var=&2

| "Frauen": geschl eq 2 : var=&2

#endmacro

Innerhalb der Tabelle wird das Macro dann fünfmal aufgerufen:

XTAB

FRAMEELEMENTS ( Absrow ) =

ROWS LOCAL ( var

)

| VARIABLE var

| STATISTICS "Mittelwert" MEAN( var ) : FORMAT "#,##" 

HEADER

#Item( "Farbe wichtig"                    item_1 )

#Item( "Sprach~qualität wichtig"   item_2 )

#Item( "Gute Ausstattung wichtig" item_3 )

#Item( "Marke bevorzugt"              item_4 )

#Item( "Marke abgelehnt"              item_5 )

Und so sieht das Ergebnis aus.

XTAB - mehrere differenzierte Variablen nebeneinander

XTAB - mehrere differenzierte Variablen nebeneinander

Wenn die Aufgabe statt dessen lautet, für Alle, Männer und Frauen die 5 Items nebeneinander darzustellen, dann enthält das Macro die fünf Items als Columns:

#macro #Items( &1 &2 )

GROUP "&1" &2

COLUMNS

| "Farbe wichtig": 1 EQ 1 : var=item_1

| "Sprach~qualität wichtig" : 1 EQ

1 : var=item_2

| "Gute Ausstattung wichtig" : 1 EQ 1 : var=item_3

| "Marke bevorzugt" : 1 EQ 1 : var=item_4

| "Marke abgelehnt" : 1 EQ 1 : var=item_5

#endmacro

Und das Macro wird in dem XTAB-Statement dreimal aufgerufen, für Alle, für die Männer und für die Frauen.

XTAB

FRAMEELEMENTS ( Absrow ) =

ROWS LOCAL ( var

)

| VARIABLE var

| STATISTICS "Mittelwert" MEAN( var ) : FORMAT "#,##" 

HEADER

#Items( "Total"  "" )

#Items( "Männer"    "geschl eq 1" )

#Items( "Frauen"      "geschl eq 2" )

XTAB: Items nebeneinander

XTAB: Items nebeneinander

Wenn die Spalten unterschiedlich gewichtet werden sollen, kann man jeweils nach einem Doppelpunkt weitere Optionen, z.B. (USEWEIGHT und USEFONT) anfügen:

Man kann also solche Tabellen mit XTAB leichter aufbauen, bei denen spaltenweise immer neue Informationen (und Variablen) hinzugefügt werden müssen.