Willkommen bei GESS.
Sie wurden angerufen?
GESS
  • Startseite
  • Software
    • GESStabs
    • GESS Q.
    • GESS ChartFactory
    • GESS Cati
    • Support, Neuigkeiten und Dokumentation
  • Umfragen und Analysen
    • Telefonumfragen
    • Onlineumfragen
    • Offlineumfragen
    • Mixed-Mode-Design
    • Datenverarbeitung und Analysen
  • Blog
  • Unternehmen
    • Engagement
    • Jobs
  • Referenzen
    • Kunden und Partner
    • Projekte
  • Kontakt
    • Impressum
    • Datenschutzerklärung

GESStabs

Hier informieren wir Sie über ausgewählte neue Funktionen und Einstellungen für GESStabs!

Eine voll­stän­di­ge Dokumentation aller aktu­el­ler und ver­gan­ge­ner Software-Updates fin­det sich im aktu­el­len Read.me.


18.11.2022: Neue CellElements: ROWPERCENT100 und COLUMNPERCENT100

Die Rundung von Prozentwerten ergibt in der Summe nicht immer 100%. Das ist für pro­fes­sio­nel­le Tabellenleser/innen i.d.R. kein Problem. Für die Weitergabe an Medien wer­den aller­dings ab und zu Tabellen gewünscht, bei denen die ein­zel­nen aus­ge­wie­se­nen Prozentwerte auf 100% addie­ren. D.h. die eigent­lich kor­rekt aus­wie­se­nen Prozentwerte müs­sen ver­fälscht oder modi­fi­ziert wer­den. Numerisch ist dies ver­wandt mit der Berechnung von Sitzverteilungen. Bei den neu­en CellElements wird eine fik­ti­ve Sitzverteilung auf 100 ange­wen­det: Aus 33%, 33%, 33% wird dann 33%, 33%, 34%, und der media­le Tabellenleser ist glück­lich, dass alle Verteilungen auf 100 aufgehen.

Es gibt vie­le ver­schie­de­ne Modelle zur Berechnung von Sitzverteilungen, GESStabs ver­wen­det die nach Hare-Niemeyer.

Es liegt in der Verantwortwung des Skripters, die­se Funktiion nur dort anzu­wen­den, wo es sinn­voll ist. Bei Tabellen mit Variablen, die Mehrfachnennungen oder OVERCODES ent­hal­ten, wird es das i.d.R. nicht der Fall sein. Auch bei Variablen, die nicht alle Fälle aus­wei­sen, z.b. unter­drück­te MISSINGVALUES oder selek­tiv gebil­de­te Variablen zur Verwendung in Köpfen, dürf­te die­se Form der Prozentuierung offen­sicht­li­chen Unsinn pro­du­zie­ren. Also: erst über­le­gen, dann anwenden.


01.11.2022: Handbuch 5.2

Das neue, voll­stän­dig über­ar­bei­te­te und aktua­li­sier­te GESStabs-Handbuch ist ab jetzt als Online-Hilfe ver­füg­bar: https://help.gessgroup.de/gesstabs-help/

Haben Sie bis­her mit dem Handbuch 5.1 gear­bei­tet? Dann ist es ggfls. nötig, den Cache Ihres Browsers zu löschen, um die neue Version 5.2 ein­se­hen zu können.


24.10.2022: Neues Featute: SHEETNUMBERCHAR

Syntax:

SHEETNUMBERCHAR = <char>;

Wenn SHEETNUMBERCHAR gesetzt ist, wird bei OFFICEEXPORT an die­ser Stelle die Tabellennummer in den Namen des Excel-Sheets gesetzt.

In einer letz­ten Implementation hat GESStabs den all­ge­mei­nen NUMBERCHAR ver­wen­det, um Tabellennummern ein­zu­tra­gen. Dies kol­li­dier­te mit ande­ren Verwendungen und Verwendern. Die Tabellennumer wird jetzt nur dann ein­ge­tra­gen, wenn der oben genann­te Parameter im Skript gesetzt ist.


26.09.2022: Neues Default für HORIZONTALALIGN

Neues Default:

| HORIZONTALALIGN LABELS Y : LEFT

11.08.2022: Neues Feature: SUPPRESSEMPTYSHEET

Syntax:

SUPPRESSEMPTYSHEET = [ YES | NO ];

Wenn man statt OFFICECHAPTERPAGE das his­to­risch älte­re Statement CHAPTERTITLE ver­wen­det, das eben­falls ein neu­es Excel-Sheet erzeugt, und außer­dem SUPPRESSEMPTYSHEET auf YES setzt, dann wer­den lee­re Sheets nicht in das Excel-file geschrieben.

Damit ist aller­dings ver­bun­den, dass man die übri­gen Parameter von OFFICECHAPTERPAGE nicht ver­wen­den kann.


01.08.2022: Funktionserweiterung von ASSOCFILE CSV COPY um BLACKLIST/WHITELIST

Syntax:

ASSOCFILE CSV COPY =  KEY    [ BLACKLIST | WHITELIST ] {}*n; 
<key-variable> ::=  die Schlüsselvariable im Hauptdatensatz
<key-field>    ::=  Name des Feldes, das als Schlüssel dienen soll

Im Anschluss an den Namen des Schlüsselfeldes kann ent­we­der BLACKLIST oder WHITELIST ste­hen, gefolgt von den Feldnamen, die aus­ge­schlos­sen bzw. aus­schließ­lich in den daten­satz über­nom­men wer­den sollen.

BLACKLIST und WHITELIST wir­ken sich nur auf den Kopiervorgang aus. Die Feldnamen wer­den an die­ser Stelle nur gespei­chert; sie kön­nen nicht syn­tak­tisch dar­auf geprüft wer­den, ob sie im ASSOCFILE tat­säch­lich vor­han­den sind. Es ist also auch syn­tak­tisch kein Fehler, wenn hier unsin­ni­ge Namen ste­hen. Ebenso ist eine BLACK-/WHITELIST in einem ASSOCFILE CSV ohne COPY zwar wir­kungs­los, aber kein Fehler.


01.08.2022: Funktionserweiterung von ASSOCFILE CSV : COPY

Syntax:

ASSOCFILE CSV COPY = <filename> KEY <key-variable> <key-field> ;

Arbeitsschritte, die häu­fig auf­tre­ten, mög­lichst ein­fach und prak­tisch zu machen, ist ein Schwerpunkt der Weiterentwicklungen bei GESS. Deshalb haben wir die Anregung gern auf­ge­grif­fen, den Import wei­te­rer Variablen aus CSV-Files mög­lichst “strom­li­ni­en­för­mig” zu gestalten.

Wenn vor dem Zuweisungszeichen das Keyword COPY im Statement steht, wer­den die Variablen, die in der Kopfzeile des ASSOCFILE ste­hen, aus ASSOCVARS in nor­ma­le Variablen kopiert. Zu die­sem Zweck wer­den ASSOCVARS gebil­det, deren Namen aus dem ASSOCFILE um ein Prefix erwei­tert wer­den; die­ses lau­tet im Default “$ cpy”. Die Namen aus der Kopfzeile des ASSOCFILE sind dann die Namen von “nor­ma­len” Variablen. Zusätzlich wer­den COMPUTE-Statements gene­riert, die die Inhalte der ASSOCVARS in die­se Standard-Variablen übertragen.

In einem Beispiel:

SPSSINFILE = data1.sav; //das sav-file enthält eine schlüssel-variable key_data
ASSOCFILE CSV COPY = "assoctest-assoc.csv" KEY key_data key_assoc;
SPSSOUTFILE = data2.sav;
// die Kopfzeile im ASSOCFILE lautet:
// key_assoc;assoc1;assoc2;$Mmmx1;$Mmmx2;$Mmmx3;$dddx1;$dddx2;$dddx3

Das SPSSOUTFILE data2.sav ent­hält dann 9 zusätz­li­che ato­ma­re Variablen aus dem ASSOC-File mit den oben auf­ge­führ­ten Namen und zusätz­lich zwei Mehrfachnennungsvariablen, die MULTIQ mmx und die DICHOQ ddx.

Damit ist die Erweiterung bestehen­der Datensätze um wei­te­re Variablen sehr ein­fach. Die “nor­ma­len” Variablen wer­den in einer 1:1‑Zuordnung aus den ASSOCVARs gebildet.

ASSOCFILEs in der all­ge­mei­nen Form erlau­ben auch die Zuordnung meh­re­rer Zeilen mit iden­ti­schen Keys in den ASSOCVARs, d.h. eine ASSOCVAR, z.B. assoc1 im obi­gen Beispiel, kann mehr als einen Wert ent­hal­ten. Das ist für eine ato­ma­re Variable assoc1 nicht mög­lich. In der spe­zi­el­len Konstellation von ASSOCFILE CSV COPY darf es des­halb für jeden Schlüssel nur eine Zeile geben. Im Falle von ASSOCFILE CSV COPY wird dies über­wacht. Wenn das ASSOCFILE meh­re­re Zeilen mit dem­sel­ben Schlüssel ent­hält, wird der Programmlauf mit einer Fehlermeldung beendet.


22.07.2022: Syntaxerweiterung ALLOWEMPTY für CSVINFILE

Syntax:

CSVINFILE  [ FILEKEY  ] [  ] [ ALLOWEMPTY ] = ;

Wenn ein CSV-Infile mit ALLOWEMPTY gekenn­zeich­net wird, ist es erlaubt, dass die­se Datei nicht exis­tiert. Damit ver­hält sich CSVINFILE so wie DATAFILE oder OPENQFILE. Wenn die­ser Fall ein­tritt, wird dies in den mMssages vermerkt.


18.07.2022: Funktionserweiterung von AUTONOANSWER

Bisher hat GESStabs AUTONOANSWER nur auf Variablen ange­wen­det, die VALUELABELS haben; rein nume­ri­sche Variablen wur­den als MISSING-Fälle von der Auswertung aus­ge­schlos­sen, aber die feh­len­den Werte nicht wie bei gela­bel­ten Variablen aus­ge­ge­ben. Ab Version 5.2.1.16 wer­den die feh­len­den Werte wie bei gela­bel­ten Variablen unter dem im AUTONOANSWER-Statement Text zusam­men­ge­fasst. Falls dies nicht gewünscht ist, muss man jetzt die varia­blen­be­zo­ge­ne Version von AUTONOANSWER ver­wen­den, um die­ses Verhalten auszuschalten:

AUTONOANSWER  = NO;

18.07.2022: Neues Steuerungselement für OFFFICEEXPORTOPTIONS: XLABELSIGNCHARBOX

Syntax:

....
| XLABELSIGNCHARBOX LABELS X : YES
....

Die Positionierung der auto­ma­tisch ver­ge­be­ne­nen Siginifikanzbuchstaben funk­tio­nier­te in PS/PDF, war bei OFFICEEXPORT teil­wei­se aber unschön. Mit der neu­en Option XLABELSIGNCHARBOX wird für die­se Buchstaben eine zusätz­li­che Excel-Zeile erzeugt, in die die­se aus­ge­ge­ben wer­den. Die PS/PDF-Zeilenumbrüche wer­den igno­riert, und es wird ein Umbruch in Excel erzeugt; d.h. XLABELSIGNCHARBOX ver­hält sich in die­ser Hinsicht wie FLOWTEXT. Bei ande­ren Boxtypes als LABELS X wird die Option ignoriert.


11.07.2022: Neues Feature: INHERITBACKGROUND und INHERITFOREGROUND

Analog zu INHERITFONT kann man hier­mit die Vererbung der Hintergrund-/Vordergrund-Farbe aus dem Label in die Datenzellen der Tabelle einschalten.
Syntax:

INHERITBACKGROUND  X | Y ] = [ YES | NO ];
INHERITFOREGROUND[ X | Y ] = [ YES | NO ];

Wählt man die Variante mit X, wer­den die Farben aus der X‑Achse (i.dR. Tabellenkopf) ver­erbt, d.h. alle Zellen, die sich ver­ti­kal unter­halb des Labels befin­den. Bei der Variante Y wer­den Farben aus der Y‑Richtung hori­zon­tal vererbt.


07.07.2022: Neues Feature zur Steuerung der Tabellenausgabe: SORTPOSITION AFTER, SORTPOSITION LINE

Zusätzliche Labeleigenschaften von OVERCODE zu genau­en Platzierung von OVERCODE-Zeilen in Tabellen, die mit AUTOSORTTREE anstel­le von AUTOOVERSORT sor­tiert wurden.
Syntax:

OVERCODE ....... SORTPOSITION AFTER 
OVERCODE ....... SORTPOSITION LINE 

Bei der hier­ar­chi­schen Sortierung von (OVER)OVERCODEs sind Overcodes ein Problem, die mit der iden­ti­schen Menge von Codes defi­niert wur­den. GESStabs sor­tiert die­se Doubletten aus. Unternimmt der Benutzer nichts, erschei­nen sie am Ende der Tabelle. Mit den SORTPOSITIONs kann der Scripter gezielt eingreifen.


07.07.2022: Neues Feature: RECHIPREFIX

Syntax:

RECHIPREFIX = ;

Eine prak­ti­sche Möglichkeit, um in Tabellen, die mit­tels AUTOSORTTREE sor­tiert wer­den, die Zeilen zu kenn­zeich­nen, die “übrig geblie­ben” sind. Die Zeichenfolge wird dann am Beginn des Labeltextes eingefügt.


04.07.2022: TABLEFORMAT AUTOSORTTREE

Die hier­ar­chi­sche Sortierung von Codes und Overcodes wur­de neu implementiert.
Die seit Langem ein­ge­setz­te Methode AUTOOVERSORT hat Schwächen: Der AUTOOVERSORT-Algorithmus, den es wei­ter­hin gibt, basiert auf einer ein­zi­gen Sortierung der Gesamttabelle mit mehr­fa­chen Häufigkeiten. Wie sich her­aus­ge­stellt hat, hat die­se Methode die Hierarchie der Codes und Overcodes in eini­gen Fällen nicht rich­tig abgebildet.
Neben AUTOOVERSORT tritt jetzt AUTOSORTTREE. An die Stelle der Sortierung in einem Rutsch mit meh­re­ren Sortierkriterien tritt dann eine klein­tei­li­ge­re baum­ori­en­tier­te Methode.
Bestehende Skripte, in denen AUTOOVERSORT ver­wen­det wird, wer­den unver­än­dert nach der AUTOOVERSORT-Methode abgearbeitet.
Die bei­den Methoden sind nicht kom­pa­ti­bel; dar­aus ergibt sich, dass die Verwendung bei­der TABLEFORMATs zu einem Fehlerabbruch (Syntaxfehker 744) führt.
Eine aus­führ­li­che Doku mit Beispielen ist im GESStabs-Handbuch zu finden.


13.06.2022: FOREGROUND und BACKGROUND für das Ergebnis von CALCULATECOLUMN

Syntax:

CALCULATECOLUMN <zielspalte> [ FORMAT <format> ] [ FOREGROUND <rules> ] [ BACKGROUND <rules> ] = <arithemtischer spaltenausdruck>;
<rules> ::= ( { <rule> }*n )
<rule>  ::= [ GE | GT ] <number1> [ LT | LE ] <number2> : 

Es ist ein Syntaxfehler, wenn die Bedingung <number1> <= <number2> nicht erfüllt ist.
Z.B.:

CALCULATECOLUMN  <1 1> BACKGROUND ( GE 12 LE 15 : $D0D0FF GE 15 LT 21 : E0E0FF ) = <1 2> / <1 3>;

Die ein­zel­nen Bereiche kön­nen sich über­lap­pen; es gilt der letz­te “tref­fer”.
Z.B.:

CALCULATECOLUMN <1 6>  
FOREGROUND ( ge 3 le 99 : $ff0000 ) 
BACKGROUND ( ge 2 le 3 : $e0e0ff ge 0 le 2 : $d0d0ff ) 
FORMAT "#,#" 
= <1 4> / <1 1> ;

Der Wert 2 als Ergebnis wäre ohne die Regel oben nicht ein­deu­tig; die Zelle wird mit $d0d0ff und nicht mit $e0e0ff gefärbt. Die letz­te Zeile könn­te auch in zwei getrenn­ten BACKGROUND-Regeln beschrie­ben wer­den. Gleichbedeutend wäre:

BACKGROUND ( ge 2 le 3 : $e0e0ff ) BACKGROUND ( ge 0 le 2 : $d0d0ff ) 

An dem Vorrang von $d0d0ff wür­de sich nichts ändern.


02.05.2022: Neues Feature: INVERTIN kann aus mehreren Files nacheinander lesen

Syntax:

INVERTIN = file1;
INVERTIN = file2;
....

Ähnlich wie bei CSVINFILE und SPSSINFILE kann man jetzt meh­re­re inver­tier­te Systemdateien nach­ein­an­der ein­le­sen. Dieses Feature ermög­licht es unter ande­rem, unter­schied­lich gewich­te­te Teilmengen wie­der in eine Gesamtdatei zusammenzufassen.

Beispiel:
run1:

INVERTIN = gesamt.inv;
SELECT split EQ 1;
WEIGHTCELLS = .....
INVERTFILEWEIGHTOUT = w1;
INVERTOUT = split1.inv;
END;

run2:

INVERTIN = gesamt.inv;
SELECT split EQ 2;
WEIGHTCELLS = .....
INVERTFILEWEIGHTOUT = w1;
INVERTOUT = split2.inv;
END;

In run3 wer­den die bei­den inver­tier­ten Dateien nach­ein­an­der ein­ge­le­sen. Nach dem ers­ten INVERTIN-Statement wird der schal­ter NOINVERTADDON auf YES gesetzt, um das Einlesen der auto­ma­tisch erzeug­ten JSON-Beschreibung und GESStabs-syn­tax zu blo­ckie­ren. Im INC-File kön­nen näm­lich Statements ste­hen, die nicht mehr­fach auf­tre­ten dür­fen, so z.B. Variablengeneriereng mit­tels VARFAMILY oder VARGROUP, die einen Syntaxfehler aus­ge­ben, wenn die zu ereu­gen­de Variable bereits exis­tiert. Es ist also siche­rer, das Einlesen die­ser Files nach dem ers­ten INVERTIN-Statement zu unterbinden.
run3:

INVERTIN = split1.inv;
NOINVERTADDON=YES;
INVERTIN = split2.inv;
USERWEIGHT = w1;
INCLUDE = tab.inc;
end;

Inhaltlich konn­te man das­sel­be mit­tels CSV- oder SPSS-sav-Files bereits vor­her tun; bei sehr vie­len Fällen kann man durch die binä­re inver­tier­te Speicherung aber einen gGeschwindigkeitsvorteil erreichen.


26.04.2022: Neues Statement DOUBLECODEINOVERCODE

Syntax:

DOUBLECODEINOVERCODE = [ YES | NO ];

Default: NO

Ist in den OVERCODEs einer Variablen ein Code mehr­fach ver­ge­ben, ist die Zuordnung die­ses Codes zu einem OVERCODE nicht mehr ein­deu­tig. Diese Konstellation führt bei AUTOOVERSORT zu nicht lös­ba­ren Sortierungen — im Klartext: die Sortierung ist dann falsch.
Dieser Fehler ist manch­mal schwer zu erken­nen. Setzt man die­sen Schalter auf YES, wird beim Einlesen der OVERCODEs über­wacht, dass jeder Originalcode nur ein­mal in allen OVERCODEs einer Variablen auf­tritt, es wird ein Warnhinweis gene­riert und in die Messages (gtc.msg) aus­ge­ge­ben, und anschlie­ßend wird GESStabs mit einem Syntaxfehler beenden.
Zu Default NO: Es ist im enge­ren Sinne kein syn­tak­ti­scher Fehler; es kann sinn­voll sein, einen Code mehr als einem OVERCODE zuzu­ord­nen. Der Algorithmus zum AUTOOVERSORT funk­tio­niert dann aber nicht. Für Labels, die in AUTOOVERSORT-Tabellen ver­wen­det wer­den, dürf­te es sinn­voll sein, die­sen Schalter auf YES zu setzen.


23.03.2022: Syntaxerweiterung LABELS bzw. VALUELABELS ADD

Syntax:

LABELS = [ ADD [ POSITION <number> ] ]
<ein neues Label>
;

Im Anschluss an das Keyword ADD kann man jetzt die Position vor­ge­ben, an der das neue Label in die Labelliate ein­ge­fügt wer­den soll. Die Zählung ist 1‑basiert. Fügt man über ein LABELS … ADD POSITION ein, soll­te man dies auf ein neu­es Label beschrän­ken. Auch meh­re­re Labels wer­den syn­tak­tisch zwar akzep­tiert, hier­von wird aber abgeraten.

will man z.B. ein Label vor allen bestehen­den ein­fü­gen, so schreibt man z.B.:

LABELS testvar = ADD POSITION 1
7 "label zum neuen code 7 am anfang der liste"
;

Wenn man ein LABEL/OVERCODE an eine Position ein­fü­gen will, die so nicht “exis­tiert”, wenn man z.B. an POSTIION 5 an einer Liste von Valuelabels mit nur 3 Labels ein­fü­gen will, wird die­ses Label ein­fach ans Ende der Liste ange­hängt, so, als ob kei­ne POSITION ange­ge­ben wäre.

Es ist auch mög­lich, einen zusätz­li­chen OVERCODE ein­zu­fü­gen, z.B.:

LABELS OCTEST = ADD POSITION 1
OVERCODE 1 2 3 "OC 1 2 3"
;

OVEROVERCODE kön­nen hier­mit nicht ein­ge­fügt werden.


20.03.2022: Neue Labeleigenschaften: BACKGROUND FOREGROUND

Syntax:

...
labels
...
<code> <text> ... FOREGROUND  <color>...
<code> <text> ... BACKGROUND  <color>...

Man kann ein­zel­nen Labels jetzt auch Farbinformationen für Vordergrund (Schriftfarbe) und Hintergrund mit­ge­ben. Das funk­tio­niert bei Kreuztabellen in PS und PDF.
Zum Beispiel:

LABELS OCTEST =
OVERCODE 1 2 3 "OC123"
* EINS BACKGROUND 0.99 0.95 0.80
* ZWEI BACKGROUND $EEFFFF
* DREI BACKGROUND $DDDDDD
* VIEL
* FÜNF
;

Farben kön­nen sowohl in der PS-typi­schen Notation als 3 Floats zwi­schen 0 und 1 als auch als hexa­de­zi­ma­le Zahl (mit $ ein­ge­lei­tet) ange­ge­ben wer­den. Über die OFFICEXPORTOPTIONS USEPOSTSCRIPTCOLORS kann man die Farben der Labels aus PS auch in den OFFICEEXPORT über­tra­gen. Wie gehabt haben expli­zi­te Farbsetzungen in den OFFICEXPORTOPTIONS vorrang.
Beispielsweise:

OFFICEXPORTOPTIONS =
| USEPOSTSCRIPTCOLORS LABELS Y  : YES
...

20.03.2022: Erweiterung von NOOCINHEADER NOOCINSTUB

Syntax:

NOOCINHEADER = [ YES | NO ];

Unterdrückung von OVERCODES im Tabellenkopf bzw. in der ‑vor­spal­te
Die bis­he­ri­ge Implementierung erlaub­te zwar die Verwendung die­ser Steuerung, aber nur glo­bal für den gan­zen Tabellierlauf. Jetzt sind die­se Statements Voreinstellungen; sie gel­ten für alle Tabellen in der Folge, bis sie durch ein wei­te­res Statement neu gesetzt werden.


10.03.2022: Neues Feature in OFFICEEXPORTOPTIONS

Syntax:

...
...
TEXTROWHEIGHT <box> : <pixels>
...
<box> ::= TABLETITLE TOPTEXT LABELS X etc.
<pixels>::= gewünschte Zeilenhöhe in Pixel

Beim Anlegen einer neu­en Zeile, die zu einer gehört, wird die Höhe der Zeile auf die­sen Wert gesetzt. Das ist eher eine ver­zwei­fel­te Maßnahme, wenn man die Füllung einer Excelzelle oder eines Range von Zellen anders optisch nicht in den Griff bekommt.


08.03.2022: Neues Feature: OPENCSV

Syntax:

NEWOPENFORMAT = [ YES | NO ];
OPENCSV = [ YES | NO ];
mit der kommandofolge
NEWOPENFORMAT = YES;
OPENCSV = = YES;
OPENQFILE = openscoded_onlycodes.csv;

Man kann GESStabs anwei­sen, aus der Datei rein nume­ri­sche Codes für die offe­nen Fragen zu impor­tie­ren. Die Struktur, die erwar­tet wird, ent­spricht dem, wie sie bei GESS oft ver­wen­det wird:
;;;; .….
Die Variablen, die im OPENQFILE ver­wen­det wer­den, kön­nen ent­we­der in der übli­chen Syntax im Skript vor dem OPENQFILE-Statement defi­niert wer­den, oder man lässt sie mit OPENAUTOGENERATE auto­ma­tisch erstellen.


07.03.2022: Neues Feature: OPENAUTOGENERATE

Syntax:

OPENAUTOGENERATE = [ YES | MULTIQ  [ PREFIX  ] ] | ALPH [ PREFIX  ] ];

Wenn in einem OPENQ-File Variablen refe­ren­ziert wer­den, die nicht im Script defi­niert sind, dann kön­nen die­se Variable erzeugt wer­den. Diese ein­fachs­te Version besteht nur aus dem Keyword YES: OPENAUTOGENERATE = YES;
Handelt es sich um eine Variable, für die bereits Code-Values ein­ge­tra­gen sind, kann man mit einer der unten auf­ge­führ­ten Varianten die­se in eine MULTIQ able­gen las­sen. Die Größe die­ser MULTIQ kann im Statement ver­ein­bart wer­den. der Name der zu bil­den­den Variable besteht aus einem Prefix, default “M_”, und dem Namen der OPQENQ.

Zum Beispiel:

OPENAUTOGENERATE =  MULTIQ 5;

Das Prefix kann im Statement expli­zit ange­ge­ben werden.

OPENAUTOGENERATE =  MULTIQ 5 PREFIX "mul";

Es ist auch mög­lich, die Texte im OPENQ-File in eine OPENASALPHA able­gen zu las­sen, die den­sel­ben Namen trägt wie die OPENQ.

OPENAUTOGENERATE = ALPHA;

Zusätzlich kann eine “ech­te” Alpha-Variable gene­riert wer­den, indem man einen von Default “” abwei­chen­den Prefix defi­niert, z.B.:

OPENAUTOGENERATE = ALPHA PREFIX "alpha";

Das Folgende ist ein biss­chen tricky:
Es ist wahr­schein­lich hilf­reich, wenn man sich den Entstehungszeitpunkt der durch OPENAUTOGENERATE gene­rier­ten Variablen ver­ge­gen­wär­tigt. Diese ste­hen erst nach dem Einlesen des OPENQFILE zur Verfügung, und dies kann auch nicht anders sein, aus die­sem File stam­men ja die benö­tig­ten Informationen (Variablennamen). Die OPENQFILEs haben im Ablauf von GESStabs eine Sonderstellung, denn deren Inhalte müs­sen ja wäh­rend des Einlesens der Daten (SPSSINFILE, CSVINFILE, DATAFILE etc.) auf­grund des Schlüssels “geholt” wer­den. Es gibt zwi­schen dem Ablauf des Compilers und der Datenauswertung eine “Zwischenzeit”, in der OPENQFILEs und ASSOCFILEs ver­ar­bei­tet wer­den. Diese “Zwischenzeit” ist not­wen­di­ger­wei­se nach dem Abschluss des Compilerlaufs, sodass man in der Syntax, sprich wäh­rend des com­pi­ler­laufs, nicht auf die OPENAUTOGENERATE-Variablen zugrei­fen kann. Man kann sie also im Ablauf des Skripts zu ihrer Erzeugung nicht “anfas­sen” und z.B. tabel­lie­ren. Folglich muss man einen klei­nen Umweg neh­men, und erst ein SPSS-sav-File oder GESS-inv-File bau­en, bevor man sie tabel­lie­ren kann. Das funk­tio­niert, weil die Variablen für ein glo­ba­les SPSSOUTFILE erst nach die­ser “Zwischenzeit” zusam­men­ge­stellt wer­den; auch mit den inver­tier­ten Datensätzen (INVERTOUT) ist dies mög­lich. INVERTOUT/INVERTIN ist die bes­te Wahl, weil hier alle Syntaxelemente bewahrt wer­den, neben dem VARTITLE z.B. auch der VARTEXT. Das STORETOSPSS-Statement hin­ge­gen kann dies eben­so­we­nig wie das STORETOCSV-Statement, da die­se die Variablenliste in der Compile-Zeit
zusam­men­stel­len. In bei­den Fällen muss man die Variante wäh­len, die ALLE Variablen expor­tiert, also OHNE STORETOSPSS bzw. STORETOCSV. Das ALL im STORETOCSV tut’s nicht, es lis­tet ledig­lich alle Variablen auf, die zur Compile-Zeit vorliegen.


03.03.2022: CONTENTPAGE: neues feature für OFFICEEXPORTOPTIONS EDIT

Syntax:

OFFICEEXPORTOPTIONS EDIT OFFICECONTENTPAGE = 
...
...
;

In die­sem Falle wird eine Kopie der gera­de gül­ti­gen OFFICEOPTIONS erstellt, und an einem spe­zi­el­len Ort für den Zugriff wäh­rend der Bearbeitung der OFFICECONTENTPAGE gespei­chert. Alle wei­te­ren Statements bis zum Semikolon haben dann nur einen Effekt in der OFFICECONTENTPAGE. Diese spe­zi­ell gespei­cher­ten Daten kön­nen nicht mit EDIT wie­der modi­fi­ziert wer­den; wird ein wei­te­res OFFICEOPTIONS EDIT OFFICECONTENTPAGE gefun­den, beginnt die­se Modifikation wie­der auf der Basis der gera­de gül­ti­gen OFFICEOPTIONS-Werte.


03.03.2022: Neue syntax zum Exportieren von Daten im CSV-Format

Diese Syntax besteht aus den fol­gen­den 5 Einzelstatements:
1. CSVOUTFILE
2. STORETOCSV
3. NOCSV
4. CSVWEIGHTOUT
5. ENCODING CSVOUTFILE
6. ASCIIOUTDECIMALCHAR

1. Syntax:

CSVOUTFILE = <name> ;

kann ein voll­stän­di­fer Pfad oder nur ein Dateiname sein. Die Extension wird auto­ma­tisch auf ‘CSV’ gesetzt.

2. Syntax:

STORETOCSV = [ ALL | <varlist> ];

Wird ALL ange­ge­ben, wer­den alle bekann­ten SINGLEQ, MULTIQ und DICHOQ in die Liste der zu expor­tie­ren­den Variablen ein­ge­tra­gen, wenn sie nicht als Systemvariablen gekenn­zeich­net sind.
Ebenso wird mit allen Variablen in der expli­zit ange­ebe­nen Variablenliste verfahren.

3. Syntax:

NOCSV <varliste> = YES;

Alle Variablen in der ange­ge­be­nen Variablen wer­den als nicht zu expor­tie­ren gekenn­zeic­net. Dieses Exportverbot gilt auch dann, wenn sie im STORETOCSV-Statement expli­zit ange­spro­chen wurden.

4. Syntax:

CSVWEIGHT = <varname> ;

Unter dem ange­ge­be­nen Namen wird eine Gewichtungsvariable ins CSV-File expor­tiert. Wenn ein Systemgewicht besteht, z.B. auf­grund von einer ite­ra­ti­ven Gewichtung auf­grund von WEIGHTCELLS oder als USEWEIGHT, wird die­ser Wert exportiert.

5. Syntax:

ENCODING CSVOUTFILE = [ ANSI | UTF8 ];

Man kann auch das Encoding der Ausgabedatei festlegen.

6. Syntax:

ASCIIOUTDECIMALCHAR = ;

Wenn Excel mit den Daten zufrie­den sein soll, muss man ASCIIOUTDECIMALCHAR = ‘,’; setzen.


17.02.2022: Neue Option in OFFICECONTENTPAGE: TEXTBOX

Syntax:

OFFICECONTENTPAGE =
.....
| TEXTBOX
: BOXTEXT
"<text, darf mehrzeilig sein>"
: POSITION "b20:e23" FONT "Courier-new" SIZE 13 
DRAWBOX WEIGHT [ THIN | MEDIUM | THICK ] BORDERS [ TOP | BOTTOM | LEFT| RIGHT | ALL ] COLOR $
FOREGROUND $<number>
BACKGROUND $<number>
.....

Hiermit kann man auch Linien erzeu­gen, dafür muss der BOXTEXT leer sein. Man kann dann in der BORDERS-Komponente z.B. für eine waa­ge­rech­te Linie TOP oder BOTTOM wäh­len. Die Länge der Linie ergibt sich dann aus der Dimension in POSITION. Zum Beispiel:

.....
| TEXTBOX
: BOXTEXT ""
: POSITION "b25:e25"
DRAWBOX WEIGHT MEDIUM BORDERS BOTTOM COLOR $000000
.....

Auf einer OFFICECONTENTPAGE kön­nen belie­big vie­le TEXTBOX-Substatements ver­teilt wer­den. Es ist sicher auch wei­ter­hin eine gute Idee, die Elemente abstei­gend von links nach rechts zu ver­ge­ben. Der Algorithmius ist aber jetzt so modi­fi­ziert, dass auch eine belie­bi­ge Reihenfolge rich­tig pla­ziert wird.


07.02.2022: Neue Optionen in den OFFICEXPORTOPTIONS

1. EXCELCALCROWHEIGHT

Syntax:

| EXCELCALCROWHEIGHT : [ YES | NO ]

Bisher wur­de die benö­tig­te Zeilenhöhe durch das OFFICEEXPORT-Interface berech­net. Das war ofen­sicht­lich nicht immer zufrie­den­stel­lend. Es gibt jetzt eine neue Option in den OFFICEXPORTOPTIONS: Setzt man hier EXCELCALCROWHEIGHT auf YES, wird von GESStabs über das Interface kei­ne Vorgabe gemacht, und Excel berech­net das selbst. Diese Option wur­de bis­lang nicht in GESStabs ver­wen­det, weil als Warnung ver­merkt ist, dass es manch­mal zu Ungenauigkeiten bei der Positionierung von Charts und Bildern kom­men kann. Optisch sieht es so in den meis­ten Fällen gefäl­li­ger aus.

2. FIRSTCOLUMN

Syntax:

| FIRSTCOLUMN : 

Wenn man eine Zahl n grö­ßer 1 angibt, wer­den solan­ge lee­re Zellen (n‑1) vor jeder Tabellenzeile ein­ge­fügt, dass die ers­te Spalte ent­spre­chend posi­tio­niert ist.

3. CALCROWHEIGHT

Syntax:

| CALCROWHEIGHT : [ EXCEL | MULTILINE | SINGLELINE ]

Das Interface zur Erzeugung von OFFICEXPORT bie­tet drei Vorgehensweisen an, die hier­mit durch den/die Scripter/in expli­zit gesetzt wer­den können.
EXCEL: Von Seiten des Interfaces wer­den kei­ne Vorgaben gemacht; Excel entscheidet.
MULTILINE: Das Interface berech­net die Zeilenhöhen selbst beim Export.
SINGLELINE: Das Interface berech­net die Zeilenhöhe einer ein­zel­nen Zeile selbst beim Export.
Die letz­te Version dürf­te in Tabellen nur sel­ten sinn­voll sein; es ging dar­um, alle Optionen, die das OFFICEXPORT-Interface anbie­tet, im Script aus­wähl­bar zu machen.
Snmerkung: Bei lang­wie­ri­gen Fehlersuchen ist auf­ge­fal­len, dass ein­zel­ne Fonts sich im Export unter­schied­lich ver­hal­ten. Manchmal mag es bei lang­wie­ri­gen Versuchen, ein anstän­di­ges Schriftbild zu erhal­ten, sinn­voll sein, test­hal­ber einen ande­ren Font zu wäh­len. Unerwünschte Effekte sind bei Open Sans aufgefallen.


07.02.2022: Neues Feature: COLORIFBASELESS

Dies ist eine neue Methode, um Werte in Tabellen zu kenn­zeich­nen, die auf­grund zu gerin­ger Basis nicht oder sehr zurück­hal­tend inter­pre­tiert wer­den soll­ten. Zur Darstellung wird eine abwei­chen­de FOREGROUND-Color für die betrof­fe­nen CELLELEMENTS in der Tabelle ver­wen­det. Formal setzt dies eine Voreinstellung, die für alle Tabellen gilt, die danach ver­ein­bart werden.

Syntax:

COLORIFBASELESS <place> <test> <number> [ <cellelement> ] = <color>;
<place> ::=  [  FRAMECELL X | FRAMECELL X | DATACELL ]
<test> ::=   [ ABSOLUTE PHYSICALRECORDS VALIDN VALIDPHYS ]
<number> ::= Schwellenwert, bei dessen unterschreitung die farbe geändert werden soll
<cellelement> ::=  das betroffene CELLELEMENT. wird dieses weggelassen, sind alle CELLEMENTS betroffen
<color> ::= die (ausgegraute) Farbe, die dann verwendet werden soll

COLORIFBASELESS = NO; setzt alle Regeln zurück.
Für alle erlaub­ten s kann man jeweils eine regel ver­ein­ba­ren, also maxi­mal 3.
z.B.:

ColorIfBaseLess FrameCell Y  absolute  50  rowpercent = $cccccc;
ColorIfBaseLess FrameCell X  absolute  50 columnpercent  = $cccccc;
ColorIfBaseLess datacell ValidN  60  MEAN = $FFcc00;

Es wird emp­foh­len, bei der Kombination meh­re­rer Regeln IMMER ein CELLELEMENT anzugeben.
Will man die Ausgabe von Mittelwerten in DATACELL beein­flus­sen, ist es emp­feh­lens­wert, VALIDN statt ABSOLUTE zu ver­wen­den, da dies der schär­fe­re Test ist. In einer Spalte kön­nen mehr fäl­le ent­hal­ten sein, als in den Mittelwert ein­flie­ßen, z.b. wegen Missing Values oder eines Filters. Damit die­se Regeln auch in einem OFFICEEXPORT grei­fen, muss man in den OFFICEXPORTOPTIONS den Schalter ‘| USEPOSTSCRIPTCOLORS DATACELL : YES’ setzen.
Explizite Farbeinstellungen in den OFFICEXPORTOPTIONS, z.B. ELEMENTCOLOR, gel­ten vorrangig.


05.10.2021: Neue Option POSITION im OFFICECHART-Statement

Syntax:

OFFICECHART =
...
| POSITION <excelcell>
...

Mit ‘’ ist eine Zelle in der übli­chen Excel-Notation (z.b. ‘P7’) gemeint. GESStabs wird das Chart dann so anle­gen, dass die lin­ke obe­re Ecke in die­ser Zelle liegt.

Ein OFFICECHART ohne eine POSITION-Angabe wird wie bis­her unter die Tabelle bzw. das vor­an­ge­gan­ge­nen Chart posi­tio­niert. Die abso­lu­te Positionierung hat den Vorteil, dass man die Position im Script ein­fach und exakt fest­le­gen kann. Wenn man meh­re­re Tabellen auf einem Worksheet anlegt, ist es teil­wei­se nicht so ein­fach, eine sinn­vol­le abso­lu­te Adresse anzu­ge­ben, wenn z.b. die Breite und die Länge der Tabellen dif­fe­rie­ren. Am prak­tischs­ten dürf­te es dann sein, gene­rell für jede Tabelle ein eige­nes Worksheet anzulegen.


30.09.2021: Neues Feature: OFFICEPICTURE im OFFICECONTENTPAGE-Statement

Syntax:

OFFICECONTENTPAGE =
...
| OFFICEPICTURE
:FILEPATH <filepath>
:SIZE X <number>
:SIZE Y <number>
:POSITION <excelcell>
...
;

Zum Beispiel:

OFFICECONTENTPAGE =
| OFFICEPICTURE
:FILEPATH gess.ico
:SIZE X 40
:SIZE Y 40
:POSITION "k2"
| NAME : Inhalt
| noAutoTabletitle : yes
;

30.09.2021: Neues CellElement: HYWELCHTEST

Zum Testen von Mittelwertsunterschieden ist in Tabellen der T‑Test nach Welch dem übli­chen t‑Test nach Student über­le­gen, da er unemp­find­lich ist gegen­über Unterschieden in den Varianzen in den zu ver­glei­chen­den Zellen.
Um es schär­fer zu for­mu­lie­ren: In Tabellen mit Student’s T‑Tests im Hintergrund kön­nen signi­fi­kan­te Unterschiede aus­ge­wie­sen sein, die anhand der nicht über­prüf­ten Homogenität der Varianzen nicht immer halt­bar sind. GESS emp­fiehlt daher, in Tabellen den robus­te­ren T‑Test nach Welch zu ver­wen­den. Dieser wur­de Anfang des Jahres als WELCHTEST, PHYSWELCHTEST und XWELCHTEST imple­men­tiert. Wir lie­fern jetzt den hybri­den HYWELCHTEST nach. Eine Besonderheit des T‑Test nach Welch ist die Tatsache, dass in die Berechnung der Freiheitsgrade für den T‑Test auch die Varianz in den Zellen ein­fließt. GESStabs berech­net die Freiheitsgrade im hybri­den Test anhand der unge­wich­te­ten Zellenbesetzung (PHYSICALRECORDS) und der gewich­te­ten Varianz in den Zellen.


14.09.2021: Neues Feature ALIAS

Syntax:

ALIAS <list of varkeys> : <labeltext_kanonisch> = <list of aliases> ;

Ähnlich wie die Eigenschaft VARKEY eine Möglichkeit eröff­net, Fragen mit glei­chem Inhalt aber unter­schied­li­chen varia­blen­na­men als “gleich” zu kenn­zeich­nen, dient das ALIAS-Feature dazu, ver­schie­de­ne Labeltexte als gleich­wer­tig zu behan­deln. Wenn eine Variable mit glei­chem VARKEY in ver­schie­de­nen Projekten ver­wen­det wird, ist damit für liveTABS defi­niert, dass sie den­sel­ben Sachverhalt bezeich­nen. Nun kann es aber immer wie­der pas­sie­ren, dass die Labeltexte vari­ie­ren, obwohl der­sel­be sach­ver­halt gemeint ist. Hierbei kann es sich um mini­ma­le Textunterschiede han­deln, z.b. wird in Studie A “65 Jahre und älter” vor­ge­ge­ben, in Studie B wird “Jahre” aber als “J.” abge­kürzt. der Labeltext könn­te in einer Studie C aber auch “>=65 Jahre” lauten.

Das ALIAS-Statement bie­tet nun die Möglichkeit, einen “kano­ni­schen” Text zu defi­nie­ren, der bevor­zugt ver­wen­det wer­den soll. Alle ande­ren Varianten kön­nen dann als ALIAS-Varianten  auf­ge­führt wer­den, die durch den kano­ni­schen Text zu erset­zen sind. Diese ALIAS-Abbildungen kön­nen in der JSON-Tabellenausgabe an liveTabs über­mit­telt wer­den (sie­he STOREALIAS im Read.me). Sie kön­nen aber auch unmit­tel­bar in der Tabellierung ange­wen­det wer­den (sie­he REPLACEALIAS im Read.me).

Es ist in aller Regel sinn­voll, sol­che ALIAS-Regeln in stan­dard­mä­ßig inklu­dier­te Dateien aus­zu­la­gern, indem man ent­we­der die FMT-Datei erwei­tert, oder eine spe­zi­el­le Include-Datei ALIAS.inc einrichtet.


07.09.2021: Neue Features in OFFICEEXPORTOPTIONS

Syntax:

SUPPRESSGRIDLINES : [ yes | no ]
FIXLABELROWS : <number>

SUPPRESSGRIDLINES : YES unter­drückt die excel-typi­schen Gridlines in der Bildschirmdarstellung.

FIXLABELROWS wird den <num­ber> Zeilen Teil der Tabelle “fix” hal­ten, sodass die­se sicht­bar blei­ben, wenn man das Fenster ver­ti­kal scrollt. Pro Sheet kann nur ein FIXLABELROWS-Paremeter aus­ge­wer­tet werden.


01.03.2021 (5.2.0.14): Neue Cellelements zum Konfidenzintervall

Zur Darstellung der Grenzen des CONFIDENCERANGE gibt es zusätz­li­che CELLELEMENTS: Für die CONFIDENCERANGE: CONFIDENCERANGEUPPER für die Obergrenze CONFIDENCERANGELOWER für die Untergrenze Für die COLUMNPERCENTRANGE: COLUMNPERCENTRANGEUPPER für die Obergrenze COLUMNPERCENTRANGELOWER für die Untergrenze Für die ROWPERCENTRANGE: ROWPERCENTRANGEUPPER für die Obergrenze ROWPERCENTRANGELOWER für die Untergrenze.


22.02.2021 (5.2.0.13): Neue Cellelements: WELCHTEST PHYSWELCHTEST XWELCHTEST 

Der Student’s t‑test wur­de durch den als “robus­ter” ein­ge­schätz­ten t‑test nach Welch ergänzt. die­ser erscheint für tabel­la­ri­sche Darstellungen bes­ser geeig­net, da die Homogenität der Varianzen nicht wie bei Student’s t‑test zu den Anwendungsvoraussetzungen zählt. GESS hat den Test nach Welch zunächst in drei Formen implementiert:

    • Standard (WELCHTEST, ggf. gewichtet)

 

    • unge­wich­tet (PHYSWELCHTEST)

 

    • und die kom­bi­na­ti­on die­ser bei­den als cross­check (XWELCHTEST)

 

Bei letz­te­rem wird die Siginifikanz nur dann ange­zeigt, wenn die bei­den ande­ren  Varianten dies stüt­zen. Man kann die­sen t‑test auf Mittelwertunterschiede stets dort ein­set­zen, wo bis­lang TTEST und deren Varianten PHYSTTEST oder XTTEST ver­wen­det wur­den. Der Test nach Welch ist ein wenig “kon­ser­va­ti­ver” als der Test nach stu­dent, d.h. der p‑wert, der über die Ausweisung einer Kennzeichnung ent­schei­det, kann ein wenig grö­ßer sein als bei stu­dent. In Grenzfällen kann es also vor­kom­men, dass ein Zusammenhang, der nach stu­dent noch als (grenz­wer­tig) signi­fi­kant erscheint, bei Welch’s t‑test nicht aus­ge­wie­sen wird. Man soll­te dies aber nicht als Nachteil bewer­ten. Der erheb­li­che Vorteil liegt dar­in, dass man sich hier­bei kei­ne Gedanken machen muss, ob die Varianzen in den unter­such­ten Zellen hin­rei­chend ähn­lich sind.


04.01.2021 (5.2.0.11): Neues Statement: SUPPRESSSPSSWARNINGS

Syntax:

SUPPRESSSPSSWARNINGS = [ ALPHA | VARLABEL | VALUELABELS ] ;

Beim Einlesen meh­re­rer SAV-files gene­riert GESStabs Warnungen, wenn sich der Alpha-Status, ein VARLABEL oder ein VALUELABEL ändert.

Mit SUPPRESSSPSSWARNINGS wer­den die­se Warnungen abgeschaltet.

Beispiel:

SUPPRESSSPSSWARNINGS = ALPHA VARLABEL VALUELABELS;

Hier wer­den bspw. alle dies­be­züg­li­chen Warnungen abgeschaltet.

17.11.2020 (5.2.0.9): Neues Tableformat: ELIMINATEEMPTYLINE

Über das Entfernen uner­wünsch­ter Leerzeilen in Tabellen vom Typ OVERVIEW durch das TABLEFORMAT NOVARTITLEBOX erga­ben sich uner­wünsch­te Nebeneffekte.

NOVARTITLEBOX erfüllt die­se Funktion jetzt nicht mehr.

Stattdessen besteht nun die Möglichkeit das spe­zi­el­les TABLEFORMAT ELIMINATEEMPTYLINE zu benutzen.


18.05.2020 (5.2.0.1): Neue Parameter für OFFICEEXPORTOPTIONS: OFFICEFORMAT und THOUSANDS

Um der Tatsache Rechnung zu tra­gen, dass die Ausgabe in Excel ver­gleichs­wei­se einen brei­te­ren Raum ein­nimmt, wur­den spe­zi­ell für die­se Ausgabedatei neue Parameter entwickelt.

Syntax:

OFFICEEXPORTOPTIONS [ EDIT ] =
...
| OFFICEFORMAT <cellelement> : <formatstring>
| THOUSANDS <cellelement> : [ YES | NO ]
...

Mit OFFICEFORMAT las­sen sich ver­schie­de­ne Formate defi­nie­ren, die ohne wei­te­re Prüfung an Excel über­ge­ben wer­den. Für die Nutzung sind Kenntnisse über ver­schie­de­ne Excel-Formatanweisungen sicher hilfreich.

Im fol­gen­den Beispiel etwa wer­den die Summen in Exponentialdarstellung angefordert:

Beispiel:

| OFFICEFORMAT SUM :  "#.##E+0"

Mit dem THOUSANDS-Parameter kön­nen Tausendertrennzeichen im OFFICEEXPORT für ein­zel­ne Zellenelemente ein- und aus­ge­schal­tet werden.

Im fol­gen­den Beispiel etwa wer­den sie für die Summen eingeschaltet:

Beispiel:

| THOUSANDS SUM : YES

Hier han­delt es sich um eine ein­gän­gi­ge­re Schreibweise, als die nach wie vor bestehen­de Möglichkeit, ein glo­ba­les Format über FORMAT SUM (z.b. FORMAT SUM = “^.2###,###”;)  festzulegen.

Die hier beschrie­be­nen Optionen ver­fü­gen aus­schließ­lich bei der Ausgabe im  OFFICEEXPORT über eine Funktion, d.h.  PS/PDF, INSTANTEXCEL oder HTML usw. sind hier­von nicht betroffen.


01.05.2020 (5.1.3.10): Neues Feature: BINOMIALPERCENTRANGE

Syntax:

BINOMIALPERCENTRANGE= [ YES | NO ];

Voreinstellung: NO

Das Verfahren, ein Konfidenzintervall durch Addition bzw. Subtraktion einer hal­ben Schwankungsbreite zu ermit­teln, stößt in der Standarteinstellung an sei­ne Grenzen. 

Allerdings gibt es auf der Binomialverteilung beru­hen­de Berechnungsmethoden, die der Tatsache Rechnung tra­gen, dass der Konfidenzbereich an den Rändern, also nahe 0% oder nahe 100%, asym­me­trisch zur Skalenmitte hin ver­scho­ben ist. Eine sol­che Methode ist das “Wilson score inter­val”, das in GESStabs imple­men­tiert ist. In der Nähe von 50% ist das Ergebnis dem Resultat der Standardberechnung sehr ähn­lich, zu den Rändern zei­gen sich die Unterschiede. Ist die­se Methode mit BINOMIALPERCENTRANGE = YES;  ein­ge­schal­tet gilt sie für alle TABLE-Statements im Anschluss bis sie wie­der aud NO gesetzt wird oder bis zum Scriptende. Im Gegensatz zum Standard lie­fert das bino­mi­al berech­ne­te Konfidenzintervall nach Wilson selbst für einen Prozentwert von 0 oder 100 noch inter­pre­tier­ba­re Grenzwerte. 

Der Benutzer muss selbst ent­schei­den, ob die Voraussetzungen zur Benutzung gege­ben sind. Es muss sich um ech­te “ja/nein Experimente” han­deln, bei Prozentwerten, die auf Mehrfachnennungen und OVERCODE SUM beru­hen, ist dies eher nicht der Fall.

03.04.2020 (5.1.3.9): Neues Feature: TRANSFERSUPPRESSEDCONTENTKEY

Syntax:

TRANSFERSUPPRESSEDCONTENTKEY= [ YES | NO ];

Wenn nicht alle Tabellen im OFFICEEXPORT-Inhaltsverzeichnis auf­ge­nom­men wer­den, z.B. nur jede ers­te Tabelle auf einem Worksheet, wird der Eintrag ins Inhaltsverzeichnis dann nicht aus­ge­ge­ben, wenn die­se Tabelle durch SUPPRESSEMPTYTABLE unter­drückt wird. Steht der Schalter TRANSFERSUPPRESSEDCONTENTKEY auf YES, wird der CONTENTKEY an die fol­gen­de Tabelle über­tra­gen. Verfügt die fol­gen­de Tabelle bereits über einen CONTENTKEY, wird die­se Übertragung abge­bro­chen. Ansonsten erfolgt die Übertragung solan­ge, bis eine nicht unter­drück­te Tabelle gefun­den wird. Diese Option wird oft zusam­men mit CONTENTKEY NEXT TABLE eingesetzt.

Es han­delt sich hier­bei um einen globa­len Schalter, der für den gesam­ten Lauf gilt.

27.03.2020 (5.1.3.9): Neue Option im OFFICECONTENTPAGE: bei INCLUDE CHAPTERTITLE-Statement: HYPERLINK

Syntax:

OFFICECONTENTPAGE=
...
|INCLUDE CHAPTERTITLE : HYPERLINK ...
...
;

Die neue Option HYPERLINK inner­halb des INCLUDE CHAPTERTITLE Statement ermög­licht den Sprung auf die Zelle A1 des ent­spre­chen­den Arbeitsblatts. Die Namen der Arbeitsblätter dür­fen dabei kei­ne Sonder- und Leerzeichen enthalten.

Beispiel:

| INCLUDE CHAPTERTITLE : HYPERLINK FONT "Helvetica" SIZE 12 OPTION BOLD ITALIC FOREGROUND $00aaff
11.03.2020 (5.1.3.8): Funktionserweiterung: FOREGROUND für HEADER und FOOTER

Syntax:

FOREGROUND [HEADER | FOOTER] = <color>; 

Es besteht jetzt die Möglichkeit, eine FOREGROUND-far­be auch für HEADER und FOOTER im PS/PDF-out­put zu bestimmen.

Beispiel:

FOREGROUND HEADER = $FF0000;
03.03.2020 (5.1.3.7): Neue Option zum OFFICECONTENTPAGE-Statement: NOAUTOTABLETITLE

Syntax:

OFFICECONTENTPAGE =
... 
|NOAUTOTABLETITLE : [YES | NO]
...
;

Unter Verwendung des CONTENTKEYs wird jede Tabelle in eine OFFICECONTENPAGE ein­ge­tra­gen. Wurde kein CONTENTKEY defi­niert, wird in der Grundeinstellung der TABLETITLE ver­wen­det. Die neue Option NOAUTOTABLETITLE dient dem Zweck, wenn nur die expli­zit mit einem CONTENTKEY ver­se­he­nen Tabellen in der OFFICECONTENTPAGE erschei­nen sol­len. Für die­sen Fall wird die auto­ma­ti­sche Verwendung des Tabletitle in der OFFICECONTENTPAGE ausgeschaltet.

13.11.2019 (5.1.3.6): Neue Option zu OFFICECONTENTPAGE: BACKTOCONTENT

Syntax:

OFFICECONTENTPAGE =
... 
|NOAUTOTABLETITLE : [YES | NO]
...
;

Syntax:

OFFICECONTENTPAGE =
| BACKTOCONTENT : <anystring> [ <textqualifier> ] 
<textqualifier> ::= [ <officefont> | FOREGROUND <color> | BACKGROUND <color> ]
<officefont> ::= FONT <fontname> SIZE <number> [ OPTION [ BOLD | ITALIC | UNDERLINE ] ];

Bei die­ser Option wird in jedes EXCEL-Tabellenblatt oben links (A1) der ange­ge­be­ne Text aus­ge­ge­ben, und die­se Zelle wird mit einem Hyperlink auf das Inhaltsverzeichnis hin­ter­legt. Bei einem Klick auf die­se Zelle, wird das Inhaltsverzeichnis angesprungen.

Beispiel:

OFFICECONTENTPAGE =
...
| BACKTOCONTENT : "Zurück zum Inhalt" FONT Arial SIZE 9 OPTION ITALIC UNDERLINE BOLD  FOREGROUND $FF0000
...
;

Bitte beach­ten:

Dieser Hyperlink funk­tio­niert nicht, wenn der Name des Tabellenblattes vom Inhaltsverzeichnis Leer- oder Sonderzeichen ent­hält. Dies gilt eben­so für alle Tabellenreferenzen zu Tabellen, wel­che auf Tabellenblätter lie­gen, deren Namen Leer- oder Sonderzeichen enthalten.


08.11.2019 (5.1.3.6): Neue Option zu OFFICECONTENTPAGE: SHOWSHEETNAME

Syntax:

OFFICECONTENTPAGE =
| SHOWSHEETNAME : [ YES | NO ]; 
default: YES          (in Übereinstimmung mit dem bisherigen verhalten)

Im bis­he­ri­gen Standard für OFFICECONTENTPAGE wur­de in die Liste der Sprungziele immer auto­ma­tisch der Wechsel auf ein neu­es EXCEL-Sheet im Inhaltsverzeichnis mit einer eige­nen Zeile ver­merkt. Dies ist zum Beispiel dann nicht sinn­voll, wenn für jede Tabelle ein eige­nes Sheet ange­legt wer­den soll. Daher kann der auto­ma­ti­sche Wechsel mit dem Schalter ein- und aus­ge­schal­tet wer­den. Dies ist ein glo­ba­ler Schalter für das gesam­te Inhaltsverzeichnis. Wenn es also aus­ge­schal­tet wird, an ande­rer Stelle den Wechsel auf ein neu­es Sheet aber sicht­bar wer­den soll, dann muss man den SHEETNAME mit dem OFFICECONTENTPAGE INSERT -Statement expli­zit angeben.


08.11.2019 (5.1.3.6): Neues Statement: OFFICECONTENTPAGE INSERT

Syntax:

OFFICECONTENTPAGE INSERT = { <addtitem> [ OFFICEFONT <officefont> ] }*n ;
addtitem ::= [ LINE | CONTENTKEY | VARTEXT <variable> | VARTITLE <variable> | 
               CITEFIRSTVAR [ XVALID | YVALID ] LITERAL <text> | TABLETITLE ]

Es wird hier­mit beim OFFICE-EXPORT ermög­licht im Inhaltsverzeichnis wei­te­re frei zu defi­nie­ren­de Erläuterungen unter­zu­brin­gen, die zwi­schen den Links zu den Tabellen ste­hen sol­len. Welche das im Einzelnen sein kön­nen, hängt mit der Struktur des Tabellenbandes ab. Wenn zum Beispiel ein- und der­sel­be Fragentext für eine Reihe Statements gilt, ist es unter Umständen sinn­voll, die­sen Fragentext auch im Inhaltsverzeichnis  vor den Links zu den betref­fen­den Tabellen zu zitie­ren. So kön­nen belie­bi­ge Texte defi­niert wer­den, wel­che sich auf eine Reihe von Elementen der Tabelle beziehen:

LINE                             Leerzeile
CONTENTKEY                       Zeile, die den CONTENTKEY enthält     
VARTEXT <variable>               Zeile, die den Text einer beliebigen Variablen widergibt
VARTITLE <variable>              Zeile, mit dem VARTITLE einer beliebigen Variablen
CITEFIRSTVAR [ XVALID | YVALID ] Fragentext der ersten Variablen in X- bzw. in Y-richtung
LITERAL <text>                   Zeile mit einem beliebigen Text
TABLETITLE                       Zeile mit dem TABLETITLE
SHEETNAME                        Zeile mit dem Namen des SHEET, auf dem die folgende Tabelle erscheint.

Anmerkung:

Allen Elementen kann ein eige­ner Office-Font zuge­ord­net werden.


08.11.2019 (5.1.3.6): Neues Statement: MAKESINGLES

Syntax:

MAKESINGLES <newvarlist> [ = <sourcelist> ];

In der ein­fachs­ten Version ersetzt die­ses Statement das VARIABLES -Statement:

MAKESINGLES f1 to f17;

Keine der Variablen aus der Bildungsvorschrift, im Beispiel “ f1 to f17”, darf existieren.

Anstelle des ";" kann auch mit einem "=" fort­ge­fah­ren werden:

MAKESINGLES f1 to f17 = x18 to x34;

Es wird nach dem "=" eine Variablenliste erwar­tet, die genau­so vie­le Elemente ent­hält, wie sich aus der Bildungsvorschrift erge­ben. Dann steht MAKESINGLES für eine Kombination aus VARIABLES und COMPUTE COPY .

Bitte beach­ten: wenn MAKESINGLES   mit einer Sourcelist ver­wen­det wer­den, wer­den intern durch COMPUTE COPY nur die nume­ri­schen Werte über­tra­gen. Wenn eine Variable in der <source­list> die Eigenschaft ALPHA hat, ist das ein Syntaxfehler.


01.11.2019 (5.1.3.5): Funktionserweiterung OFFICEEXPORT: Option  FLOWTEXT für LABELS X und LABELS Y

Syntax:

OFFICEXPORTOPTIONS EDIT = 
| FLOWTEXT LABELS X : [ YES | NO ] 
| FLOWTEXT LABELS Y : [ YES | NO ];
  • Problem: Excel kennt kein Verfahren der dar­stel­len­den Software Hinweise zu über­mit­teln an wel­cher Stelle ein Wort sinn­voll getrennt wer­den soll. In der Folge kommt es dazu, dass beim Export in EXCEL oft kei­ne sinn­vol­le Trennung von Wörtern erfolgt.
  • Lösungsansatz: Wenn im Script nun die neue Option FLOWTEXT für die Boxtypen Labels X bzw. Labels Y ein­ge­schal­tet sind wird die Berechnung der Schriftbreite der Texte vor­her aus­ge­mes­sen. Trennungen wer­den so auch bei von PS/PDF abwei­chen­den Fonts oder effek­ti­ven Spaltenbreiten berechnet.
  • Anmerkung:  Es gibt Situationen, in denen ein Textbestandteil gemes­sen an der Textbreite in eine Zelle gege­be­ner Breite passt, Excel dies aber bei der Darstellung des Inhalts aber nicht so sieht. Diese Ungenauigkeiten vari­ie­ren je nach Font, Fontgröße und Optionen wie BOLD oder ITALIC. Trotz eines ziem­lich üppig bemes­se­nen Sicherheitsabstandes kann eine ver­un­glück­te Darstellung nicht mit Sicherheit ver­mie­den wer­den. Sollte der jetzt ein­ge­stell­te Sicherheitsabstand nicht rei­chen, bit­tet GESS um Nachricht.

18.10.2019 (5.1.3.5): Neues Statement: OLDGROUPCLEARMETHOD

Syntax:

OLDGROUPCLEARMETHOD = [ YES | NO ];

Beim Clearen von SPSS-Files wird hier­mit ver­hin­dert, dass die ato­ma­ren Variablen inner­halb von VARGROUPS nicht unge­wünscht auf den gül­ti­gen Wert ‘0’ also Non-MISSING son­dern auf MISSING gesetzt werden.

Zur zusätz­li­chen Sicherheit kann man mit dem Schalter die alte Löschmethode und die zusätz­li­che Löschung der ato­ma­ren Variablen aus dem SPSS-Reader reak­ti­vie­ren. So wer­den die Einleseroutinen der ein­zel­nen SPSS-READER vor dem Abfragen der Werte aus SPSS einen spe­zi­el­len zusätz­li­chen Schritt ein­fü­gen, dass ALLE ato­ma­ren Variablen im Zweifel noch ein­mal auf MISSING gesetzt werden.


07.10.2019 (5.1.3.5): Neues Statement: INTERVALS

Syntax:

INTERVALS <newvar> = <sourcevar>  { | <labeltext> :  <comparison> <comparevalue> }*n;
<comparison> :: [ LT | GT | LE | GE ]
  • Mit INTERVALS wird bei der Gruppierung von Werten die Fehleranfälligkeit gegen­über des GROUPS-Statements bei nicht ganz­zah­li­gen Werten behoben.
  • Daneben ist die Schreibweise weni­ger red­un­dant und übersichtlicher.

Beispiel:

INTERVALS Interviewdauer = SEKUNDEN_GESAMT
| "< 1 Minute"     : LT 60
| "1 - 3 Minutes"  : LT 180
| "5 - 10 Minutes" : LT 300
| "> 10 Minutes"   : GE 600
;

Anmerkung:

  • Demgegenüber wür­de im fol­gen­den GROUPS-Statement zum Beispiel 59.5s in kei­ne der ange­führ­ten Kategorien fal­len. Hier müss­te man umständ­lich noch die Nachkommastellen ein­fü­gen. Die Fehler bei den Nachkommastellen gehö­ren damit der Vergangenheit an.
GROUPS Interviewdauer = 
| "< 1 Minute"     : [0 :59]  in SEKUNDEN_GESAMT
| "1 - 3 Minutes"  : [60:179] in SEKUNDEN_GESAMT
;

30.09.2019 (5.1.3.5): Syntaxerweiterung für CHAPTER

Syntax:

CHAPTER <varlist> =  [ {<string>}*n ];
  • Das CHAPTER-Statement akzep­tiert nun meh­re­re Kapitelbezeichnungen, um hier­ar­chi­sche Kapitelzuordnungen zu ermöglichen:

Beispiel:

CHAPTER sg.1.1 sg.10.1 sg.10.open = ["Hauptbefragung","Der Grid-Kram","SGQ"];

wird fol­gen­der­ma­ßen in die JSON-Syntaxbeschreibung übertragen:

{
"varname": "mg.20.open",
"chapter": [
"Hauptbefragung",
"Der Grid-Kram",
"MGQ"
],
"label": {
"1": "fgjhj",
"2": "zwanzig",
"3": "&&&"
}
},

28.08.2019 (5.1.3.5): Neue Funktion HTMLCHART
  • In HTML aus­ge­ge­be­ne Tabellen kön­nen nun um belie­big vie­le, ein­fa­che Diagramme (HTML-Charts) ergänzt werden.

Syntax:

HTMLCHART {<Optionen>} = <Zellbereich>;
  • Die voll­stän­di­ge Dokumentation befin­det sich unter ‘Tutorials und Handbücher’.

05.08.2019 (5.1.3.4): Funktionserweiterung für SUPPRESSEMPTYTABLE
  • Bisher war SUPPRESSEMPTYTABLE ein glo­ba­ler Schalter, des­sen letz­te Einstellung für den gesam­ten Tabellierlauf galt.
  • Nun ist SUPPRESSEMPTYTABLE eine tabel­len­spe­zi­fi­sche Voreinstellung: sie wird an alle Tabellen wei­ter­ge­ge­ben, die im Anschluss for­mu­liert wer­den, bis es eine neue SUPPRESSEMPTYTABLE -Voreinstellung gibt.
  • Wird eine Tabelle auf­grund von SUPPRESSEMPTYTABLE=YES unter­drückt, wird dies in den Warnungen (gtc.wrn) protokolliert.
  • Bei STRUCTURE oder NO hin­ter­lässt die unter­drück­te Tabelle eine Spur in den Ausgabedateien, dies wird nicht protokolliert.
  • Es ist mög­lich, dass eine mit SUPPRESSEMPTYTABLE=STRUCTURE unter­drück­te Tabelle nicht als Struktur aus­ge­ge­ben wer­den kann, z.B. wenn Variablen kei­ne Labels ent­hal­ten. Sie wird dann wie SUPPRESSEMPTYTABLE=NO behandelt.

17.07.2019 (5.1.3.3): Neues Statement: REPRINT TABLE

Syntax:

REPRINT TABLE = <tablename>;
  • Eine bereits pro­du­zier­te Tabelle kann an belie­bi­ger spä­te­rer Stelle im Tabellenband wie­der­holt aus­ge­ge­ben werden.
  • Die Tabelleninhalte blei­ben dabei erhal­te — mit Ausnahme des TABLETITLE und der TABLENUMBER .
  • Die Zellinhalte wer­den nicht neu aus­ge­zählt, son­dern es wird auf den bereits gezähl­ten Inhalt der Quelltabelle zurückgegriffen.
  • Die Tabelle wird aller­dings neu gesetzt, ein abso­lut iden­ti­sche Aussehen ist also nicht garantiert.
  • Die kopier­te Tabelle ent­hält die meis­ten Informationen aus der Ursprungstabelle, jedoch nicht ausnahmslos: 
    • TOPTEXT und BOTTOMTEXT blei­ben erhal­ten, und damit auch auto­ma­tisch ein­ge­füg­te Filtertexte (sie­he die TEXT -Optionen zu SETFILTER , TABLEFILTER und TABSELECT ).
    • Die Auswirkungen des Filters bzw. der Filter blei­ben ohne­hin erhal­ten, da die Daten der bereits aus­ge­zähl­ten und gedruck­ten Quelltabelle ent­nom­men werden.

12.07.2019 (5.1.3.3): Neues Cellelement: SUMSUMPERCENT

Syntax:

SUMSUMPERCENT ( var, basisvar )
  • Kombination der zwei CellElements SUM und SUMPERCENT in einem CellElement

13.06.2019 (5.1.3.3): Funktionserweiterung: GESSCHART
  • Neue ChartOption: TABLE <name>
  • Die fes­te Bindung des GESSCHART -Statements an die davor ste­hen­de Tabelle ist (zumin­dest in Teilen) aufgehoben.
  • Man kann sich mit der zusätz­li­chen Option TABLE auf alle bestehen­den Tabellen als Datenquelle beziehen.
  • Das ermög­licht auch den Bezug auf ver­steck­te Tabellen.

Beispiel:

TABLE NAME tab1                   = k BY f1;
TABLE NAME tab2 HIDDEN( PS PDF  ) = k BY f2;
TABLE NAME tab3                   = k BY f3;
GESSCHART TABLE tab2 CHARTTITLE "chart zu hidden tab2"   HORIZONTAL
CHARTAREA  15 15 270 180 NEWPAGE
=
| FORM RECTANGLE COLUMNS 1:5   ROWS 1:2  DIRECTION FALLING
| FORM RECTANGLE COLUMNS 1:5   ROWS 4:5  DIRECTION RISING
;
  • Bei einer gemisch­ten Ausgabe von Charts und Tabellen erscheint das Chart immer im Anschluss an die direkt davor ste­hen­de Tabelle: Das Chart ist an die­se Tabelle gebun­den (atta­ched).
  • Ein Chart hat bei Ausgabe in die­sel­be PS/PDF-Datei immer zwei mög­li­che Bezüge zu Tabelle(n): die im Skript vor­an­ge­gan­ge­ne Tabelle (atta­ched), aus der sich sei­ne Position in der Ausgabedatei ablei­tet, und eine Tabelle, die die Datenquelle darstellt.
  • Dies kann die­sel­be Tabelle sein, dann ist es nicht not­wen­dig, die Datenquelle mit der TABLE -Option im GESSCHART-Statement expli­zit zu benennen.
  • Gibt es im GESSCHART -Statement kei­ne TABLE -Komponente, ist die vor­an­ste­hen­de Tabelle auto­ma­tisch die Datenquelle.
  • Im obi­gen Beispiel steht das GESSCHART -Statement im Anschluss an die Tabelle tab3 (atta­ched) und als Datenquelle ist expli­zit die Tabelle tab2 ange­ge­ben (TABLE tab2).

Anmerkung:

  • Charts aus GESSCHART -Anweisungen, die direkt hin­ter einer HIDDEN -Tabelle ste­hen, kön­nen NICHT aus­ge­ge­ben wer­den, weil das Chart Bestandteil der Tabellenausgabe ist und HIDDEN (PS oder PDF) die Ausgabe der Tabelle unterdrückt.
  • Da die Ursache die­ser Nicht-Ausgabe sonst schwer voll­zieh­bar ist, gilt die­se Konstellation als Syntax-feh­ler 799: “GESSCHART atta­ched to HIDDEN table, chart can­not be prin­ted” und führt zu Programmabbruch.

04.06.2019 (5.1.3.3): Neues TableOption: HIDDEN

Syntax:

TABLE = ... HIDDEN( { <medium> }*n ) ... = A BY B ...;
<medium> ::= PS | PDF | HTML | OFFICEEXPORT | INSTANTEXCEL;
  • Als neu­en Bestandteil der TABLEOPTIONS kann nun das “Verstecken” von Tabellen vom Typ TABLE , OVERVIEW und XOVERVIEW in defi­nier­ten Ausgabemedien (PostScript, PDF, HTML usw.) ein­ge­stellt werden.
  • Es gibt Situationen, in denen man sich auf die Inhalte von Tabellen bezie­hen möch­te, die nicht dar­ge­stellt wer­den sol­len. Ein Beispiel hier­für ist die Vererbung einer Sortierreihenfolge, die einer Tabelle ent­nom­men wer­den soll, die es zu die­sem Zeitpunkt (noch) nicht gibt. Wenn etwa die Reihenfolge einer Reihe von zehn Tabellen nicht aus der ers­ten, son­dern der zwei­ten Tabelle ent­nom­men wer­den soll.
  • Diese Anforderung kann man dadurch erfül­len, dass man die zwei­te Tabelle zwei­mal erzeugt: ein­mal HIDDEN vor der ers­ten, und dann sicht­bar nach dieser:
TABLE NAME sortsource HIDDEN( PS PDF HTML OFFICEEXPORT INSTANTEXCEL ) = #k BY val2 SORT ABSOLUTE;
TABLE SORT AS sortsource = #k by val1 ;
TABLE SORT AS sortsource = #k by val2 ;
TABLE SORT AS sortsource = #k by val3 ;

Anmerkung:

  • Zwischen den Ausgabemedien herrscht eine Hierarchie. Es muss immer ein “ PRINTFILE PS ” oder “ PRINTFILE PDF ” geben.
  • Alle Inhalte einer Tabelle wer­den für das PRINTFILE zusam­men­ge­stellt. Alle ande­ren Ausgabeformen (wie HTML, OFFICEEXPORT, POWERCHART usw.) sind Abnehmer der inter­nen Daten für das PRINTFILE .
  • Wird eine Tabelle für das PRINTFILE unsicht­bar gemacht, wer­den die inter­nen Daten genau­so pro­du­ziert wie im Standarfall.
  • Es wird aller­dings die Ausgabe in PS/PDF unter­drückt. Diese Unterdrückung greift tief in die inter­ne Verarbeitung der inter­nen Klassen für die Generierung von PS/PDF ein. Auch ver­steck­te ( PS/ PDF ) Tabellen exis­tie­ren so intern mit allen Inhalten, die­se sind also für alle abge­lei­te­ten Ausgabeformen greif­bar, also auch für POWERCHART.

Aktuelle Beschränkung:

  • Zwar lie­gen die Inhalte auch für GESStabs Artist vor. Diese Charts sind aber  struk­tu­rell Bestandteil der Tabellenausgabe und fal­len des­halb gegen­wär­tig noch den Mechanismen zur Unterdrückung in PS bzw. PDF zum Opfer.

31.05.2019 (5.1.3.3): Neues Feature: TRUNCATEDECIMALS

Syntax:

TRUNCATEDECIMALS <varlist> = <number>;
<number> = -9 .. 9;
  • GESStabs zählt ja ein­fach alles, auch die Häufigkeiten belie­bi­ger FLOAT -Werte. Das ist oft prak­tisch, kann aber auch läs­tig sein.
  • Bei Häufigkeitszählungen über kon­ti­nu­ier­li­che Variablen kommt es vor, dass mehr­fach der­sel­be gerun­de­te Wert mit ggf. unter­schied­li­chen Häufigkeiten dar­ge­stellt wird, wobei die genau aus­ge­zähl­ten Werte infol­ge der Rundung bei der Ausgabe gar nicht mehr ersicht­lich sind.
  • Die inter­ne Zählung ist dann dif­fe­ren­zier­ter als die Ergebnisausgabe: Bspw. wür­den bei einer Darstellung mit einer Nachkommastelle die Werte 0,0238, 0,0278, 0,0385, 0,0417, 0,0426, 0,0435 und 0,0455 alle auf 0,0 gerun­det, in der Tabelle stün­de dann sie­ben­mal der Wert 0,0 mit der Häufigkeit 1.
  • Um die­se Diskrepanz zwi­schen der inter­nen Genauigkeit und der gerun­de­ten Darstellung zu besei­ti­gen, kann anstel­le von SETDECIMALS das neue Schlüsselwort TRUNCATEDECIMALS ver­wen­det werden.
  • In der Folge wird wäh­rend des Zählens die zu zäh­len­de Variable auf den pas­sen­den Ausgabewert gerundet.
  • Im oben ange­führ­ten Beispiel stün­de dann der Zahlenwert 0,0 mit der abso­lu­ten Häufigkeit 7.
  • Stellt man mit einer sol­chen Variablen wei­te­re Berechnungen an, ist es natür­lich nicht wün­schens­wert, dass der unge­naue­re gerun­de­te Wert in die­se ein­geht — im oben­ste­hen­den Beispiel ist 0,0417 eben nicht gleich 0,0 wie in der Tabellenausgabe.
  • TRUNCATEDECIMALS ver­än­dert die Variableninhalte nicht dau­er­haft, son­dern nur im Zählvorgang in CODEBOOK und TABLE .  In ange­for­der­te Statistiken wie MEAN oder VARIANCE geht der unge­run­de­te Wert ein.

Beispiel: Negative <number> -Werte ver­schie­ben das Dezimalkomma nach links.

  • Rundung auf 100er:
TRUNCATEDECIMALS <varlist> = -2;

Anmerkung:

  1. Es wird emp­foh­len, SETDECIMALS und TRUNCATEDECIMALS nicht gemein­sam auf eine varia­ble anzuwenden.
  2. Ein Teil der sta­tis­ti­schen Kennzahlen wie MEDIAN oder Perzentile geht auch auf Häufigkeitsauszählungen zurück. Diese sind zwar intern und nicht stö­rend für den Tabellenleser, bei sehr gro­ßen Fallzahlen und hoher inter­ner Differenzierung der Daten kann dies in der Performance spür­bar wer­den. An die­sen Stellen greift TRUNCATEDECIMALS aber nicht ein.

31.05.2019/ 07.06.2019 (5.1.3.3): Neues Schlüsselwort: ALPHACASESENSITIVE

Syntax:

ALPHACASESENSITIVE = [ YES | NO | UPPERCASE | LOWERCASE ];
  • Default: NO
  • Im Standardfall wer­den die Inhalte von Alpha-Variablen ‘case-insen­si­tiv’ verglichen.
  • Daraus folgt, dass z.B. ‘Ja’, ‘ja’ und ‘JA’ als inhalts­gleich betrach­tet und behan­delt werden.
  • Die Schreibweise inhalts­glei­cher Strings rich­tet GESStabs nach der Schreibweise der zuerst auf­ge­tre­te­nen Zeichenfolge.
  • Mit UPPERCASE bzw. LOWERCASE kann die Darstellung zusam­men­ge­fass­ter Strings ver­ein­heit­licht wer­den: in Klein- oder Großschreibung.
  • ALPHACASESENSITIVE = YES; bewirkt, dass nur iden­ti­sche Strings als inhalts­gleich inter­pre­tiert: ‘Ja’, ‘ja’ und ‘JA’ sind dann unter­schied­li­che Inhalte.
  • Dies beein­flusst das Verhalten des Einlesens von DATAFILE , CSVINFILE und SPSSINFILE eben­so wie die Ergebnisse von bspw. COMPUTE CONCAT .
  • Die Einstellung gilt für alle Alpha-Variablen des gesam­ten Laufs.

29.04.2019 (5.1.3.1): Neues Tabelformat: NOXVARTITLEBOX

Syntax:

TABLEFORMAT = +/- NOXVARTITLEBOX;
  • Unterdrückt die Ausgabe des Variablennamens/ Vartitels für den Tabellenkopf.
  • Analog zu NOVARTITLEBOX (Y‑achse der Tabelle)

26.04.2019: Neues Feature: ALPHAFAMILY

Syntax:

ALPHAFAMILY <neueAlphaFamily> = { <alphavar> }*n;
  • Mit ALPHAFAMILY kann aus ato­ma­ren Variablen vom Typ ALPHA eine Varfamily vom Typ ALPHA erzeugt werden.
  • Damit las­sen sich offe­ne Fragen, für die in der Befragung meh­re­re Eingabefelder vor­ge­se­hen sind (1. Nennung, 2. Nennung, u.s.w.), leicht zusam­men­ge­fasst in einer Tabelle auswerten.
  • Wenn die zu bil­den­de Variable bereits exis­tiert, ist dies ein Syntaxfehler; eben­so, wenn eine der ato­ma­ren Variablen nicht vom Typ ALPHA ist.
  • EVALFAMVALONCE ist als Default auf YES gesetzt, d.h. wenn ein String in mehr als einer Variablen vor­kommt, aus denen die ALPHAFAMILY erzeugt wird, wird er nur ein­mal aus­ge­wer­tet, mit NO kann man die­ses Verhalten ändern.
  • Die ALPHAFAMILY ver­hält sich in Bezug zu EVALFAMVALONCE wie jede ande­re MULTIQ .
  • Mit der ALPHAFAMILY kann man wie mit einer VARFAMILY Tabellen erzeugen.
  • COMPUTE SUBSTR und COMPUTE CONCAT sind nicht anwend­bar, auch Textvergleiche ( IN , EQ , GE etc. bei ALPHAVAR ) sind nicht zulässig.
  • Möchte man tes­ten, ob eine bestimm­te Zeichenfolge in einer der ALPHAVARS vor­kommt, so muss man ent­we­der die ato­ma­ren Elemente tes­ten ( AND / OR -ver­knüpft) oder mit COMPUTE CONCAT eine aus den ALPHAVARS zusam­men­setz­te ALPHAVAR erzeu­gen und tes­ten, ob der Begriff in die­ser vorkommt.

Zum Schluss noch eine Warnung:

  • Die ato­ma­ren ALPHAVARS dür­fen nur in je einer ALPHAFAMILY ent­hal­ten sein.
  • Die fol­gen­den Anweisungen erzeu­gen Unsinn, da ’nenn1’ und ’nenn2’ in zwei ver­schie­de­nen ALPHAFAMILY s auf­tau­chen:
ALPHAFAMILY alleNennungen = nenn1 nenn2 nenn3 nenn4;
ALPHAFAMILY Nennung1und2 = nenn1 nenn2;

26.04.2019: Neues Feature: COMPUTE SUBSTR

Syntax:

COMPUTE SUBSTR [ <lettercase> ] <Zielvariable> = <Quellvariable> <start> <len>;
<lettercase> ::= [ LOWERCASE | UPPERCASE ]
  • Mit COMPUTE SUBSTR wird ein Substring der Länge <len>, ab der Position <start> kopiert.
  • Das Ergebnis kann kür­zer sein als <len> und ggf. die Länge null haben.
  • Ein lee­rer String einer Alpha-Variable ist MISSING .
  • <Quellvariable> muss eine ato­ma­re Variable sein. Ob es sich um Alpha-Variable han­delt, ist uner­heb­lich: Für alle Variablen wird der Text des Labels ver­wen­det, der dem aktu­el­len Wert entspricht.
  • Gibt es zum gegen­wär­ti­gen Wert einer exis­tie­ren­den Variablen kein Label (kann bei Alpha-Variablen nicht der Fall sein), wird ein lee­rer String (also MISSING) zurück gegeben.
  • Man kann außer­dem bestim­men, dass das Ergebnis in Groß- ( UPPERCASE ) oder Kleinbuchstaben ( LOWERCASE ) gewan­delt wer­den soll, um z.B. Fateinamen (für unix defi­niert) in Kleinbuchstaben zu verwenden.
  • Wird kei­ne der bei­den Optionen ver­langt, wird der Text unver­än­dert (d.h. wie in den Ausgangsvariablen) verwendet.
  • Wenn die <Zielvariable> exis­tiert, muss sie vom Typ ALPHA sein. Existiert sie nicht, wird eine neue Alpha-Variable generiert.

Beispiel:

COMPUTE SUBSTR part = neuevar 1 20;
  • SUBSTR kann auch als COMPUTE -Spezifikation in IF -Statements und deren ELSE -Komponente ver­wen­det werden.

Beispiel:

IF [ 2 3 ] IN x7 THEN SUBSTR part = neue 1 20 ELSE SUBSTR part = neue 1 10;

26.04.2019: Neues Feature: COMPUTE CONCAT

Syntax:

COMPUTE CONCAT [ <lettercase> ] <alphavar> = { <elem> }*n; 
<lettercase> ::= [ LOWERCASE | UPPERCASE ]
<elem> ::= { "<beliebiger text>" | VARIABLE }
  • Mit COMPUTE CONCAT kön­nen die Labels belie­big vie­ler ato­ma­rer Variable mit Textkonstanten zusam­men­ge­fügt, d.h. ver­ket­tet, werden.
  • Die Variablen als Argumente müs­sen ato­ma­re Variablen sein.
  • Ob es sich um Alpha-Variablen han­delt, ist dabei uner­heb­lich. Für alle Variablen wird der Text des Labels ver­wen­det, der dem aktu­el­len Wert entspricht.

Beispiel:

COMPUTE CONCAT neuevar = "aktuelles Label von Variable Q1 " q1 " und aktuelles Label von Variable Q2 " q2;
  • Wenn eine Variable nicht exis­tiert, wird der ein­ge­setzt Name als Textkonstante verwendet.
  • Gibt es zum gegen­wär­ti­gen Wert einer exis­tie­ren­den Variablen kein Label (kann bei aplha-Variablen nicht der Fall sein), wird ein lee­rer String verwendet.
  • Man kann außer­dem bestim­men, dass das Ergebnis in Groß- ( UPPERCASE ) oder Kleinbuchstaben ( LOWERCASE ) gewan­delt wer­den soll, um z.b. Dateinamen (für unix defi­niert) in Kleinbuchstaben zu verwenden.
  • In sol­chen Fällen wird man das Statement oft in “dege­ne­rier­ter” Form ver­wen­den, z.B.:
COMPUTE CONCAT LOWERCASE unixfilename = anyalpha;
  • CONCAT kann auch als COMPUTE -Spezifikation in IF -Statements und deren ELSE -Komponente ver­wen­det werden.

Beispiel:

IF [ 2 3 ] IN x7 THEN
CONCAT neue = 'aa' '-' 'bb' '-' xx1 '-' x5
ELSE
CONCAT neue = 'xx' '-' 'yy' '-' xx1 '-' x5;
  • Übersichtlicher ist oft die Verwendung von IFBLOCK / ELSEBLOCK / ENDBLOCK anstel­le von IF / ELSE :
IFBLOCK [ 2 3 ] IN x7 THEN
COMPUTE CONCAT neue = 'aa' '-' 'bb' '-' xx1 '-' x5;
COMPUTE SUBSTR PART = neue 1 20;
ELSEBLOCK
COMPUTE CONCAT neue = 'xx' '-' 'yy' '-' xx1 '-' x5;
COMPUTE SUBSTR part = neue 1 10;
ENDBLOCK;

26.04.2019: Neuer Vergleichsoperator ‘IN’ für Alpha-Vergleiche

Syntax:

IF <alpha> IN <alphavar> THEN ....
<alpha> ::= Textkonstante oder Alpha-Variable
<alphavar> ::= Alpha-Variable
  • In der ein­fa­chen Variante wird getes­tet, ob ein belie­bi­ger Text in einem Alpha-Wert vorkommt.
  • V1 sei eine Variable vom Typ Alpha, dann kann man mit ‘IN’ tes­ten, ob eine Textkonstante (z.b. ‘abc’) in die­ser Variable ent­hal­ten ist:
IF "abc" IN V1 THEN...
  • Man kann auch prü­fen, ob der Text einer Alpha-Variablen im Text einer ande­ren Variable ent­hal­ten ist: V1 und V2 sei­en bei­des varia­blen vom Typ Alpha, dann kann man mit dar­auf tes­ten, ob der Alpha-Inhalt von V2 Bestandteil von V1 ist:
IF V2 IN V1 THEN...
  • Es gibt auch einen “Wildcard”-Vergleich: Enthält die Textkonstante auf der lin­ken Seite des Vergleichs ein ‘*’ oder ein ‘?’, dann wird ein Pattern-Vergleich durchgeführt.
  • Jedes ‘?’ steht für einen belie­bi­gen Buchstaben, ‘*’ für mehrere.
IF "a?c.txt" IN V1 THEN...
  • Das letz­te Beispiel wür­de ent­spre­chend ‘true’ lie­fern für: a1c.txt, a2c.txt, abc.txt usw.
  • Diese Form des Vergleichs gibt es nur bei Textkonstanten; wenn auf der lin­ken Seite des Vergleichsoperators eine nume­ri­sche Variable steht, dann wird KEIN Pattern-Vergleich durch­ge­führt — auch nicht, wenn deren Text ein ‘*’ oder ‘?’ enthält.

23.04.2019: Neues Schlüsselwort: IGNORECASEINCOMPARE

Syntax:

IGNORECASEINCOMPARE = [ YES | NO ];
  • Alle Textvergleiche (EQ, NE , LE , GE , LT , GT und IN ) unter Bbeteiligung von Stringkonstanten und/oder Alpha-Variablen wer­den im Standardfall case-sen­si­ti­ve durch­ge­führt, d.h. “abc” ist unter­schied­lich zu “ABC” oder “Abc” usw.
  • Setzt man den Schalter IGNORECASEINCOMPARE auf YES , wer­den die Vergleiche durch­ge­führt, ohne dass zwi­schen Klein- und Großbuchstaben unter­schie­den wird. Hierfür wer­den alle Labeltexte vor dem Vergleich in Kleinbuchstaben gewandelt.
  • Grundsätzlich soll­ten auch Zeichen außer­halb des ASCII-Codessets, wie z.b. ä und Ä oder é und É rich­tig zuge­ord­net werden.
  • Da dies aber vom loka­len Setting des Betriebssystems abhängt, wird zur Vorsicht bei der Verwendung gera­ten. Deutsche Umlaute sind wohl OK, aber bei
    bspw. grie­chi­schen, hebräi­schen oder ost­eu­ro­päi­schen Sonderzeichen ist Kontrolle angebracht.

01.04.2019: Neues Feature von CLONEVAR: Löschen von Labels mittels DELETELABELS

Syntax:

CLONEVAR  =  [ DELETELABELS [ MISSING | AUTONOANSWER | OVERCODE | {}*n ] ];
  • Mehrere Variablen, die den­sel­ben Sachverhalt abbil­den, wer­den bei der Tabellierung oft mit leich­ten Modifikationen benötigt.
  • Ein häu­fi­ges Beispiel hier­für ist die Verwendung im Header und in der Vorspalte von Tabellen: MISSING-values , AUTONOANSWER oder OVERCODE sol­len zwar i.d.r. bei der Anzeige in der Vorspalte erschei­nen, nicht aber im Tabellenkopf.
  • Der Klon soll sich also manch­mal doch vom Original unterscheiden.
  • Mit der Option DELETELABELS kann man ein­zel­ne Labels gezielt über ihren Code löschen oder anhand ihrer Eigenschaften MISSING , AUTONOANSWER und OVERCODE .

Beispiel:

CLONEVAR f3_header = f3 DELETELABELS MISSING AUTONOANSWER OVERCODE;
FORHEADER f3_header = YES;
FORCOUNTS f3 = YES;
  • DELETELABELS ist wört­lich zu neh­men: es wer­den nur die Labels gelöscht, die Werte der Variablen wer­den nicht modifiziert.
  • Damit die bear­bei­te­ten Variablen nicht ohne Labels wie­der erschei­nen, ist es rat­sam, die Einstellung GLOBALPRINTALL auf NO zu setzen.

18.03.2019: Funktionserweiterung für SUPPRESSEMPTYTABLE: STRUCTURE

Syntax:

SUPPRESSEMPTYTABLE = [ NO | YES | STRUCTURE ];
  • SUPPRESSEMPTYTABLE ist ein glo­ba­ler Schalter, der für den gesam­ten Lauf gilt.
  • In für Endkunden bestimm­ten Läufen wird er gewöhn­lich auf YES gesetzt; lee­re Tabellen wer­den dann nicht ausgewiesen.
  • NO führt zur Ausgabe einer Tabellenseite ohne Inhalt mit einem kon­fi­gu­rier­ba­ren Text, der mit­teilt, dass kei­ne gül­ti­gen Fälle vor­han­den sind.
  • Die neue Option STRUCTURE gibt die Struktur von Tabellen vom Typ TABLE aus, d.h. alle Zellen wer­den mit Besetzung n=0 ausgegeben.
  • Entsprechende Informationen lie­gen für Tabellen vom Typ CODEBOOK nicht vor.
  • STRUCTURE wird so inter­pre­tiert, dass lee­re Tabellen in der Ausgabe kennt­lich gemacht wer­den sol­len, es erscheint an die­ser Stelle dann der EMPTYTABLETEXT .
  • Unabhängig von der Stellung von SUPPRESSEMPTYTABLE wird jede lee­re Tabelle in den Messages (gtc.msg) protokolliert.

13.03.2019: Neues Feature: CLONEVAR

Syntax:

CLONEVAR <destinationvar> = <sourcevar>;
  • Erzeugt einen Klon zur <source­var>, der den­sel­ben Variablentyp und auch die­sel­be Anzahl mög­li­cher Nennungen hat.
  • Dieser Klon erbt TEXT , VARTITLE , die MISSING values , MISSING … RANG E und ggf. die Eigenschaften AUTONOANSWER , EVALFAMVALONCE und GROUPCOUNTS ; auch varia­blen­be­zo­ge­ne Angaben zu Dezimalstellen ( DECIMALS , SETDECIMALS ) wer­den übertragen.
  • Die Labels wer­den kopiert, das umfasst auch die OVERCODES und LabelPoperties, wie z.B. USEFONT , LEVEL , SORTCLASS , NEWPAGE und RECODE , ana­log zu LABELS COPY .
  • Außerdem wird intern eine COMPUTE COPY -Anweisung ( COMPUTE COPY <destinationvar> = <sourcevar>; ) gene­riert, die wäh­rend des Einlesens alle Werte jeden Falls überträgt.

Voraussetzungen:

  • Es darf noch kei­ne Variable mit dem Namen der <desti­na­ti­on­var> existieren.
  • <source­var> muss exis­tie­ren und muss eine ato­ma­re Variable ( SingleQ ) oder eine Mehrfachnennungsvariable ( MultiQ , DichoQ ) sein.
  • Variablen vom Typ Alpha , OpenQ , AssocVar wie auch ande­re spe­zi­el­le Variablen (z.B. IndexVar ) kön­nen nicht geklont wer­den, der Versuch führt zu einem Syntaxfehler.
  • Nicht über­tra­gen werden: 
    • EXCLUDEVALUES und RESTRICTVALUES
    • Varkeys (z.b. SingleQ Key …)
    • Filter ( SETFILTER / ENDFILTER , FILTER )

14.02.2019: Neues Statement: MULTIFROMSTRING
  • Umwandeln von Alpha-Variablen in FAMILYVARS

Syntax:

MULTIFROMSTRING [ DELIMITED <delimiter> ] [ DECIMALS <decimalchar> ] <newvar> = <alfavar>;
  • Defaults: DELIMITED: ',' und DECIMALS: '.'
  • Zunehmend sind Variablen mit Mehrfachnennungen oder offe­ne Fragen in Datensätzen als Strings abgelegt.
  • Um die­se in GESStabs effi­zi­ent zu ver­ar­bei­ten, gibt es jetzt das neue Statement MULTIFROMSTRING.
  • <new­var> und <alfa­var> müs­sen exis­tie­ren­de Variablen sein, <new­var> muss eine FAMILYVAR sein. <alfa­var> kann auch eine nume­ri­sche Variable sein.
  • Entscheidend ist nur, dass es für den gegen­wär­ti­gen Code ein Label gibt, das sich nume­risch inter­pre­tie­ren lässt.
  • Es wer­den sovie­le Codes in <new­var> abge­legt, wie in dem Labelstring erkannt wer­den. (Trivialerweise natür­lich nur sovie­le Werte, wie die FAMILYVAR auf­neh­men kann.)
  • Existiert das Label zum gegen­wär­ti­gen Code nicht, oder ent­hält es kei­ne als Zahlen inter­pre­tier­ba­re Substrings, ist die resul­tie­ren­de Variable MISSING .
  • Wenn z.b. eine Alpha-varia­ble f3_alpha in einem SPSS-Datensatz den String “3,6,18” ent­hält, ist eigent­lich eine Mehrfachnennungsvariable mit den Werten 3, 16 und 18 “gemeint”.

Beispiel:

MAKEFAMILY f3  = 10;
MULTIFROMSTRING f3 = f3_alpha;

Mit der Sequenz kann man das Label “3,6,18” in eine GESStabs-kon­for­me MultiQ umwan­deln. (Die Werte von Alpha-Variablen wer­den intern in VALUELABELS gespeichert.)

  • Anmerkung: Ein Datumsstring in der Form “TT-MM-JJJJ” kann auf die­se Weise in eine MultiQ mit drei Werten gewan­delt werden.

Beispiel:

MAKEFAMILY datum1  = 3; EVALFAMVALONCE datum1 = no; MULTIFROMSTRING DELIMITED "-" datum1 = datestring; Die Verwendung von 
EVALFAMVALONCE
an dieser Stelle ist notwendig, da sonst z.b. "01-01-01" in eine 
MultiQ
mit nur einer Nennung "1" ausgepackt würde.

17.12.2018: Neues Schlüsselwort: OVEROVERCODE
  • Neues Schlüsselwort in Valuelabels
  • Bestimmung: Ein OVEROVERCODE ist ein OVERCODE , der nur aus OVERCODE s und ggf. OVEROVERCODE s zusam­men­ge­setzt ist
  • Voraussetzung für die Nutzung: Alle OVERCODE s und OVEROVERCODE s inner­halb der VALUELABELS haben ein­deu­ti­gen Namen.
  • Syntax: Zuweisung von Namen zu OVERCODE s durch Ausschreiben des Namens direkt hin­ter das Schlüsselwort OVERCODE (bzw. OVEROVERCODE )
  • Mehrfach ver­wen­de­te Namen wer­den erkannt und füh­ren zu einem Syntaxfehler.
  • Die lei­ten­de Idee bei der Verwendung von OVEROVERCODE ist, Codes in einer Labelliste nur ein­mal als Referenz in einem OVERCODE zu verwenden.

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 OOC"
OVEROVERCODE OOC2 :OC4 :OC1 "zweiter OOC"
OVEROVERCODE OOOC1 :OOC1 :OOC2 "erster OOOC"
;
  • Die Namen ‘OC1’, ‘OC2’… und ‘OOC1’ bzw. ‘OOOC1’ wur­den hier nur der Einfachheit hal­ber gewählt, selbst­ver­ständ­lich kön­nen hier­für auch inhalt­lich defi­nier­te Namen ver­wen­det werden.
  • Zusätzliche Regeln zur Reihenfolge: OVEROVERCODE s kön­nen nur aus OVERCODE s gebil­det wer­den, die bereits exis­tie­ren, also die wei­ter oben im Skript erzeugt wur­den und einen ein­deu­ti­gen Namen tragen.
  • Weniger stren­ge Regeln für die Platzierung der ato­ma­ren Codes: Codes kön­nen (wie bis­her) auch dann OVERCODE s zuge­ord­net wer­den, wenn sie noch nicht defi­niert sind.

Beispiel einer syn­tak­tisch kor­rek­ten 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 OOC"
overovercode OOC2 :OC4 :OC1 "zweiter OOC"
overovercode OOOC1 :OOC1 :OOC2 "erster OOOC"
1 eins
2 zwei
3 drei
4 vier
5 fünf
6 sechs
7 sieben
8 acht
9 neun
10 zehn
;

04.09.2018: Neues Datensatzformat: Invertierte Datensätze
  • Als neu­es pro­prie­tä­res Dateiformat kann GESStabs nun inver­tier­te Datensätze schrei­ben und lesen.
  • Vorteil: wesent­lich kür­ze­re Verarbeitungszeiten bei Datensätzen mit hoher Fall- und gerin­ger Variablenzahl
  • Daten wer­den varia­blen­wei­se in Blöcken angeordnet.
  • Invertierte Datensätze ent­hal­ten aus­schließ­lich nume­ri­sche Werte. Variablenbeschreibungen müs­sen via SYNTAX her­aus­ge­schrie­ben und in einer Textdatei über­ge­ben wer­den. Alpha-Variablen wer­den sys­te­ma­tisch umgeformt.

Syntax:

  • Herausschreiben eines inver­tier­ten Datensatzes:
INVERTOUT = "<filename/-path>";
  • Einlesen eines inver­tier­ten Datensatzes:
INVERTIN = "<filename/-path>";
  • Ein Tutorial mit allen Optionen steht unter ‘Tutorials und Handbücher’ zum Download bereit.

06.08.2018: Neues Statement: CONFIDENCERANGEPVALUE

Syntax:

CONFIDENCERANGEPVALUE = [ SIGNIF68 | SIGNIF90 | SIGNIF95 | SIGNIF99 | SIGNIF999 ];
  • Im Standardfall (ohne expli­zi­te Setzung von CONFIDENCERANGEPVALUE ) wird das Konfidenzintervall nähe­rungs­wei­se für einen p‑Wert von 0.05 berechnet.
  • Dieser p‑Wert kann jetzt mit dem CONFIDENCERANGEPVALUE -Statement neu gesetzt werden.
  • Nach Setzung eines expli­zi­ten p‑Wertes wird das Intervall exakt berechnet.

15.06.2018: Neues statement: EMPTYTABLETEXT 

Syntax:

EMPTYTABLETEXT = [ "text"  | NO ];
  • Im Normalfall wer­den lee­re Tabellen (in die kei­ne Fälle geflos­sen sind) unterdrückt.
  • Bei Setzung von SUPPRESSEMPTYTABLE = NO; wird eine Tabellenseite aus­ge­ge­ben, die den Standardtext “Empty table” und Angaben über die Syntax der Tabelle ent­hält (wel­che Variablen in die X- bzw. y‑Achse der Tabelle eingingen).
  • Mit der neu­en Option EMPTYTABLETEXT kann statt­des­sen ein spe­zi­fi­scher Text aus­ge­ben werden.
  • EMPTYTABLETEXT setzt eine Voreinstellung, die für alle fol­gen­den Tabellen gilt.
  • Selbstverständliche kann vor jeder Tabelle ein neu­er Text defi­niert werden.
  • Soll der ursprüng­li­che Zustand (ohne spe­zi­fi­sche Einstellung für lee­re Tabellen) wie­der her­ge­stellt wer­den, erreicht man dies mit EMPTYTABLETEXT = NO; .

22.05.2018: TRANSLATE: Neue Option für OFFICEXPORTOPTIONS
      • in Zusammenhang mit USEPOSTSCRIPTFONT

Syntax:

OFFICEXPORTOPTIONS =
....
| TRANSLATE <postcriptfontname> : <excelfontname>  [ OPTION { BOLD | ITALIC | UNDERLINE } ]
....
  • In vie­len Fällen ist es hin­rei­chend, dass GESStabs den Namen des PostScript-Fonts in das erzeug­te Excel- bzw. LibreOffice-Dokument ein­trägt — ins­be­son­de­re, wenn die­se Fonts im System instal­liert sind.
  • Über das opti­sche Resultat ent­schei­det aber das Windows-System auf dem Rechner des Betrachters, wel­cher Font als ange­mes­se­ne Ersetzung gilt.
  • Das uner­feu­li­che Resultat kann sein, dass der Erzeuger des Dokuments sinn­vol­le Font-Ersetzungen sieht, das Ergebnis beim Kunden aber anders aussieht.
  • Mit der TRANSLATE -Option zu OFFICEXPORTOPTIONS kann man genau fest­set­zen, wel­che Systemfonts die PostScript-Fonts erset­zen sollen.

Beispiel:

OFFICEXPORTOPTIONS EDIT =
| TRANSLATE "Helvetica" : "Arial"
| TRANSLATE "Helvetica-Bold" : "Arial"  OPTION BOLD
| TRANSLATE "Helvetica-BoldOblique" : "Arial"  OPTION ITALIC BOLD
| TRANSLATE "Helvetica-Oblique" : "Arial"  OPTION ITALIC
;
  • Hierbei ist zu beach­ten, dass ver­schie­de­ne Schnitte eines Fonts (wie BOLD oder ITALIC) im PostScript-Font-Modell einen wei­te­ren fFont dar­stel­len, wäh­rend die Schnitte in den Font-Modellen der meis­ten gra­phi­schen Benutzeroberflächen als Eigenschaften ( OPTION ) des Fonts ange­ge­ben werden.
  • Um die Schrift ‘Arial’ in den Schnitten ’stan­dard’, ‘bold’, ‘ita­lic’ oder ‘bol­dita­lic’ zu ver­wen­den, müs­sen für vier ver­schie­de­ne PostScript-Fontnamen eine Übersetzng defi­niert werden.
  • Spezialfall: Ein Abobe-Font soll wäh­rend eines Tabellier-Jobs in meh­re­re unter­schied­lich Systemfonts überetzt wer­den. Verwendet man OFFICEXPORTOPTIONS EDIT , so gilt die letz­te Setzung einer Fontübersetzung auch für davor ange­for­der­te Tabellen. D.h. bei EDIT gewinnt immer die letz­te Änderung. Ist es not­wen­dig, unter­schied­li­che Fontübersetzungen in einem Lauf zu ver­wen­den, müs­sen die OFFICEXPORTOPTIONS (ohne Verwendung von EDIT ) ins­ge­samt neu gesetzt werden.

24.04.2018: SORTCODEOVERCODE: neues TABLEFORMAT zur sortierung

Syntax:

TABLEFORMAT = +/- SORTCODEOVERCODE;
  • Eine alter­na­ti­ve Methode zur Sortierung von Labellisten mit OVERCODE
  • Sortiert wer­den alle Labels, ein­fa­che Labels und Overcode-Labels, anhand des Kriteriums.
  • Codes, die zu einem Overcode gehö­ren, wer­den im Anschluss an die­sen Overcode ausgegeben.
  • Diese Option ist auf Sortierungen nach ABSOLUTE und MEAN beschränkt.
  • Zu MEAN gehö­ren auch alle Zellelemente, bei denen zusätz­lich zum MEAN Signifikanzen aus­ge­ge­ben wer­den, wie z.b. MEANTEST , HYMEANTEST etc.
  • SORTCODEOVERCODE und AUTOOVERCODE schlie­ßen sich aus. Eine Tabelle, die die­se bei­den Tabellenformate ent­hält, ist ein syn­tak­ti­scher Fehler.

03.04.2018: Neues Statement: INVALIDRESULTS

Syntax:

INVALIDRESULT <cellelement> = <string>;

Existiert für Cellelement kein Ergebnis (z.b. kei­ne Signifikanz des Unterschieds zu einer ande­ren Spalte oder 0 Werte für einen Mittelwert), kann für die­sen Fall ein Ausgabestring defi­niert werden.


15.03.2018: Neue Optionen für OFFICEXPORTOPTIONS

1. CONTENTPAGE

Syntax:

....
| CONTENTPAGE : <name of worksheet>
....
  • Wenn die­se Option gesetzt ist, wird als ers­tes Worksheet eine Seite mit Inhaltsangaben eingefügt.
  • Dies setzt vor­aus, dass die Tabellen in min­des­tens einem expli­zit benann­ten Worksheet stehen.
  • Mindestens eine CHAPTERTITLE -Anweisung muss also im Skript vor­der ers­ten Tabellen-Anforderung stehen.
  • Ist ein CONTENTKEY der Tabelle bekannt, wird die­ser verwendet.
  • Ist das nicht der Fall, wird der TABLETITLE verwendet.
  • Ist auch die­ser nicht bekannt, wird der Text “unkown con­tent” ausgegeben.
  • Ein Wort zur Warnung: Damit man die Hyperlink-Funktion des Inhaltverzeichnisses nut­zen kann, soll­te man in den Beschriftungen der Worksheets ( CHAPTERTITLE ) kei­ne Sonderzeichen wie Umlaute etc. ver­wen­den. Diese wer­den zwar als Laschentexte kor­rekt dar­ge­stellt, die Hypertext-Funktion schei­tert dar­an aber (“Bezug ungültig”).

2. INHERITFONT

Syntax:

....
| INHERITFONT <boxtype> : [ YES | NO ]
....
  • Auf beson­de­ren Wunsch eines Nutzers
  • Das  Schlüsselwort INHERITFONT hat in die­sem Kontext die Bedeutung: Verwende den (ver­erb­ten) Font vom PS/PDF-Printfile.
  • Die ver­schie­de­nen syn­tak­ti­schen Möglichkeiten der Font-Bestimmung wer­den in fol­gen­der Priorität abgearbeitet: 
    • Wenn ELEMENTFONT expli­zit gesetzt ist, gilt dieser.
    • Sonst wenn BOXFONT expli­zit gesetzt ist, gilt dieser.
    • Sonst, wenn INHERITFONT auf YES gesetzt ist, wird der Fontname aus PS/PDF verwendet.
    • Ist dies alles nicht der Fall, wird an Excel/Libre Office kein Font über­ge­ben und es gilt der Office-Standardfont.

12.03.2018: Neue Option: OFFICECHARTDEFAULTS
  • Voreinstellungen für OFFICECHART
  • Hinweis: Die Syntax von OFFICECHARTDEFAULTS und OFFICECHART ist jetzt an die Schreibweise von OFFICEEXPORTOPTIONS angepasst.

Syntax:

OFFICECHARTDEFAULTS =
[ | AUTO : [ YES | NO ] ]
[ | CHARTTITLE : <title> ]
[ | INVERSE : [ YES | NO ] ]
[ | USE3D : [ YES | NO ] ]
[ | SIZE : <width> <height> ]
[ | FORM : [ BARS | COLUMNS | LINES | PIE ]
[ | OPTION : [ CLUSTERED | STACKED | PERCENTSTACKED ]
[ | LEGENDPOSITION : [ TOP BOTTOM LEFT RIGHT ] ]
[ | BACKGROUND : <colorvalue> ]
[ | FRAMECOLOR : <colorvalue> ]
[ | COLUMNS <number> : <number> ]
[ | ROWS <number> : <number> ]
[ | LABELS : [ 0 | 1 | 2 ] ]
;
  • Geleitet von der Vermutung, dass OFFICECHART häu­fig benutzt wird, ähn­li­che Charts für (fast) alle Tabellen in einem OFFICEEXPORT zu erstel­len, gibt es die syn­tak­ti­sche Möglichkeit, für die Parameter von OFFICECHART Defaults zu definieren.
  • Sollen alle Tabellen ver­char­tet wer­den, dann genügt ein OFFICECHARTDEFAULTS -Statement mit | AUTO : YES .
  • Bei mehr­fa­chem Aufruf von OFFICECHARTDEFAULTS gilt immer die letz­te Version; es gibt kei­ne Variante, ein­zel­ne Parameter zu modifizieren.
  • OFFICECHARTDEFAULTS = ; löscht alle Voreinstellungen.
  • Ist AUTO gesetzt, wird an jede Tabelle, die in der Folge defi­niert wird, auto­ma­tisch ein Chart ange­hängt, des­sen Parameter den OFFICECHARTDEFAULTS ent­nom­men werden.
  • Hier ein Beispiel, in dem 10 Excelsheets mit einer Tabelle und einem Pie-Diagramm erzeugt werden:
OfficechartDefaults =
| auto : yes
| ChartTitle : "Total"
| inverse : no
| legendposition : right
| form : pie
| background : $EEFFFF
| size : 500 400
| use3d : yes
| columns 1:1
;
dummyhead = ttl labels 1 "Total";
#macro #tab( &1 )
chaptertitle = y&1;
tabletitle = "Variable y&1";
table = ttl axx by y&1;
#endmacro
#domacro ( tab 1:10 )
  • Natürlich kön­nen an die Tabellen mit Auto-gene­rier­ten Charts wei­te­re Charts ange­hängt werden.

12.03.2018: Neues Feature: OFFICECHART
  • Diagramm-Darstellung von Tabellen in OFFICEEXPORT

Syntax:

OFFICECHART =
[ | CHARTTITLE : <title> ]
[ | INVERSE : [ YES | NO ] ]
[ | USE3D : [ YES | NO ] ]
[ | SIZE : <width> <height> ]
[ | FORM : [ BARS | COLUMNS | LINES | PIE ]
[ | OPTION : [ CLUSTERED | STACKED | PERCENTSTACKED ]
[ | LEGENDPOSITION : [ TOP BOTTOM LEFT RIGHT ] ]
[ | BACKGROUND : <colorvalue> ]
[ | FRAMECOLOR : <colorvalue> ]
[ | COLUMNS <number> : <number> ]
[ | ROWS <number> : <number> ]
[ | LABELS : [ 0 | 1 | 2 ] ]
;
  • Die Syntax ist iden­tisch mit der des OFFICECHARTDEFAULTS -Statements.
  • Die Option AUTO ist hier logi­scher­wei­se bedeu­tungs­los, gilt aber nicht als syn­tak­ti­scher Fehler.
  • Hinter jedem Tabellen-Statement vom Typ TABLE dür­fen belie­big vie­le OFFICECHART -Anweisungen fol­gen.
  • Für jede OFFICECHART -Anweisungen wird unter der Tabelle ein Standard-Excel (bzw. Libre-Office)-Diagramm erzeugt, sofern OFFICEEXPORT akti­viert ist.
  • Die Optionen erge­ben sich aus der oben dar­ge­stell­ten Syntax.

Es gibt sys­tem­be­dingt eine Reihe von Einschränkungen:

1. Die Tabelle darf nur EIN CELLELEMENT je Datenzelle enthalten.
2. Im Default wer­den alle Zeilen und Spalten der Tabelle dargestellt.

  • Man kann sowohl für die Spalten ( COLUMNS ) als auch für die Zeilen ( ROWS ) Bereichseinschränkungen formulieren: 
    • Zeilen und Spalten müs­sen in der Reihenfolge ihrer Position in der Tabelle bezeich­net werden.
    • Es kön­nen nur zusam­men­hän­gen­de Bereiche ange­steu­ert wer­den, also z.b. COLUMNS1:3 für die Einschränkung auf die ers­te bis drit­te Spalte der Tabelle.

3. Eine Ansteuerung über die Codes der Variablen ist nicht möglich.
4. Auch kön­nen Tabellenrahmen ( ABSCOL , TOTALROW etc.) nicht ange­steu­ert werden.
5. Von zu lan­gen Labeltexten ist abzuraten.
6. Tabellen müs­sen dar­über hin­aus so erzeugt wer­den, dass die Labels der Y‑Achse nur einen ein­zei­li­gen Text ent­hal­ten, d.h. alle Labeltexte und die Daten hier­zu müs­sen in direkt auf­ei­an­der­fol­gen­den Zeilen der Excel-Tabelle stehen.
7. Es besteht die Einschränkung, dass Charts nur in .xlsx- oder .ods-Dateien expor­tiert werden.

Zur Syntax:

  • Die Parameter dürf­ten selbst­er­klä­rend sein.
  • Zu INVERSE :
    • Wenn man kei­ne Angabe macht, (intern INVERSE = NO ), dann wer­den die Labels der Y‑Achse der Tabelle zur Achsenbeschriftung.
    • Sollen die Labels der X‑Achse (Kopf) der Tabelle zur Achsenbeschriftung her­an­ge­zo­gen, muss INVERSE ange­ge­ben werden.
  • Zu PIE :
    • In einem PIE kann immer nur eine Zeile oder eine Spalte dar­ge­stellt werden.
    • Die Ansteuerung ist ana­log zu den ande­ren Charttypen.
    • Will man eine Spalte dar­stel­len, muss man eine ein­zel­ne Spalte benen­nen, z.b. COLUMNS 1:1 bzw. 2:2 , und das Diagramm ist nor­mal, also nicht INVERSE .
    • Will man eine Datenzeile dar­stel­len, muss eine ein­zel­ne Zeile benannt wer­den, z.b. ROWS 3:3 , und das Diagramm muss als INVERSE gekenn­zeich­net werden.
  • Zu LABELS :
    • Die ein­zel­nen Elemente eines Office-Charts kön­nen mit Beschriftungen ver­se­hen werden.
    • Diese wer­den mit dem LABELS -Parameter, einem inte­ger zwi­schen 0 und 2, angefordert.
      0 : Zeige Tabellenwert
      1 : Zeige Tabellenwert als Prozent
      2 : Zeige Namen

22.02.2018: Neuigkeiten zu OFFICEEXPORTOPTIONS

1. Dokumentationsergänzung

  • Neben der Option ELEMENTFONT gibt es auch ELEMENTCOLOR .
  • Hiermit kann man eine Vordergrundfarbe für ein­zel­ne CELLELEMENTS vereinbaren.

2. Bugfix

  • Betrifft USEPRINTERCOLORS DATACELL .
  • Hier wur­den nur die Vordergrundfarben (Schriftfarben) über­tra­gen, die Hintergrundfarben wur­den ggf. nicht
    übertragen.
  • Gefixt!

3. Hinweis zu .xlsx und VARTITLE X

  • Bei der Anwendung der Option CONNECTEXCELCELLS , z.B. auf VARTITLE X , wird ggf. der Excel-Output im xlsx-Format so her­aus­ge­schrie­ben, dass Excel beim Einlesen unkor­rek­te Inhalte moniert.
  • Anschließend ist die Tabelle für das nai­ve Auge völ­lig ok.
  • WORKARAOUND:
    1. Man kann .xls ver­wen­den (hier aller­dings kei­ne Charts).
    2. Wenn man Charts pro­du­zie­ren will und die Excel-Fehlermeldung beim Einlesen auf­trit, kann man die .xlsx-Datei mit Excel ein­le­sen und anschlie­ßend wie­der spei­chern. Danach sind die Probleme verschwunden.

08.02.2018: Bugfix
  • Betrifft CALCULATECOLUMN und COLUMNSUMMARY
  • Diese wur­den in eini­gen aus­ge­lie­fer­ten Versionen nicht berech­net, die Zellen blie­ben leer.
  • Gefixt!

02.01.2018: Neue Option: POSTPONE für die JSON-Option im INVERTOUT-Statement
  • Im Standardfall wer­den die JSON-Variablen-Beschreibungen in dem Moment geschrie­ben, in dem das Statement gele­sen und ver­ar­bei­tet wird. Dies ist also ein Spiegel der Zustands der betrof­fe­ne­nen Variablen in zu die­sem Zeitpunkt.
  • Wenn ALPHA -Variablen gele­sen wer­den, und die Zuordnung von Codes zu Labeltexten gespei­chert wer­den soll, muss das Schreiben der JSON-Definition auf­ge­scho­ben wer­den, bis das Lesen der Daten been­det ist.
  • Dies bewirkt die Option POSTPONE .
  • Vgl. auch unten: SYNTAX .

Syntax:

INVERTOUT [  JSON [ POSTPONE ] <jsonpath> ] = <invertpath>;

02.01.2018: Verschiedene Variablen-Typen in INVERTIN/INVERTOUT
  • Betrifft: MULTIQ , DICHOQ , ALPHA , OPEN und OPENASALPHA
  • Invertierte Dateien spei­chern intern nur nume­ri­sche ato­ma­re Variablen.
  • Das bedeu­tet, dass man für ande­re Variablen Anpassungen machen muss, damit sie die­ser Anforderung ent­spre­chen und ihre Inhalte mit INVERTOUT geschrie­ben bzw. nach dem Einlesen mit INVERTIN ver­wen­det wer­den können.

1. Variablen vom Typ MULTIQ :

  • Bei ihrer inter­nen Verarbeitung erschei­nen sie als Liste von ato­ma­ren nume­ri­schen Variaben, die die ers­te, zwei­te … Nennung enthalten.
  • Diese tau­chen nach dem Einlesen der inver­tier­ten Datei wie­der auf, ledig­lich die Zusammenfassung in die VARFAMILY muss manu­ell wie­der her­ge­stellt werden.

2. Variablen vom Typ DICHOQ :

  • Hier gilt sinn­ge­mäß das­sel­be wie oben.

3. Variablen vom Typ ALPHA :

  • Sie sind schon mal vom Typ her ato­ma­re Variablen.
  • Außerdem haben sie immer auch einen nume­ri­schen Wert, der sich beim Einlesen ihrer Alpha-Texte ergibt.
  • Jeder Alpha-Text, der sich von allen vor­he­ri­gen unter­schei­det, wird der Variablen als Label ange­fügt, und hier­bei wird immer ein neu­er Code erzeugt.
  • Diesen Wert ent­hält die Variable als “cur­rent value”.
  • Sie wird des­halb auch nume­risch in das INVERTOUT -File geschrie­ben.
  • Damit sind aller­dings die ursprüng­li­chen Alpha-Texte noch nicht wie­der hergestellt.
  • Zwei din­ge müs­sen noch gesche­hen: 1. Die Code/Text-Zuordnungen müs­sen an das ein­le­sen­de Skript über­ge­ben  wer­den. 2. Bei der Erzeugung müs­sen alle Labels in Form eines Syntax-File gepei­chert werden.
  • Nun ist das übli­che Praxis, weil ja auch die Labeltexte aller ande­ren Variablen in die­ser Form über­ge­ben wer­den: SYNTAX VARLABELS VARTITLE VALUELABELS = <path>;
  • Dieses Statemen muss jetzt um die POSTPONE -Option erwei­tert wer­den (s.u.):
SYNTAX POSTPONE VARLABELS VARTITLE VALUELABELS = <path>;
  • Auf der ein­le­sen­den Seite muss die­se Syntax-Definition ein­be­zo­gen wer­den, danach kann man mit die­ser Variablen alles trei­ben wie gehabt.
  • Es gibt aber einen klit­ze­klei­nen Unterschied: Es ist jetzt eine nume­ri­sche Variable mit LABELS und nicht mehr ALPHA .

4. Variablen vom Typ OPENASALPHA :

  • Sie sind weder nume­risch noch atomar.
  • Ihr Inhalt kann aber mit einem COMPUTE ALPHA in eine Variable vom Typ ALPHA über­tra­gen werden:
COMPUTE ALPHA o1_a = o1_alpha;
  • Danach geht es wei­ter wie oben beschrieben.

5. Variablen vom Typ OPEN :

  • Variablen vom Typ OPEN ent­hal­ten nume­ri­sche Wertemengen. Ihnen kön­nen belie­big vie­le Codes zuge­ord­net werden.
  • Sie pas­sen for­mal nicht ins Schema einer inver­tier­ten Datei.
  • Man muss ihre Werte in eine Mehrfachnennungs-Variable über­tra­gen, deren ato­ma­re Bestandteile auto­ma­tisch ins inver­tier­te File über­tra­gen wer­den, z.B.:
MAKEFAMILY o1_n = 5; COMPUTE LOAD o1_n = o1;
  • Auf der ein­le­sen­den Seite müs­sen die­se mit einem VARFAMILY -Statement wie­der zu einer  Mehrfachnennungs-Variable zusam­men­ge­fasst werden:
VARFAMILY o1_n =  "o1_n $1" TO "o1_n $5";

02.01.2018: Zusätzliche Option: POSTPONE
  • Zusätzliche Option POSTPONE für das SYNTAX -Statement im Zusammenhang mit INVERTOUT
  • Im Standardfall wer­den SYNTAX -Files in dem Moment geschrie­ben, in dem das Statement gele­sen und ver­ar­bei­tet wird. Dies ist also ein Spiegel des Zustands der betrof­fe­ne­nen Variablen zu die­sem Zeitpunkt.
  • Für den Spezialfall, dass ALPHA -Variablen gele­sen wer­den, und die Zuordnung von Codes zu Labeltexten gespei­chert wer­den soll, muss aller­dings das Schreiben der Syntax-Definition auf­ge­scho­ben wer­den, bis das Lesen der Daten been­det ist. Dies bewirkt die Option POSTPONE .
  • Das ist dann rele­vant, wenn man in inver­tier­ten Dateien auch die Inhalte von ALPHA -Variablen spei­chert.
  • Invertierte Dateien sind von ihrer Struktur auf Effizienz desi­gned, und sie ent­hal­ten nur nume­ri­sche Daten.
  • Die den Labels zuge­ord­ne­ten Codes wer­den auto­ma­tisch gespeichert.
  • Um sol­che Variablen nach dem Lesen aus inver­tier­ten Dateien aus­zu­wer­ten, bedarf es der zug­hö­ri­gen Label-Informationen. Diese wird im SYNTAX -File mit aus­ge­ge­ben, wenn die Option POSTPONE gesetzt ist.

27.12.2017: Codes und Verbatims parallel aus einem OPENQFILE lesen

Syntax:

SINGLEQ <offen_alpha> = OPENASALPHA DATA <offen>;

<offen>              ::= Name der OPEN-Variablen wie im OPENQFILE
<offen_alpha> ::= Name der zusätz­lich zu erzeu­gen­den Variable mit dem Alpha-Text

  • Damit man Codes und Text im Skript par­al­lel anspre­chen kann, müs­sen aus einer OPEN -Variablen im OPENQFILE zwei Variablen mit unter­schied­li­chen Namen im Skript werden.
  • Dies wird dadurch gelöst, indem man zu jeder Standard- OPEN -Variablen (nume­ri­sche Codes) jeweils eine zusätz­li­che OPEN -Variable erzeugt, die nicht direkt aus dem OPENQFILE gele­sen wird, son­dern die Textinformation aus der Datenzeile der Ursprungsvariablen ableitet.
  • Damit dies gesche­hen kann, muss die zusätz­li­che Variable einen Verweis ken­nen, aus der Datenzeile wel­cher Variablen der Text ent­nom­men wer­den soll.
  • Das Variablen-Statement der Standard-Variablen sieht aus wie immer, z.b.: SINGLEQ offen1 = OPEN;
  • Die zusätz­li­che Variable, die den Alpha-Text ent­hal­ten soll, wird eben­so mit dem SINGLEQ -Statement erzeugt.
  • Statt des Schlüsselwortes OPEN steht hier OPENASALPHA , gefolgt vom Datenverweis nach dem Schlüsselwort DATA und dem Variablennamen, wie er im OPENQFILE steht. Z.B.: SINGLEQ offen1_alpha = OPENASALPHA DATA offen1;

Beispiel für eine Anwendung in einem Makro:

#macro #openplusalpha( &name )
SINGLEQ &name = OPEN;
SINGLEQ &name_alpha = OPENASALPHA DATA &name;
#endmacro
#domacro( openplusalpha offen1 offen2 offen3 offen4 offen5 offen6 )
  • In die­sem Beispiel wird davon aus­ge­gan­gen, dass im OPENQFILE die Codes und Verbatims der Variablen offen1, offen2, offen3, offen4, offen5 und offen6 vor­han­den sind.
  • Im Makro wer­den zusätz­lich die Variablen offen1_alpha bis offen6_alpha erzeugt, die die ver­ba­tims enthalten.
  • SPSS-sav-Files: Wenn man sowohl die Texte als auch die nume­ri­schen Codes einer Studie ins sav-File schrei­ben will, wer­den die zusätz­lich mit OPENASALPHA DATA erzeug­ten Variablen auto­ma­tisch über­nom­men. Dies ist das stan­dard­ver­fah­ren für OPENASALPHA -Variablen.
  • Die Variable, die die Codes ent­hält, wer­den nicht auto­ma­tisch über­tra­gen, da es sich bei deren Inhalten um Wertemengen han­delt, für die es in SPSS-Files kei­ne Entsprechung gibt.

27.12.2017: Syntaxerweiterung: FILEKEY für CSVINFILE

Syntax:

CSVINFILE  [ FILEKEY <key> ] [ <delimchar> ] = <filepath>;
  • Auch CSVINFILEs kön­nen mit einem FILEKEY ver­se­hen werden.
  • Der Mechanismus funk­tio­niert ana­log zur Bindung selek­tier­ter OPENQFILEs an DATAFILEs.

Beispiel:

CSVINFILE FILEKEY before2016 = "..\DATA2014\data.csv";
CSVINFILE FILEKEY before2016 = "..\DATA2015\data.csv";
CSVINFILE FILEKEY 2016 = "..\DATA2016\data.csv";
CSVINFILE FILEKEY 2017 = "..\DATA2017\data.csv";
KEY OPENQFILE = panelno;
OPENQFILE FILEKEY before2016 = "..\OPEN2014\opn.*";
OPENQFILE FILEKEY before2016 = "..\OPEN2015\opn.*";
OPENQFILE FILEKEY 2016 = "..\OPEN2016\opn.*";
OPENQFILE FILEKEY 2017 = "..\OPEN2017\opn.*";

27.12.2017: Syntaxerweiterungen: ALLOWEMPTY und FILEKEY für DATAFILE und OPENQFILE

Syntax:

DATAFILE  [ FILEKEY <key> ] [ ALLOWEMPTY ] = <filepath>;

und

OPENQFILE [ FILEKEY <key> ] [ ALLOWEMPTY ] = <filepath>;

1. Zu FILEKEY :

  • Im Defaultfall wer­den alle OPENQFILE s allen DATAFILE s zuge­ord­net. Das ent­spricht in der Regel auch den Anforderungen.
  • Die Zuordnung von Zeilen der OPENQFILE s zu den Fällen in den DATAFILE s geschieht allein über den Inhalt des Schlüssels, der nume­risch oder alpha­nu­me­risch sein kann.
  • In Spezialfällen (z.b. Wellenbefragungen in Panels) soll neben dem Fallschlüssel (z.b. Identifikation im Panel) auch zwi­schen den Befragungswellen unter­schie­den werden.
  • Mit der Option FILEKEY kann man nun DATAFILE s und OPENQFILE s eige­nen Gruppen zuordnen.
  • Wenn bei einem DATAFILE ein FILEKEY gesetzt ist, wer­den aus der Gesamtmenge aller über Schlüssel ver­wal­te­ten offe­nen Antworten nur die her­aus­ge­sucht, die aus OPENQFILE s stam­men, die den­sel­ben FILEKEY haben.

Beispiel:

DATAFILE FILEKEY 2016 = "..\DATA2016\data.*"; DATAFILE FILEKEY 2017 = "..\DATA2017\data.*";
OPENQFILE FILEKEY 2016 = "..\OPEN2016\opn.*"; OPENQFILE FILEKEY 2017 = "..\OPEN2017\opn.*";
  • Hiermit ist sicher­ge­stellt, dass den Daten aus dem Verzeichnis ‘DATA2016’ nur offe­ne Antworten zuge­ord­net wer­den, die im Verzeichnis ‘OPEN2016’ vor­ge­fun­den wurden.
  • Wie man sieht, kann ein FILEKEY belie­big vie­len OPENQFILE s bzw. DATAFILE s zuge­ord­net wer­den, denn mit z.b. “data.*” kann eine belie­big gro­ße Menge Dateien bezeich­net sein.

2. Zu ALLOWEMPTY :

  • Im Defaultfall über­wacht GESStabs, dass aus jedem DATAFILE - bzw. OPENQFILE -Statement wenigs­tens eine gül­ti­ge Datei resultiert.
  • Ist dies nicht der Fall, wird der Lauf mit einem Syntaxfehler abgebrochen.
  • Die Option ALLOWEMPTY erlaubt lee­re Ergebnismengen der Wildcard-Suche.

24.12.2017: Syntaxerweiterung von SORT AS in OVERVIEW-Tabellen
  • Neue Variablen-Option: CODE <reference-code>
  • Neue TABLE-Option: SORT AS
  • Gemeinsam erge­ben die­se neu­en Optionen die Möglichkeit, Sortier-Reihenfolgen von Standardtabellen an Mittelwertübersichten zu vererben.

Syntax des gesam­ten Statements:

OVERVIEW <tableoptions> = <kopf> BY <cellelementlist>( <varlist> ) 
[ SORT <cellelement> [ DESCEND ] [ PANE <number> CODE <number> ] ] ;
<varlist> ::= <var> | <varlist> <var>
<var> ::= <varname> <varoption>
  • In den TABLEOOPTIONS (vor dem ‘=’) wird jetzt auch SORT AS ausgewertet.
  • SORT AS kann sich auch auf Tabellen vom Typ TABLE bezie­hen, die z.B. mit SORT ABSOLUTE DESCEND sor­tiert sind.
  • Wenn dann eine Übersichtstabelle mit meh­re­ren MEAN etc. in einer kor­re­spon­die­ren­den Reihenfolge sor­tiert wer­den soll, kön­nen ein­zel­ne Variablen den Ausprägungen in der Ursprungstabelle zuge­ord­net werden.

Syntax:

<varoption> ::=
[ SORTCLASS <number> ]
[ LEVEL <number> ]
[ FILTER <log.bedingung> | ]
[ USEFONT <font> ]
[ USEWEIGHT <variable> ]
[ DESCRIPTION <string> ]
[ CODE <reference-code> ]

Beispiel:

  • Den Ausprägungen 1 bis 5 einer Variablen namens a17 mögen die Variablen a15 bis a19 entsprechen:
    1 .. a15
    2 .. a16
    3 .. a17
    4 .. a18
    5 .. a19
  • Die OVERVIEW -Tabelle kann dann kor­re­spon­die­rend zu den Häufigkeiten der Ausprägungen 1 .. 5 sor­tiert wer­den, indem man den Variablen die Codewerte ent­spre­chend zuordnet.
TABLE NAME sortbase = x4 BY a17 SORT ABSOLUTE DESCEND;
OVERVIEW SORT AS sortbase = x4 BY MEAN(
a15 CODE 1
a16 CODE 2
a17 CODE 3
a18 CODE 4
a19 CODE 5
);
  • Die Code-Zuordnungen müs­sen ein­deu­tig sein: wenn mehr als eine Variable in einem OVERVIEW -Statement den­sel­ben Code bekom­men, führt dies zu einem Syntaxfehler.
  • Wenn man Variablen auf die­se Weise Referenzcodes zuteilt, soll­te man dies voll­stän­dig für alle dar­zu­stel­len­den Variablen machen, da ansons­ten vom System Referenzcode ver­ge­ben wer­den, die zu ent­spre­chen­den Fehlern füh­ren können.

23.12.2017: Syntaxerweiterung zu INVERTOUT

Syntax:

INVERTOUT [ JSON <jsonpath> ] = <filepath>;
  • Wenn in der JSON-Klausel ein gül­ti­ger Filepath steht, wird in die­se Datei eine Beschreibung des Inhalts der INVERTOUT -Datei abge­legt.
  • Diese Beschreibung ent­hält alle Variablen, deren Vartitle, deren Text und deren Labels.

23.12.2017: Neues Statement: MINROWTOTAL[GLOBAL]/ MINCOLUMNTOTAL[GLOBAL]
  • Neue Statements zum Unterdücken von Spalten/ Zeilen, bei denen im Total eine Untergrenze bei spe­zi­el­len Cellelements unter­schrit­ten wird.

Syntax:

a) als nach­ge­stell­te Option zu einem TABLE -Statement:

MINROWTOTAL <cellelement> = <value>;
MINCOLUMNTOTAL <cellelement> = <value>;

b) als glo­ba­le Voreinstellung:

MINROWTOTALGLOBAL <cellelement> = <value>;
MINCOLUMNTOTALGLOBAL <cellelement> = <value>;
<cellelement> ::= [ COLUMNPERCENT | ROWPERCENT | MEAN | ABSOLUTE | PHYSICALRECORDS ]

c) zum Ausschalten der glo­ba­len Voreinstellung:

MINROWTOTALGLOBAL = NO;
MINCOLUMNTOTALGLOBAL = NO;

21.12.2017: Erweiterung des DUMMYHEAD-Statements
  • DUMMYHEAD dient dazu, einen Kopf für Table Structure / Table add zu definieren.
  • DUMMYHEAD defi­niert die Labeltexte — was aber ver­misst wur­de, ist die Funktionalität, die OVERCODE in Labels haben.
  • Das DUMMYHEAD -Statement darf jetzt eine Labels-Klausel ent­hal­ten, und die­se darf Overcodes enthalten.

Syntax:

DUMMYHEAD = <varname>
LABELS
OVERCODE 1 2 "Labeltext....
1 "Labeltext"
2 "Labeltext"
...
;
  • Das DUMMYHEAD ‑Statement erzeugt dann nicht nur die expli­zit genann­te Variable, son­dern für jedes Label, das NICHT Overcode ist, eine zusätz­li­che Variable mit dem kon­stan­ten Wert des Labelcodes. Deren Name ist <varname>__<labelcode>.
  • Auch die Table add -Statements müs­sen ange­pas­sen: Anstelle der kon­stan­ten Zahlenwerte müs­sen die zusätz­lich gene­rier­ten Konstanten-Variablen ver­wen­det wer­den, also z.b. “k_dummy__1” statt nume­risch 1, usw..

Beispiel:

dummyhead = k_dummy
labels
overcode sum 1 2 "Alter 1 + 2"
1 "Alter 1"
2 "Alter 2"
3 "Alter 3"
;
compute alter = random( 65 ) + 18;
TABLE STRUCTURE = k_dummy BY x3;
tablefilter 1 =  text "" [17:45] in alter;
table add = k_dummy__1 by x3 #s;
tablefilter 1 =  text "" [46:60] in alter;
table add = k_dummy__2 by x3 #s;
tablefilter 1 =  text "" [61:99] in alter;
table add = k_dummy__3 by x3 #s;
  • In einem so defi­nier­ten DUMMYHEAD , bei dem die Labels inner­halb der erwei­ter­ten Syntax defi­niert wer­den, wer­den auch die Overcodes aus den DUMMYHEAD -Labels gezählt — da alle Subvariablen die Labels der DUMMYHEAD -Variablen erben, und damit auch die Overcode-Definitionen.

15.12.2017: Textergänzungen mit PREPEND/ APPEND
  • Mit PREPEND und APPEND kön­nen Vartitle oder Vartexte modi­fi­ziert wer­den, indem man  Textbestandteile ange­hängt oder vor­an­ge­stellt werden.
  • In den Statements, die sich auf Vartexte bezie­hen, gilt die Syntax für Texte (Zeilenumbrüche etc. dür­fen ent­hal­ten sein).

Syntax:

PREPEND VARTEXT <varlist> = <text>;
APPEND VARTEXT <varlist> = <text>;
PREPEND VARTITLE <varlist> = <string>;
APPEND VARTITLE <varlist> = <string>;

13.12.2017: Bugfix
  • Betrifft MarkMeanRow / MarkMeanColumn
  • Interne Kennzeichungen über die Signifikanz von Mittelwertunterschieden wur­den via GESS ChartFactory in PowerPoint-Charts übertragen.
  • Gefixt!

6.12.2017: CSVINFILE
  • Die Anzahl der Semikola in den Datenzeilen wird nicht mehr überwacht.
  • Leere Felder nach dem letz­ten Semikolon erzeu­gen in der/ den betrof­fe­nen Variablen ein MISSING.

5.12.2017: Problemhinweis für ASSOCFILE spaltenfixiert
  • Wenn eine Datei, die als ASSOCFILE ein­ge­le­sen wer­den soll, UTF8-BOM-kodiert ist, wird der Schlüssel in der ers­ten Datenzeile im ASSOCFILE nicht kor­rekt gele­sen, da die 3‑Bytes des BOM als Inhalt inter­pre­tiert werden.
  • Es ist wei­ter­hin grund­sätz­lich bei spal­ten­fi­xier­ten Datensätzen dar­auf zu ach­ten, dass die­se nicht in UTF8 oder UTF8BOM kodiert sind.
  • Sind zei­chen außer­halb von ASCII (0..127) ent­hal­ten, wer­den die spal­ten falsch inter­pre­tiert. Solche Fehler sind u.u. sehr schwer zu finden.

5.12.2017: Bugfix
  • Betrifft MIN MAX
  • MIN MAX als CELLELEMENTS lie­fer­ten kei­ne Werte.
  • Gefixt!

5.12.2017: Bugfix
  • Betrifft IF .. PRINT in Datei
  • Sonderzeichen in der Pfadangabe wur­de nicht kor­rekt an Windows über­ge­ben (Windows mag kein UFT8).
  • Gefixt!

5.12.2017: Bugfix
  • Betrifft EXPANDINTOKEN
  • Es kam vor, dass EXPANDINTOKEN -Anweisungen, die durch ein IFDEF eigent­lich aus­ge­schal­tet sein soll­ten, vom Preprozessor doch ange­wen­det wurde.
  • Gefixt!

5.12.2017: Neues Statement: AUTOCLEAR

Syntax:

AUTOCLEAR = [ YES | NO ];
  • Voreinstellung: NO
  • Als Default wer­den expli­zit alle Variablen inner­halb eine GESStabs-Laufs vor dem Einlesen des nächs­ten Falles gecleart, d.h. expli­zit auf Missing gesetzt.
  • Wenn man abse­hen kann, dass dies unnö­tig ist, kann man die­se Option auf NO setzen.
  • Bei einer Million Fällen aus einer inver­tier­ten Datei ist der Zeitgewinn relevant.

5.12.2017: Neues Statement: ATOMVARSHORTCUT

Syntax:

ATOMVARSHORTCUT = [ YES | NO ];
  • Voreinstellung: NO
  • Hiermit kann man für ato­ma­re Variablen eine beschleu­nig­te Vearbeitung bei der Bereitstellung von Werten für eine Tabelle oder Computes einstellen.
  • Man soll­te dies nur tun, wenn man Variablen ver­wen­det, die Overcodes enthalten.

23.11.2017: USEWEIGHT
  • Wenn der Inhalt einer Variablen mit­tels USEWEIGHT zum gül­ti­gen Gewicht für eine oder meh­re­re Tabellen ver­wen­det wird ( USEWEIGHT = <varname>;Z), und diese Variable den aktuellen SETMISSING -Wert enthält, dann wird für diesen Fall das Gewicht 0 verwendet.
  • Die Logik dahin­ter: ein Fall, des­sen Gewicht nicht bestimmt ist, kann in einer gewich­te­ten Auswertung nicht ver­wen­det werden.

23.11.2017: Schreiben und Lesen invertierter Datenfiles
  • Neue Statements: INVERTIN , INVERTOUT , ZIPINVERTOUT , INVERTOUTMAX
  • Als neu­es (pro­prie­tä­res) Dateiformat kann GESStabs inver­tier­te Datenfiles schrei­ben und lesen.
  • In “nor­ma­len” Datenfiles ( DATAFILE , CSVINFILE , SPSSIN ) sind die Werte fall­wei­se ange­ord­net; die Dateien ent­hal­ten sequen­ti­ell Fälle und alle deren Werte.
  • Bei inver­tier­ter Speicherung ist das umge­kehrt: alle wer­te der ein­zel­nen Variablen sind zusam­men­hän­gend gespeichert.
  • Diese Speicherform erlaubt sehr effi­zi­en­tes Lesen, wenn nur weni­ge Variablen benö­tigt werden.
  • Der ide­al­ty­pi­sche Anwendungsfall ist, wenn aus sehr gro­ßen Dateien ein­zel­ne Tabellen mit weni­gen Variablen erzeugt wer­den sollen.
  • Mit INVERTOUT kann eine sol­che Datei gespei­chert wer­den, ähn­lich wie mit SPSSOUTFILE .
  • Ein inver­tier­tes File ist nur ein Datenfile; weder Valuelabels noch Vartitle oder Texte sind dar­in ent­hal­ten. In die­ser Hinsicht ist es mit einem CSVINFILE ver­gleich­bar, mit einem Unterschied: der Zustand der MISSING-Values (das glo­ba­le SETMISSING und varia­blen­be­zo­ge­ne MISSING ) wer­den übertragen.
  • INVERTIN ist das kom­ple­men­tä­re Statement, die­se Datei wie­der zu lesen.
  • Im Anschluss an das INVERTIN -Statement sind die Variablennamen im GESS-Skript bekannt.
  • Die Daten in den inver­tier­ten Files kön­nen kom­pri­miert gespei­chert wer­den (ZIP). Dies wird mit ZIPINVERTOUT (YES/NO) gesteuert.
  • Das INVERTIN -Statement erkennt, ob es sich um kom­pri­mier­te Daten han­delt oder nicht.
  • Die Werte in den inver­tier­ten Dateien sind in Blöcken von x Fällen gespei­chert. Diese Speichergröße beträgt im Standardfall 16384. Man kann dies mit INVERTOUTMAX anpassen.

23.11.2017: Semikolon und Anführungszeichen in Datenfeldern in CSVINFILE
  • Strings in Datenfeldern, die durch ” oder ’ ein­ge­schlos­sen sind, dür­fen das Feldtrennzeichen ; enthalten.
  • Außerdem dür­fen “” oder ” ver­wen­det wer­den, die dann als ein­zel­ner Char inter­pre­tiert werden.
  • Das letz­te Feld in einer Datenzeile muss nicht durch ein Semikolon abge­schlos­sen werden.

21.22.2017: Bugfix
  • Betrifft AUTOOVERSORT -Problem
  • Wenn SORTCLASS an Overcodes und außer­dem SORTCLASS an Labels, die kei­nem Overcode ange­hö­ren, mit AUTOSORTCLASS (das Resultat der Auflösung der inter­nen Hierarchie von Labels und Overcodes im AUTOOVERSORT ) zusam­men kamen, wur­de der Vorrang von SORTCLASS vor AUTOSORTCLASS falsch auf­ge­löst.
  • Gefixt!

21.11.2017: Bugfix
  • Betrifft Ausgabe in SPSS-Statement
  • Nach einer inter­nen Aufräumaktion wur­den die Variablennamen in expor­tier­ten SPSS-Valuelabels-Statements nicht an SPSS-Standards “geman­gelt”.
  • Gefixt!

23.10.2017: Bugfix
  • Betrifft COLUMNSUMMARY
  • Einzelne Zellen der Totalspalten wur­den bei der Ausführung von COLUMNSUMMARY feh­ler­haft gelöscht.
  • Gefixt!

28.09.2017: Neues Feature: OFFICEEXPORT
  • OFFICEEXPORT ist eine neue Methode, GESStabs-Tabellen nach Excel (.xls, .xslx) oder in Libre Office-Spreadsheets (.ods) zu exportieren.
  • Der Funktionsumfang ist ähn­lich wie bei INSTANTEXCEL , der Export erfolgt ohne Beteiligung von Excel/ Libre Office  durch GESStabs. Der Vorteil ist eine wesent­lich höhe­re Verarbeitungsgeschwindigkeit.
  • Da die Gestaltung nicht über HTML/ CSS erfolgt, gehö­ren damit auch die Begrenzungen der Kompatibilität beim  HTML-Import durch Excel der Vergangenheit an, ins­be­son­de­re die teil­wei­se män­gel­be­haf­te­te Interpretation von CSS  durch Excel.
  • Generell gilt: eben­so wie bei INSTANTEXCEL führt eine NEWCHAPTER -Anweisung vor einer Tabellenanweisung dazu, dass ein neu­es Worksheet in Excel/ Libre Office ange­legt wird.
  • Ebenso wie bei INSTANTEXCEL führt eine NEWPAGE -Anweisung vor einer Tabellenanweisung dazu, dass ein Seitenvorschub
    im Worksheet ange­legt wird. Dieser wird dann beim Ausdruck von Excel bzw. Libre Office ausgewertet.
  • Der Export wird durch das OFFICEEXPORT -Statement ange­for­dert.

Syntax:

OFFICEEXPORT = <filename> ;
  • <filename> muss eine der fol­gen­den Extensions haben : xlsx | xls | ods. Über die Extension wird auto­ma­tisch das inter­ne Format der Export bestimmt.
  • Zur Steuerung des Layouts gibt es das neue state­ment OFFICEXPORTOPTIONS .

Syntax:

OFFICEXPORTOPTIONS [ EDIT ] = { <option> } *n;
  • Wenn die Option EDIT gesetzt ist, wer­den nur die expli­zit ange­ge­be­nen Optionen geän­dert, alle ande­ren Optionen behal­ten ihre Werte, ana­log zu +/- bei TABLEFORMATS .
<option> ::= [ <boxfont> | <elementfont> | <background> | <foreground> | 
<verticalalign> | <horizontalalign>| <useprintercolors> | <frames> | 
<wraptext> | <connectexcelcells> | <labelwidth> ]
  • Als Optionen ste­hen fol­gen­de Elemente zur Verfügung: 
    • Schrifttyp und ‑for­mat eines defi­nier­ten Boxtyps ( BOXFONT )
    • Schrifttyp und ‑for­mat eines ein­zel­nen Zellenelements ( ELEMENTFONT )
    • Hintergrund- und Schriftfarben einer Tabellenbox ( BACKGROUND FOREGROUND )
    • vertikale/ hori­zon­ta­le Ausrichtung von Texten ( VERTICALALIGN HORINZONTALALIGN )
    • Übergabe der Farbgebung aus der PDF-/ PS-Ausgabedatei in Excel ( USEPRINTCOLORS )
    • Formatierungen von Rahmen ( FRAMES )
    • Zusammenfassung ein­zel­ner Zeilen in Datenzellen ( CONNECTEXCELCELLS )
    • Einstellungen für Fließtexte ( WRAPTEXT )
    • Zellenbreiten ( LABELWIDTH )

Beispiel:

officeexport = direct.xlsx;
#expand #gray $333333
officexportoptions =
| drawbox tabletitle : weight medium borders bottom color #gray
| drawbox labels x : weight thin color #gray
| drawbox labels y : weight thin color #gray
| boxfont tabletitle : "dejavu sans" size 14 option bold
| elementfont colchiqu : "Constantia" size 10 option bold
| VerticalAlign tabletitle : vcenter
| HorizontalAlign datacell : hcenter
| UsePrinterColors datacell : yes
| labelwidth : 350
| background labels y : $ccffdd
| foreground labels y : $FFEEEE
;
  • Tutorial zu OFFICEEXPORT : sie­he hier.

16.08.2017: Neue Statements: SIGNIFMINEFFECTCHIQ und SIGNIFMINEFFECTTTEST

Syntax:

SIGNIFMINEFFECTCHIQ = <value>;

bzw.

SIGNIFMINEFFECTTTEST = <value>;
  • Neues Feature: Begrenzung der Ausgabe von Sigifikanzkennzeichnung durch mini­ma­le Effektgröße
  • Hintergrund: Über Tabellenbände wird gern das Füllhorn sta­tis­ti­scher Tests (Signifikanztests) aus­ge­schüt­tet. Bei höhe­ren Fallzahlen wer­den oft aller­dings auch Zusammenhänge signi­fi­kant, deren gerin­ge Effektstärke eine wei­ter­ge­hen­de Interpretation oft unsin­ning erschei­nen lässt. Die Signifikanz ist ja nur die Aussage dar­über, wie unwahr­schein­lich es ist, dass die Nullhypothese gilt, dass die­ser Zusammanhang also in der Grundgesamtheit nicht exis­tiert. Je grö­ßer die Stichprobe, des­to gerin­ge­re Effekte wer­den als signi­fi­kant gekennzeichnet.
  • Es liegt also nahe, die Kennzeichnung von Signifikanz in sol­chen Fällen zu unter­drü­cken, in denen der vor­ge­fun­de­ne Unterschied einen vom Benutzer vor­zu­ge­ben­den Minimalwert nicht erreicht. Die Statistik kennt hier­für Maße der Effektstärke, die sonst auch als Zusammenhangsmaße ver­wen­det werden.
  • Die am häu­figs­ten ver­wen­de­ten Signifikanztests in den Tabellenbänden tes­ten Unterschiede von Anteilen (Prozentwerten) oder von Mittelwerten.
  • Zur Messung der Effektstärke bei Tests aus der ChiQu-Familie ( COLCHIQU , ROWCHIQU , HYCOLCHIQU etc.) wird Cramer´s Phi berech­net (das nume­risch iden­tisch ist mit Cohen´s w). Wird hier­bei nicht min­des­tens ein Effekt der Stärke SIGNIFMINEFFECTCHIQ erreicht, wird die Ausgabe des Signifikanzbuchstabens für die­se Zelle unter­dückt. Der Wertebreich von Phi ist 0 bis 1.
  • Für die Bewertung von Mittelwertunterschieden ( TTEST , MEANTEST , HYMEANTEST , ESSMEANTEST etc.) wird Cohens d berech­net. Der Mechanismus funk­tio­niert ent­spre­chend: Wird nicht min­des­tens ein Effekt in Höhe von SIGNIFMINEFFECTTTEST erreicht, wird der Signifikanzbuchstabe unter­drückt. Wie bei allen Maßen für Effektstärke bedeu­tet 0 auch hier, dass kein mess­ba­rer Zusammenhang besteht. Cohens d kann aber auch Werte grö­ßer 1 annehmen.
  • In aller Regel wird man für Cramer´s Phi ( SIGNIFMINEFFECTCHIQ ) klei­ne­re Grenzwerte anset­zen als für Cohens d ( SIGNIFMINEFFECTTTEST ). Wenn bei letz­te­rem die “Pooled Variance” den Wert 0 hat, wird Cohens d nume­risch unzu­läs­sig (vul­go unend­lich). In dem Fall wird der Test nicht durchgeführt.
  • SIGNIFMINEFFECTCHIQ bzw. SIGNIFMINEFFECTTTEST sind Tabellen-Voreinstellungen, sie gel­ten für alle in der Folge ver­ein­bar­ten Tabellen.
  • Mit SIGNIFMINEFFECTCHIQ oder SIGNIFMINEFFECTTTEST = 0; kann man die Restriktion wie­der ausschalten.
  • Wird durch einen die­ser Tests ein Signifikanzbuchstabe unter­drückt, wird dies ggf. im STATTESTDUMP-File protokolliert.

26.05.2017: Warnung im Zusammenhang mit INSTITUTION = “”; 
  • Bis Ende 2016 war der Institutsname, so wie in der Lizenz ver­ein­bart, immer Bestandteil der Ausgabe von INSTITUTION . Dies dien­te als ein mini­ma­ler Kopierschutz.
  • Seit der Einführung des Lizenzsystems über das Internet ist dies nicht mehr erfor­der­lich, und Kunden hat­ten dar­um gebe­ten, dass man den Text von INSTITUTION- komplett anpassen kann. Die Software wurde entsprechend angepasst.
  • Da der Inhalt von INSTITUTION der Name des ers­ten Sheets bei Ausgabe mit INSTANTEXCEL ist, gibt es dann Probleme, wenn INSTITUTION = ""; gesetzt wird, da Excel einen lee­ren String nicht als Name eines Sheets akzeptiert.
  • Der Lauf wird dann mit der dem Runtimeerror “can­not set name of sheet in excel” abgebrochen.
  • Abhilfe: INSTITUTION = ""; ver­mei­den, wenn eine Excel-Ausgabe geplant ist

26.05.2017: Anpassung der Namen atomarer Variablen 
  • Betrifft die Anpassung der Namen ato­ma­rer Variablen von MULTIQ und DICHOQ bei der Speicherung in ASCIIOUTFILE DELIMITED an die Namen, die GESS Q. ausgibt.
  • Die Namen wer­den jetzt bei Verwendung von MODIFYCSVNAMES = YES; dem ange­passt, wie GESS Q. sol­che Variablen benennt.
  • Die Namensbestandteile “ $1” etc. wer­den in “_1” etc. umgewandelt.

23.05.2017: Funktionsanpassung bei CALCULATECOLUMN 
  • CALCULATECOLUMN wer­tet Zahlenwerte aus, die den Zellen ein­deu­tig zuge­ord­net sind.
  • Diese konn­ten aller­dings auch Zahlenwerte sein, die bei der wei­te­ren Verarbeitung der Ausgabe unter­drückt wer­den, z.B. durch SUPPRESSIFLESS .
  • CALCULATECOLUMN prüft jetzt, ob die­se Zellen im Verlauf der Ausgabe einen String ent­hal­ten, der einen Zahlenwert dar­stellt: nur dann wird der Zellenwert aus­ge­wer­tet. Sonst gilt die Zelle als missing.

09.05.2017: neue syntaktische Variante von MARKCELLS 
  • auf Basis von Häufigkeiten in PS und PDF

Syntax:

MARKCELLS = YES COMPUTE COLOR SIGNIFLEVEL [ SIGNIF90 | SIGNIF95 | SIGNIF99 | SIGNIF999 ] GT <colorGT> LT <colorLT> ;
  • In die­ser Version ( MARKCELLS COMPUTE ) wird für jede Zelle aus den Randverteilungen und der Zellenbesetzung die “Unwahrscheinlichkeit” der empi­ri­schen Besetzung als p‑Wert berechnet.
  • Aus dem SIGNIFLEVEL ergibt sich ein Intervall ( 0..SIGNIFLEVEL ).
  • Die Zellen, deren p‑Wert in die­sem Intervall liegt, wer­den farb­lich gekennzeichnet.
  • Eine Zelle mit dem p‑Wert=0 wird mit einem benann­ten Farbwerte ( colorGT bzw. colorLT ) gefärbt.
  • Zellen, deren p‑Wert grö­ßer ist als das SIGNIFLEVEL , behal­ten einen wei­ßen Hintergrund.
  • Zellen, deren p‑Werte zwi­schen 0 und SIGNIFLEVEL lie­gen, wer­den mit einer pro­por­tio­nal ange­pass­ten Farbe zwi­schen colorGT bzw. colorLT und weiß eingefärbt.
  • Lange Rede, kur­zer Sinn: Je signi­fi­kan­ter die Abweichung vom Erwartungswert, des­to kräf­ti­ger die Farbmarkierung.
  • Wenn TABLEFORMAT EXCELCOLOR gesetzt ist, wer­den die Hintergrundeinfärbungen auch in Excel übertragen.

03.05.2017: neues CELLELEMENT MARKCELLSPVALUE
  • Der Einfärbung von Zellen im Zuge von MARKCELLS liegt ja immer irgend­ein Signifikanztest zugrun­de, meis­tens 2x2-Chiquadrat-basiert.
  • Man kann für die Abschätzung die Methoden CLASSIC, COLCHIQU, ROWCHIQU etc. einsetzen.
  • Die Entscheidung für eine Farbe zur Kennzeichnung geschieht anhand des p‑Wertes.
  • Diesen Wert kann man nun auch als ein CELLELEMENT ausgeben.
  • 0.05 enst­pricht dem 5%-Niveau, also soll­te man ein pas­sen­des Format vor­se­hen, z.b. ‘#.###’.
  • Werte > 0.20 wer­den der Übersichlichkeit hal­ber nicht expli­zit aus­ge­ge­ben, son­dern durch “–” ersetzt.

15.03.2017: geänderte Voreinstellung zu SPSSSINGLEWRITE
  • Die Voreinstellung ist immer YES.
  • Wenn man gro­ße Mengen von Valuelabels in einem WRITESPSSFILE ver­sen­ken muss, kann man die­se Voreinstellung auf NO ändern.
  • Es hat sich her­aus­ge­stellt, dass die Methode zum schnel­len Speichern auch in der Windows-Version nicht in allen Fällen sicher funktioniert.

16.02.2017: neues Statement IGNORESPSSMISSINGVALUES

Syntax:

IGNORESPSSMISSINGVALUES = [ YES / NO ];
  • Wenn eine Variable beim Einlesen eines SPSS-Files den Wert des inter­nen SysmisVal von SPSS hat, dann wird die­ser beim Einlesen durch den SETMISSING -Wert von GESS ersetzt.
  • Alle Variablenwerte aus dem sav-File wer­den dann als gül­tig übertragen.

16.02.2017: neues Statement IGNORESPSSSYSMISVAL

Syntax:

IGNORESPSSSYSMISVAL = [ YES / NO ];
  • Mit die­sem Schalter kann man GESStabs anwei­sen, die MISSING VALUES in einem SPSS-sav-File beim Einlesen mit SPSSINFILE zu ignorieren.
  • Alle Variablenwerte aus dem sav-File wer­den dann als gül­tig übertragen. 

13.02.2017: Bugfix
  • Betrifft: SPSSOUTFILE
  • Die Standardübergabe von VALUELABELS an die SPSSIO-Schnittstelle hat­te sich in eini­gen Fällen als zu lang­sam erwiesen.
  • Diese Übergabe wur­de auf eine ande­re Methode der SPSSIO-API umgestellt.
  • Hierbei ist lei­der ein Filter ver­lo­ren­ge­gan­gen, der Overcodes nicht durch­ge­las­sen hat, sodass Overcodes unnö­tig an SPSS über­tra­gen wurden.
  • Gefixt!

13.02.2017: Neues Statement #DOMACRO4

Syntax:

#domacro4 (<filename>)
  • Einen ähn­li­chen Hintergrund wie #DOMACRO3 hat auch das #DOMACRO4 -Statement.
  • Der Unterschied ist, dass der Name des Makros nicht im Skript fest­ge­legt wird, son­dern als ers­tes Feld in der CSV-Datei benannt wird.
  • Der Aufruf #domacro4(macrocalls4.csv) wür­de bei dem fol­gen­den Inhalt der Datei ‘macrocalls4.csv’
    table;a11;a12;
    tablea;a11;a13;
    tableb;a11;a14;
    tablea;a11;a15;
    tableb;a11;a16;
    table;a11;a17;
    die Existenz von drei Macros vor­aus­set­zen, #table , #tablea und #tableb .
  • Die Existenz geeig­ne­ter Tabelliermakros vor­aus­ge­setzt, kön­nen so auch Mitarbeiter, die mit dem Tabellieren nicht ver­traut sind, eige­ne Tabellen definieren.

13.02.2017: Neues Statement #DOMACRO3

Syntax:

#domacro3 (<macroname> <filename>)
  • Wie auch #DOMACRO und #DOMACRO2 dient das #DOMACRO3 -Statement der wie­der­hol­ten Abarbeitung von Makros.
  • Die Makro-Parameter wer­den hier­bei aus einer CSV-Datei ent­nom­men, die am ein­fachs­ten mit einem Tabellenverarbeitungsprogramm erzeugt wer­den kann.
  • Dadurch bie­tet es eine Schnittstelle zu Mitarbeitern, die nicht im Scripting ver­siert sind.
  • Als ers­ter Parameter wird der Makroname über­ge­ben, als zwei­ter Paramater der Pfad einer CSV-Datei, die zei­len­wei­se die Parameter ent­hält, die an das genann­te Makro über­ge­ben wer­den sollen.
  • Jede Zeile der CSV-Datei gene­riert einen Makro-Aufruf.
  • Die ein­zel­nen Felder ( durch ‘;’ getrennt ) wer­den als die ein­zel­nen Parameter interpretiert.

Ein ein­fa­ches Beispiel:

  • Gegeben sei fol­gen­des Makro:
#macro #table( &1 &2 )
table = &1 by &2;
#endmacro
  • … und fol­gen­der Aufruf:
#domacro3( table, macrocalls.csv )a11;a12;
  • Die CSV-Datei ‘macrocalls.csv’ ent­hält fol­gen­de Zeilen:

a11;a13;
a11;a14;
a11;a15;
a11;a16;
a11;a17;

  • Hierdurch wür­den 6 ver­schie­de­ne Tabellen erzeugt: a11 by a13 , a11 by a14 etc.

13.02.2017: Neues Statement SPSSSINGLEWRITE
  • Die Übergabe von VALUELABELS an SPSS-.sav-Files wur­de aus Performancegründen auf eine SPSS-Methode umge­stellt, die wesent­lich effi­zi­en­ter iden­ti­sche valu­la­bels an meh­re­re Variablen überträgt.
  • Leider führt die­se Methode in eini­gen Fällen zu Fehlernvinnerhalb der SPSS-API.
  • Da die­ser Fehler mit der SO-Bibliothek unter Linux regel­mäßg auf­tritt, wird die­se schnel­le­re Methode unter Linux mit der Voreinstellung ‘NO’ auto­ma­tisch unterbunden.

Syntax:

SPSSSINGLEWRITE = [ YES | NO ] ;

(Voreinstellung: Windows: NO, Linux: YES)


12.01.2017: Bugfix
  • Betrifft CVSINFILE
  • Inhalte von Alpha-Variablen im csv-Infile, die ein Semikolon ent­hal­ten, wur­den vom CVSINFILE falsch inter­pre­tiert: Ein Semikolon wur­de auch inner­halb von durch ” oder ’ ein­ge­schlos­se­nen Strings als csv-Trenner interpretiert.
  • Gefixt!

11.01.2017: Erweiterung der Datenübergabe an GESS ChartFactory 
  • Die Datenübergabe an GESS Chartfactory erfolg­te bis­lang als Text-Tatei in einem csv-ähn­li­chen Format.
  • Dieselbe Information wird jetzt auch als xlsx-Datei gespeichert.
  • Hintergrund: Excel liest beim Einspielen in einem csv-ähn­li­chen Format eigen­wil­lig bei Zahlen mit Dezimalstellen immer min­des­tens zwei Nachkommsstellen, auch wenn nur eine vor­han­den ist…

11.01.2017: Bugfix
  • Betrifft INSTITUTION in HTML.
  • Bei der Ausgabe von Tabellen in HTML wur­de feh­ler­haft die INSTITUTION aus dem Lizenzschlüssel verwendet.
  • Jetzt wird der INSTITUTION -String ver­wen­det, der ggf. durch das INSTITUTION -Statement modi­fi­ziert wurde

22.11.2016: Neue Option CALCCOLLOWACCURACY 
  • CALCCOLLOWACCURACY = CALCulateCOLumnLOWACCURACY

Syntax:

CALCCOLLOWACCURACY = [ YES | NO ] ;
  • Globaler Schalter für den gesam­ten Lauf
  • Bei CALCULATECOLUMN und COLUMNSUMMARY wer­den bei Berechnungen als Default die exak­ten Werte der Zellinhalte herangezogen.
  • Diese kön­nen von den in der Tabelle dar­ge­stell­ten Werten abwei­chen: ein Wert von 2.352121326 wird in der Tabelle z.b. als 2.4 dar­ge­stellt. Wenn man mit Werten mit allen Nachkommastellen rech­net, kann sich z.b. als Differenz ein ande­rer Wert erge­ben, als wenn man nur die aus­ge­wie­se­nen Ziffern heranzieht.
  • Bei man­chen Kunden bewirkt man aber kei­ne Zufriedenheit über eine gestie­ge­ne nume­ri­sche Genauigkeit, son­dern eher Ablehnung und Beharren auf die Anzeige des Taschenrechners.
  • Man kann mit die­sem Schalter die Genauigkeit her­ab­set­zen: dann rech­net GESStabs unge­nau, wie gewünscht.

15.11.2016: Neue Funktion COLUMNSUMMARY

Syntax:

COLUMNSUMMARY <zielspalte>  [ format "#,#..." ] =  <function> [ <option>( {<quellspalte>}*n  );
<zielspalte> ::= < varno code >
<quellspalte> ::= < varno code >
<function> ::= [ MEAN | SUM | MIN | MAX ]
<option>   ::= [ ZEROMISSING | DASHMISSING ]
  • Zusätzlich zur Berechnung von Spalten mit­tels CALCULATECOLUMN gibt es hier­mit eine wei­te­re Funktion, um in Tabellen wei­te­re Spalten aus bereits bestehen­den Spalten zu errechnen.
  • Über belie­bi­ge Quellspalten kann man als Summary den Mittelwert, die Summe, das Minimum oder das Maximum ausgeben.
  • Außerdem kön­nen die Resultate sowohl mit CALCULATECOLUMN als auch mit wei­te­ren COLUMNSUMMARY -Statements wei­ter­ver­ar­bei­tet werden.
  • Mit den Optionen ZEROMISSING und DASHMISSING kann man steu­ern, ob lee­re Zellen in die Berechnung ein­ge­hen oder aus­ge­schlos­sen wer­den sollen.
  • Mit DASHMISSING wer­den Zellen, die mit­tels ‘-’ als leer gekenn­zeicn­het sind, vor den Berechnungen aus­ge­schlos­sen. Hier gibt es kei­ne Automatik, weil es z.b. bei der Berechnung eines MEAN über Prozentwerte sinn­voll sein kann, die­se Zellen als 0 in die Berechnung ein­flie­ßen zu lassen.
  • Bei Prozentwerten in Tabellen wird mit ‘-’ oft eine Zellenbesetzung mit null signa­li­siert. Bei einem MEAN über MEAN steht das ‘-’ hin­ge­gen meist für einen nicht bere­chen­ba­ren Wert. Da der COLUMNSUMMARY -Operator kei­ne Kenntnis über die Natur der Zahlen hat, muss es hier eine Steuerungsmöglichkeit im Script geben.
  • Der Vollständigkeit hal­ber kann man mit­tels ZEROMISSING auch Zellen aus­s­schlie­ßen, in denen eine nume­ri­sche Null steht.
  • Beide Optionen wer­den wohl am häu­figs­ten bei MEAN oder MIN benö­tigt. Bei SUM ist es ja rela­tiv gleich­gül­tig, ob eine Null addiert wird oder nicht.

22.9.2016: Bugfix
  • Betrifft die Font-Selektion bei CALCULATECOLUMN .
  • Zur Definition des Fonts von Werten, die man mit CALCULATECOLUMN berech­net hat, gibt es zwei Methoden, von denen eine aller­dings einen Bug hatte:

a) Hat immer funk­tio­niert: Man ver­gibt einen Font für das Label und erzwingt des­sen Weitergabe mit­tels INHERITFONT [x] . In die­sem Fall wird neben den CELLELEMENT -Font auch der Label-Fontbeeinflusst. Beispiel:

groups kopf1 =
| total : 1 eq 1
| code3 : a12 eq 3
| code4 : a12 eq 4
| code5 : a12 eq 5
| code1 usefont "Times-Roman" size 13  : 2 eq 1  
| code2  : 2 eq 1
;
inheritfont y = no;
inheritfont x = yes;
table = kopf1 by a11;
CALCULATECOLUMN <1 5> = <1 2> + <1 3>;
CALCULATECOLUMN <1 6> = <1 2> - <1 3>;

b) Funktioniert jetzt auch: Man ver­gibt ein CELLELEMENT für das label und defi­niert einen USEFONT für die­ses CELLELEMENT . Beispiel:

groups kopf2 =
| total : 1 eq 1
| code3 : a12 eq 3
| code4 : a12 eq 4
| code5 : a12 eq 5
| code1 cellelements ( physicalrecords ) : 2 eq 1  
| code2 cellelements ( physicalrecords ) : 2 eq 1
;
inheritfont y = no;
inheritfont x = no;
cellelements =  columnpercent;
usefont physicalrecords = "Times-Roman" size 13;
globalcolminimum = 0;
table = kopf2 by a11;
CALCULATECOLUMN <1 5> = <1 2> + <1 3>;
CALCULATECOLUMN <1 6> = <1 2> - <1 3>;

22.9.2016: Bugfix
  • Betrifft COLUMNPERCENT als CELLELEMENT für SORT im TABLE -Statement.
  • Der Sortieralgorithmus berech­ne­te das CELLELEMENT COLUMNPERCENT auf Basis einer nicht kor­rekt ermit­tel­ten Randzelle.
  • Gefixt!

22.9.2016: neues TABLEFORMAT IDENTCHIQNOSIGNIF
  • Wenn man Variablen gegen sich selbst tabel­liert und dabei einen COLCHIQU -Test mit­lau­fen lässt, dann sind die Abweichungen in den Zellen in die­ser Subtabelle nume­risch hoch­si­gni­fi­kant, inhalt­lich aller­dings hoch uninteressant.
  • Es gab den Kundenwunsch, die Signifikanz-Buchstaben in die­sem Fall nicht anzuzeigen.
  • In sol­chen und ähn­li­chen Konstellationen kann man jetzt die Ausführung der CHIQU -Signifikanztests mit dem Tableformat IDENTCHIQNOSIGNIF ausschließen.
  • Für einen Chi²-Test wer­den die Zellen zusam­men­ge­fasst, sodass nur eine 4‑Felder-Tabelle übrig bleibt. Wenn in bei­den Zeilen die­ser Tabelle eine Zelle gleich der Randverteilung ist (was bedeu­tet, dass die ande­re Zelle = 0 sein muss), wird der Signifikanztest unterdrückt.

22.9.2016: Bugfix
  • Betrifft die Übergabe von Tellinhalten aus XTAB-Tabellen an GESS ChartFactory.
  • Das POWERCHART -Statement berech­net die Werte zur Übergabe an PowerPoint selbst. Bei der Ermittlung von Werten für CELLELEMENTS , die auf einer Randzelle beru­hen, tra­ten spo­ra­disch Fehlberechnungen auf.
  • Gefixt!

30.8.2016: zusätzliches Encoding bei CSVINFILE
  • In UTF‑8 enco­dier­te CSV-Dateien dür­fen jetzt auch ein BOM haben.

Syntax:

ENCODING CSVINFILE = UTF8BOM;
  • Wenn das aktu­el­le GESS Q. CSV-Dateien in UTF8BOM schreibt,  erleich­tert dies die Verwendung von GESS Q.-Daten im CSV-Format mit Excel, da Excel UTF‑8 mit BOM erkennt.
  • Ein wesent­li­cher Vorteil von CSV-Dateien ist ja, dass kei­ne Spaltenfixierung besteht, sodass die vari­ie­ren­de phy­si­ka­li­sche Länge von Zeichen kei­ne Probleme berei­tet, und UTF‑8 des­halb uni­ver­sell ein­setz­bar ist.

29.8.2016: Dokumentationsnachtrag: property NOREPORT
  • Eine Variable mit der Property NOREPORT wird in der Ausgabe durch report.exe unterdrückt.

Beispiel-Syntax:

NOREPORT sysnum sysdate systime = NO;

5.8.2016: neues CELLELEMENT MINMAX

Syntax:

MINMAX( <variable> )
  • Je Zelle wer­den das Minimum (0‑Perzentil) und das Maximum (100-Percentil) ermittelt.
  • Minimal- und Maximalwert wer­den nach­ein­an­der, durch einen Punkt getrennt, ausgegeben.
  • FORMAT MINMAX wird ausgewertet.

5.8.2016: neue Signifikanzniveaus

Wenn’s der Wahrheitsfindung dient…

  • Neue Signifikanzniveaus:  SIGNIF68 SIGNIF32AND10
  • SIGNIF68 ist wie SIGNIF90 ein ein­fa­cher Signifikanztest (auf nur einem Level), 68% (bzw. 32%)
  • SIGNIF32AND10 ist wie SIGNIF20AND10 ein Signifikanztest auf zwei Level, 32% (minus­kel) und 10% (majus­kel)

20.7.2016: POSTREPLACE
      • Neue Tabellenoption: POSTREPLACE

Syntax:

POSTREPLACE <cellelement> : <text1> = <text2> [ IF <text3> ]
  • Nachgestellte Option zum TABLE -Statement
  • In der vor­an­ste­hen­den Tabelle wer­den alle Ausgabezeilen zu dem genann­ten CELLELEMENT dar­auf­hin durch­sucht,  ob <text1> in der Ausgabe ent­hal­ten ist. Wenn das der Fall ist, wird die­ser Text durch <text2> ersetzt. Der Suchtext <text1> kann “?” als Wildchar ent­hal­ten. Man kann die­se Ersetzung mit einer zusätz­licheh Bedingung ver­se­hen, dass <text3> eben­falls ent­hal­ten ist.
  • Praktisches Beispiel: In einer Tabelle sol­len  COLUMNPERCENT dar­ge­stellt wer­den. In den Spalten aber, in denen die Basis einen Schwellwert unter­schrei­tet, soll statt­des­sen die abso­lu­te Zellenbesetzung aus­ge­ge­ben wer­den, und die­se soll mit “N=” gekenn­zeich­net wer­den. Dieses Problem wird durch eine Kombination aus POSTPROCESS und POSTREPLACE gelöst:
FORMAT COLUMNPERCENT = '#';
CELLELEMENTS =  COLUMNPERCENT;
TABLE = #K BY A12;
POSTPROCESS COLUMNPERCENT : IF XABS LT 150 THEN SELF = -CELLABS;
POSTREPLACE COLUMNPERCENT : "-" = "N=";
  • Das Ganze ist natür­lich “getrickst”: POSTPROCESS ist eine arith­men­ti­sche Snweisung und kann nur Zahlenwerte beein­fus­sen. Die arith­me­ti­sche Eigenschaft “nega­tiv” über­setzt sich aller­dings in einen Textbestandteil, ein “-” vor der Zahl. Dies kann man dann für eine Textersetzung nutzen.
  • Die Aufgabe war ein­fach, da für COLUMNPERCENT ein Darstellungsformat ohne Dezimalzeichen ver­langt war. Etwas umfang­rei­cher wird es, wenn ein kom­ple­xe­res Format gefor­dert ist:
FORMAT COLUMNPERCENT = '#,#%';
CELLELEMENTS =  COLUMNPERCENT;
TABLE = #K BY A12;
POSTPROCESS COLUMNPERCENT : IF XABS LT 150 THEN SELF = -CELLABS;
POSTREPLACE COLUMNPERCENT : ",?%" = "" IF '-';
POSTREPLACE COLUMNPERCENT : "-" = "N=";
  • POSTPROCESS ist iden­tisch. Mehrere POSTREPLACE wer­den in der­sel­ben Reihenfolge nach­ein­an­der aus­ge­führt, wie sie in Script ste­hen. Das ers­te POSTREPLACE lässt das Dezimalzeichen und %-Zeichen ver­schwin­den, unter der Bedingung, dass ein Minuszeichen gefun­den wur­de. Das zwei­te POSTREPLACE ersetzt wie gehabt das “-” durch “N=”.
  • Nächste Stufe: wenn zusätz­lich die Ausgabe eines Signifikanztests gefor­dert ist:
CELLELEMENTS =  COLPERCANDSIGN;
SUPPRESSIFLESS COLPERCT FRAMECELL X ABSOLUTE = 150;
ZERODASHCHAR = ' ';
TABLE = #K BY A12;
POSTPROCESS COLUMNPERCENT : IF XABS LT 150 THEN SELF = -CELLABS;
POSTREPLACE COLUMNPERCENT : ".?%" = "" IF '-';
POSTREPLACE COLUMNPERCENT : "-" = "N=";
  • Hierzu muss man wis­sen: COLPERCANDSIGN ist eine Textkombination aus COLUMNPERCENT und COLPERCT . Wenn in den Spalten mit n<150 nur die ein­fa­che Häufigkeit als vor­zei­chen­lo­se und nach­kom­ma­freie Zahl ste­hen soll, dann müs­sen wir zunächst die Ausgabe des Signifikanztests in den betref­fen­den Spalten unter­drü­cken. dazu braucht es ein SUPPRESSIFLESS für
    den ver­wen­de­ten Signifikanztest, in die­sem Fall also COLPERCT .
  • Wenn ein CELLELEMENT mit SUPPRESSIFLESS unter­drückt wird, steht an der Stelle i.d.r ein ‘-’. das ist der ZERODASHCHAR , der hier dadurch unsicht­bar wird, dass wir ihn als Blank dar­stel­len. Der Rest ist bekannt: POSTPROCESS und 2x POSTREPLACE wie oben.
  • Alternativ zum “Unsichtbarmachen” durch ein Blank im ZERODASHCHAR hät­te man die­sen natür­lich auch durch ein wei­te­res POSTREPLACE ent­fer­nen können:
POSTREPLACE COLPERCT : "-" = "";

20.6.2016: neue Labeloption CSSCLASS
  • Erweiterung der Ausgabe nach HTML
  • Analog zu USEFONT für PS/PDF-Ausgabe kann man Labels jetzt auch eine CSSCLASS hin­zu­fü­gen. Diese wird nur bei der Ausgabe in eine HTML-Datei berück­sich­tigt. Z.B.:
SINGLEQ q5 =
TEXT "
Frage 5:
Wie gefällt Ihnen Modell XYZ"
20 7 1
LABELS
OVERCODE 1:3 "sehr gut/gut" CSSCLASS overcodePos
OVERCODE 4:6 "sehr schlecht/schlecht" CSSCLASS overcodeNeg
1 'sehr gut'
* 'gut'
* 'teils/teils'
* 'schlecht'
* 'sehr schlecht'
;
  • In der CSS-Datei könn­ten dann für overcodePos und overcodeNeg ent­spre­chen­de Darstellungen ver­ein­bart wer­den. z.b. bold und rot bzw. grün als Textfarben.

20.6.2016: Erweiterung CSVINFILE
CSVINALPHA = <namelist>;
  • Alternativ zur Kennzeichnung von ALPHA-Variablen mit­tels “@” im Variablennamen kann man auch eine Liste von Variablennamen ange­ben. Werden dann im Header eines CSVINFILE ent­spre­chen­de Variablennamen gefun­den, wer­den die­se auch ohne “@” als ALPHA-Variablen verarbeitet.

20.06.2016: Bugfix CSVINFILE
  • Bei meh­re­ren CSVINFILE s konn­ten MULTIQ/DICHOQ zuvie­le ato­ma­re Variablen ent­hal­ten. Das führ­te zwar nicht zu fal­schen Daten, aber zu inef­fi­zi­en­te­ren Strukturen.
  • Gefixt!

6.6.2016: Bugfix INSTANTEXCEL
  • Negative Zellinhalte (z.b. MEAN ) wur­den an Excel in Stringform über­ge­ben anstel­le der übli­chen Binärübertragung mit einem Darstellungsformat. Je nach natio­na­ler Einstellung von Excel und des ver­wen­de­ten Zahlenformats bei der GESS-Tabellenausgabe ergab dies fal­sche Darstellungen.
  • Ist gefixt: nega­ti­ve Ergebnisse wer­den jetzt auch binär übertragen.

2.6.2016: Funktionserweiterung bei OVERVIEW/XOVERVIEW
OVERVIEW ADD = ...
XOVERVIEW ADD = ...
  • OVERVIEW bzw. XOVERVIEW erzeu­gen Übersichtstabellen durch eine ver­bor­ge­ne Übersetzung in TABLE ADD -Statements. D.h. der Compiler erzeugt eine TABLE STRUCTURE und fügt die nume­ri­schen Werte durch TABLE ADD ein.
  • Dies leg­te es nahe, die Zählung wei­te­rer Daten in die von OVERVIEW/XOVERVIEW erzeug­te TABLE STRUCTURE durch OVERVIEW ADD bzw. XOVERVIEW ADD   ana­log zu TABLE ADD ermög­li­chen, z.B.:
OVERVIEW =     #K BY ABSOLUTE MEAN( A12 A13 A14 );
OVERVIEW ADD = #K BY ABSOLUTE MEAN( B12 B13 B14 );

22.2.2016: neues Ausgabeformat für VARLIST: QST

Syntax:

VARLIST = <Dateipfad> QST;
  • Werden die Variablen mit Bezug zu einem spal­ten­fi­xier­ten Datensatz und ihre Verspaltung in einem spe­zi­el­len QST-Format dargestellt.

22.2.2016: CONTENTKEY-Funktion für CHAPTERPAGE
  • CHAPTERPAGE ist for­mal ein Abkömmling des Grundtyps “Tabelle”.
  • Man kann einer CHAPTERPAGE des­halb mit dem CONTENTKEY -Statement auch einen Eintrag für das Inhaltsverzeichnis zuweisen.
  • Dieser Text wird dann in Inhaltsverzeichnisse übernommen.

22.2.2016: ACROSS und EXCELOUTACROSS
  • Neue TABLEFORMATS :  ACROSS und EXCELOUTACROSS
  • Für Nutzer, die nicht davon las­sen kön­nen, ihre Charts von Hand aus Excel-Tabellen abzu­lei­ten, gibt es jetzt die Möglichkeit, die ein­zel­nen CELLELEMENTS neben­ein­an­der anstatt des GESS-Standards unter­ein­an­der anord­nen zu lassen.
  • Das Tableformat EXCELOUTACROSS beschränkt die­sen Umbau auf die Ausgabe in EXCELOUT AS/VIA HTML .
  • Mit dem all­ge­mei­ne­ren ACROSS wer­den auch die CELLELEMENTS in PS-und PDF-Ausgaben neben­ein­an­der dargestellt.

11.2.2016: UNIXTIME und CURRENTMILLIS
  • Neue TIME -Funktionen: UNIXTIME und CURRENTMILLIS
  • Für Berechnungen von ver­stri­che­ner Zeit im zusam­men­hang mit GESS Q.-Files fehl­te eine prak­ti­sche Form der aktu­el­len Uhrzeit in der Form von Sekunden ( UNIXTIME ) oder Millisekunden ( CURRENTMILLIS ) seit 1970 (Unix epoch).
  • Wie TIME sind dies Funktionen inner­halb arith­me­ti­scher Berechnungen, z.B.:
COMPUTE myUNIXTIME = UNIXTIME( 0 );
COMPUTE myCURRENTMILLIS = CURRENTMILLIS( 0 );
  • Das Resultat ent­spricht der von Windows gelie­fer­ten loka­len Zeit.

8.2.2016: PUSHSTARTCOLUMN und POPSTARTCOLUMN
  • Neues Statements: PUSHSTARTCOLUMN und POPSTARTCOLUMN
  • Die GESS-Produkte erzeu­gen auto­ma­tisch wäh­rend des Interpretierens des Scripts eine zusam­men­hän­gen­de Verspaltung im Datensatz. Wenn man nun zwi­schen Frage 1 und Frage 2 eine zusätz­li­che Frage ein­bau­en will, darf die­se die ein­mal ver­wen­de­te Verspaltung nicht verändern.

Aus:

Singleq Frage1 = … *
Singleq Frage2 = … *

Soll wer­den:

Singleq Frage1 = … *
Singleq Zusatzfrage1 = …
MultiQ Zusatzfrage2 = … *
Singleq Frage2 = … *
  • Am ele­gan­tes­ten geht das mit einem Stack. GESS kennt jetzt einen Stack der als nächs­tes zu ver­wen­den­den Spalte.
  • Mit einem Push defi­niert man einen neu­en Anfangswert für die fol­gen­den Fragen, mit dem fol­gen­den Pop wird die Verspaltungsumgebung auf den Zustand vor dem Push zurückgesetzt.
Singleq Frage1 = … *
PushStartColumn = 500;
SingleQ Zusatzfrage1 = … *
MultiQ Zusatzfrage2 = … *
PopStartColumn;
Singleq Frage2 = … *
  • Dies gilt für alle spal­ten­be­zo­ge­nen Fragetypen: SingleQ, SingleQ Alpha, MultiQ und DichoQ.
  • GESStabs kennt die­sen Mechanismus genau­so und errech­net die Herkunftsspalten analog.

27.1.2016: Bugfix DICHOQ NOINPUT
  • Das DICHOQ hat zwar die Eigenschaft NOINPUT syn­tak­tisch akzep­tiert, in der Folge aber in einem GESS Cati-Script die Frage trotz­dem zum Input dargestellt.
  • Ist jetzt gefixt. z.b.:
DICHOQ dichobula = NOINPUT
220 '1'
* '2'
* '3'
* '4'
* '5'
* '7'
* '6'
* '8'
* '9'
* '10'
* '11'
* '12'
* '13'
* '14'
* '15'
* '16'
EQ 1;
COMPUTE LOAD dichobula = bula;
  • Würde die Information bula als dicho­to­me Variable mit 16 mal 0/1 ab Spalte 220 im Ausgabedatensatz dar­stel­len, aber nicht abfragen.

27.1.2016: Erweiterung für SINGLEQ
  • Im SINGLEQ ‑Statement kann man jetzt auch die eigen­schaft NOINPUT ange­ben. z.b.:
SINGLEQ Nachname = ALPHA NOINPUT 200 20;
  • Eine sol­che Variable hät­te in einem GESS Cati-Script die Eigenschaften eines Ausgabebereichs im Datensatz, wür­de aber nicht im schirm zur abfra­ge vorgelegt.
  • Für die­sen Zweck wur­de bis­lang immer die alt­ehr­wür­di­ge Form VARNAME ver­wen­det. Für neue Benutzer ist das schwer zu vermitteln.

27.1.2016: MAKESINGLE

Erweiterung:

MAKESINGLE <newvar> = ALPHA;
  • Zusätzlich zu den Syntaxvarianten:
MAKESINGLE <newvar>;
MAKESINGLE <newvar> [ = <arithm.expression> ];
  • Gibt es jetzt eine zusätz­li­che Variante:
MAKESINGLE <newvar> = ALPHA;
  • Hierbei wird eine neue lee­re SINGLEQ mit der Eigenschaft ALPHA erzeugt.

22.1.2016: CITEFIRSTVAR/CITEALLVARS bei OVERVIEW/XOVERVIEW
  • Im Zusammenhang mit OVERVIEW oder XOVERVIEW läuft die auto­ma­ti­sche Zitierung von Variablentexten ins Leere, da die CONTROLVAR , die die Grundlage der Zitierung ist, in bei­den Fällen eine syn­the­ti­sche Variable unbe­kann­ten Namens ist, die wäh­rend der Interpretation des OVERVIEW-Statements erst gebil­det wird. Daher kann man die­ser Variablen auch kei­nen Text zum Zitieren beigeben.
  • Die Verarbeitung der OVERVIEW -Statements ist jetzt so erwei­tert, dass der Vartext der ers­ten Variablen in der Variablenliste der inter­nen syn­the­ti­schen Variable zuge­fügt wird.
  • Langer Rede, kur­zer Sinn: CITEFIRSTVAR und Konsorten funk­tio­nie­ren in die­sem Zusammenhang jetzt auch.

22.1.2016: Interpretation von OPENQ-Files
  • Historisch gewach­sen: Um die Arbeit mit OPENQ -Files zu ver­ein­fa­chen, gab es die Konvention, kur­ze Zeilen kur­zer­hand aus­zu­schlie­ßen und kom­men­tar­los nicht zu ver­ar­bei­ten. OPENQ-Files mit weni­ger als 10 Zeichen gal­ten als Schrott. Von GESS pro­du­zier­te OPENQ -Files sind immer länger.
  • Man kann die­ses Format aber natür­lich auch anders nut­zen und da sind Kunden an die­se Untergrenze gesto­ßen: OPENQ -Zeilen mit weni­ger als 10 Zeichen sind dabei untergegangen.
  • Da OPENQ -Files oft nach Bearbeitung in Editoren oder Tabellenkalkulationsprogrammen Schrott-Zeilen ent­hal­ten, ist die­ser Mechanismus grund­sätz­lich erhaltenswert.
  • Die Untergrenze von 10 Zeichen ist aber wohl zu klein, wenn ein­stel­li­ge Variablennamen, ein­stel­li­ge Fallnummern und ein­stel­li­ge Codes ver­wen­det werden.
  • Die kür­zest mög­li­che OPENQ -Zeile dürf­te sein:
  • Das macht mini­mal 7 Zeichen. Wenn die Files außer­halb von GESS erzeugt wer­den, mag auch das Trennzeichen nach dem Code feh­len, also mini­mal 6 Zeichen.
  • Zeilen wer­den nur noch dann geschrot­tet, wenn sie weni­ger als 6 Zeichen enthalten.

22.1.2016: Neues CELLELEMENT: PHI
  • Der 4‑Felder-Phi-Koeffizient misst den Zusammenhang zwi­schen Ausprägungen.
  • Dieses CELLELEMENT dürf­te nur in spe­zi­el­len Fällen sinn­voll sein, ent­sprach aber einem Kundenwunsch.
  • Wenn man Mehrfachnennungsvariablen tabel­liert, kann man die ein­zel­nen Ausprägungen ja als unab­hän­gi­ge 0/1‑Variablen betrach­ten. Damit eröff­net sich die Möglichkeit, die zugrun­de lie­gen­de 4‑Felder-Tabelle zu rekon­stru­ie­ren, und auf die­ser Basis den Koeffizienten zu bestimmen.
  • Ein Beispiel: Wenn Befragte meh­re­re Nennungen für Entscheidungsgründe abge­ben kön­nen, dann kann man die­se Variable gegen sich selbst tabel­lie­ren. Den Phi-Koeffizienten kann man dann als den Zusammenhang zwi­schen den Gründen inter­pre­tie­ren: Ein nega­ti­ver Koeffizient z.b. wür­de anzei­gen, dass die Befragten, die Grund A genannt haben, sel­te­ner Grund B ange­ben. usw..

4.1.2016: Neues CELLELEMENT: SPACE

Syntax:

SPACE( <variable > )
  • Die Aufgabe von SPACE (es könn­te auch EMPTY hei­ßen) ist ledig­lich, eine lee­re Zelle zu produzieren.
  • Diese wie­der­um wer­den u.U. benö­tigt, um lee­re Zeilen bzw. Spalten in Tabellen für PowerPoint zu erzeugen.

Für Neuigkeiten aus 2015 und frü­her, sie­he READ.ME!

Hier informieren wir Sie über ausgewählte neue Funktionen und Einstellungen für GESStabs!

Eine voll­stän­di­ge Dokumentation aller aktu­el­ler und ver­gan­ge­ner Software-Updates fin­det sich im aktu­el­len Read.me.


03.03.2020 (5.1.3.7): Neue Option zum OFFICECONTENTPAGE-Statement: NOAUTOTABLETITLE
13.11.2019 (5.1.3.6): Neue Option zu OFFICECONTENTPAGE: BACKTOCONTENT

Syntax:

OFFICECONTENTPAGE =
| BACKTOCONTENT : <anystring> [ <textqualifier> ] 
<textqualifier> ::= [ <officefont> | FOREGROUND <color> | BACKGROUND <color> ]
<officefont> ::= FONT <fontname> SIZE <number> [ OPTION [ BOLD | ITALIC | UNDERLINE ] ];

Bei die­ser Option wird in jedes EXCEL-Tabellenblatt oben links (A1) der ange­ge­be­ne Text aus­ge­ge­ben, und die­se Zelle wird mit einem Hyperlink auf das Inhaltsverzeichnis hin­ter­legt. Bei einem Klick auf die­se Zelle, wird das Inhaltsverzeichnis angesprungen.

Beispiel:

OFFICECONTENTPAGE =
...
| BACKTOCONTENT : "Zurück zum Inhalt" FONT Arial SIZE 9 OPTION ITALIC UNDERLINE BOLD  FOREGROUND $FF0000
...
;

Bitte beach­ten:

Dieser Hyperlink funk­tio­niert nicht, wenn der Name des Tabellenblattes vom Inhaltsverzeichnis Leer- oder Sonderzeichen ent­hält. Dies gilt eben­so für alle Tabellenreferenzen zu Tabellen, wel­che auf Tabellenblätter lie­gen, deren Namen Leer- oder Sonderzeichen enthalten.


08.11.2019 (5.1.3.6): Neue Option zu OFFICECONTENTPAGE: SHOWSHEETNAME

Syntax:

OFFICECONTENTPAGE =
| SHOWSHEETNAME : [ YES | NO ]; 
default: YES          (in Übereinstimmung mit dem bisherigen verhalten)

Im bis­he­ri­gen Standard für OFFICECONTENTPAGE wur­de in die Liste der Sprungziele immer auto­ma­tisch der Wechsel auf ein neu­es EXCEL-Sheet im Inhaltsverzeichnis mit einer eige­nen Zeile ver­merkt. Dies ist zum Beispiel dann nicht sinn­voll, wenn für jede Tabelle ein eige­nes Sheet ange­legt wer­den soll. Daher kann der auto­ma­ti­sche Wechsel mit dem Schalter ein- und aus­ge­schal­tet wer­den. Dies ist ein glo­ba­ler Schalter für das gesam­te Inhaltsverzeichnis. Wenn es also aus­ge­schal­tet wird, an ande­rer Stelle den Wechsel auf ein neu­es Sheet aber sicht­bar wer­den soll, dann muss man den SHEETNAME mit dem OFFICECONTENTPAGE INSERT -Statement expli­zit angeben.


08.11.2019 (5.1.3.6): Neues Statement: OFFICECONTENTPAGE INSERT

Syntax:

OFFICECONTENTPAGE INSERT = { <addtitem> [ OFFICEFONT <officefont> ] }*n ;
addtitem ::= [ LINE | CONTENTKEY | VARTEXT <variable> | VARTITLE <variable> | 
               CITEFIRSTVAR [ XVALID | YVALID ] LITERAL <text> | TABLETITLE ]

Es wird hier­mit beim OFFICE-EXPORT ermög­licht im Inhaltsverzeichnis wei­te­re frei zu defi­nie­ren­de Erläuterungen unter­zu­brin­gen, die zwi­schen den Links zu den Tabellen ste­hen sol­len. Welche das im Einzelnen sein kön­nen, hängt mit der Struktur des Tabellenbandes ab. Wenn zum Beispiel ein- und der­sel­be Fragentext für eine Reihe Statements gilt, ist es unter Umständen sinn­voll, die­sen Fragentext auch im Inhaltsverzeichnis  vor den Links zu den betref­fen­den Tabellen zu zitie­ren. So kön­nen belie­bi­ge Texte defi­niert wer­den, wel­che sich auf eine Reihe von Elementen der Tabelle beziehen:

LINE                             Leerzeile
CONTENTKEY                       Zeile, die den CONTENTKEY enthält     
VARTEXT <variable>               Zeile, die den Text einer beliebigen Variablen widergibt
VARTITLE <variable>              Zeile, mit dem VARTITLE einer beliebigen Variablen
CITEFIRSTVAR [ XVALID | YVALID ] Fragentext der ersten Variablen in X- bzw. in Y-richtung
LITERAL <text>                   Zeile mit einem beliebigen Text
TABLETITLE                       Zeile mit dem TABLETITLE
SHEETNAME                        Zeile mit dem Namen des SHEET, auf dem die folgende Tabelle erscheint.

Anmerkung:

Allen Elementen kann ein eige­ner Office-Font zuge­ord­net werden.


08.11.2019 (5.1.3.6): Neues Statement: MAKESINGLES

Syntax:

MAKESINGLES <newvarlist> [ = <sourcelist> ];

In der ein­fachs­ten Version ersetzt die­ses Statement das VARIABLES -Statement:

MAKESINGLES f1 to f17;

Keine der Variablen aus der Bildungsvorschrift, im Beispiel “ f1 to f17”, darf existieren.

Anstelle des ";" kann auch mit einem "=" fort­ge­fah­ren werden:

MAKESINGLES f1 to f17 = x18 to x34;

Es wird nach dem "=" eine Variablenliste erwar­tet, die genau­so vie­le Elemente ent­hält, wie sich aus der Bildungsvorschrift erge­ben. Dann steht MAKESINGLES für eine Kombination aus VARIABLES und COMPUTE COPY .

Bitte beach­ten: wenn MAKESINGLES   mit einer Sourcelist ver­wen­det wer­den, wer­den intern durch COMPUTE COPY nur die nume­ri­schen Werte über­tra­gen. Wenn eine Variable in der <source­list> die Eigenschaft ALPHA hat, ist das ein Syntaxfehler.


01.11.2019 (5.1.3.5): Funktionserweiterung OFFICEEXPORT: Option  FLOWTEXT für LABELS X und LABELS Y

Syntax:

OFFICEXPORTOPTIONS EDIT = 
| FLOWTEXT LABELS X : [ YES | NO ] 
| FLOWTEXT LABELS Y : [ YES | NO ];
  • Problem: Excel kennt kein Verfahren der dar­stel­len­den Software Hinweise zu über­mit­teln an wel­cher Stelle ein Wort sinn­voll getrennt wer­den soll. In der Folge kommt es dazu, dass beim Export in EXCEL oft kei­ne sinn­vol­le Trennung von Wörtern erfolgt.
  • Lösungsansatz: Wenn im Script nun die neue Option FLOWTEXT für die Boxtypen Labels X bzw. Labels Y ein­ge­schal­tet sind wird die Berechnung der Schriftbreite der Texte vor­her aus­ge­mes­sen. Trennungen wer­den so auch bei von PS/PDF abwei­chen­den Fonts oder effek­ti­ven Spaltenbreiten berechnet.
  • Anmerkung:  Es gibt Situationen, in denen ein Textbestandteil gemes­sen an der Textbreite in eine Zelle gege­be­ner Breite passt, Excel dies aber bei der Darstellung des Inhalts aber nicht so sieht. Diese Ungenauigkeiten vari­ie­ren je nach Font, Fontgröße und Optionen wie BOLD oder ITALIC. Trotz eines ziem­lich üppig bemes­se­nen Sicherheitsabstandes kann eine ver­un­glück­te Darstellung nicht mit Sicherheit ver­mie­den wer­den. Sollte der jetzt ein­ge­stell­te Sicherheitsabstand nicht rei­chen, bit­tet GESS um Nachricht.

18.10.2019 (5.1.3.5): Neues Statement: OLDGROUPCLEARMETHOD

Syntax:

OLDGROUPCLEARMETHOD = [ YES | NO ];

Beim Clearen von SPSS-Files wird hier­mit ver­hin­dert, dass die ato­ma­ren Variablen inner­halb von VARGROUPS nicht unge­wünscht auf den gül­ti­gen Wert ‘0’ also Non-MISSING son­dern auf MISSING gesetzt werden.

Zur zusätz­li­chen Sicherheit kann man mit dem Schalter die alte Löschmethode und die zusätz­li­che Löschung der ato­ma­ren Variablen aus dem SPSS-Reader reak­ti­vie­ren. So wer­den die Einleseroutinen der ein­zel­nen SPSS-READER vor dem Abfragen der Werte aus SPSS einen spe­zi­el­len zusätz­li­chen Schritt ein­fü­gen, dass ALLE ato­ma­ren Variablen im Zweifel noch ein­mal auf MISSING gesetzt werden.


07.10.2019 (5.1.3.5): Neues Statement: INTERVALS

Syntax:

INTERVALS <newvar> = <sourcevar>  { | <labeltext> :  <comparison> <comparevalue> }*n;
<comparison> :: [ LT | GT | LE | GE ]
  • Mit INTERVALS wird bei der Gruppierung von Werten die Fehleranfälligkeit gegen­über des GROUPS-Statements bei nicht ganz­zah­li­gen Werten behoben.
  • Daneben ist die Schreibweise weni­ger red­un­dant und übersichtlicher.

Beispiel:

INTERVALS Interviewdauer = SEKUNDEN_GESAMT
| "< 1 Minute"     : LT 60
| "1 - 3 Minutes"  : LT 180
| "5 - 10 Minutes" : LT 300
| "> 10 Minutes"   : GE 600
;

Anmerkung:

  • Demgegenüber wür­de im fol­gen­den GROUPS-Statement zum Beispiel 59.5s in kei­ne der ange­führ­ten Kategorien fal­len. Hier müss­te man umständ­lich noch die Nachkommastellen ein­fü­gen. Die Fehler bei den Nachkommastellen gehö­ren damit der Vergangenheit an.
GROUPS Interviewdauer = 
| "< 1 Minute"     : [0 :59]  in SEKUNDEN_GESAMT
| "1 - 3 Minutes"  : [60:179] in SEKUNDEN_GESAMT
;

30.09.2019 (5.1.3.5): Syntaxerweiterung für CHAPTER

Syntax:

CHAPTER <varlist> =  [ {<string>}*n ];
  • Das CHAPTER-Statement akzep­tiert nun meh­re­re Kapitelbezeichnungen, um hier­ar­chi­sche Kapitelzuordnungen zu ermöglichen:

Beispiel:

CHAPTER sg.1.1 sg.10.1 sg.10.open = ["Hauptbefragung","Der Grid-Kram","SGQ"];

wird fol­gen­der­ma­ßen in die JSON-Syntaxbeschreibung übertragen:

{
"varname": "mg.20.open",
"chapter": [
"Hauptbefragung",
"Der Grid-Kram",
"MGQ"
],
"label": {
"1": "fgjhj",
"2": "zwanzig",
"3": "&&&"
}
},

28.08.2019 (5.1.3.5): Neue Funktion HTMLCHART
  • In HTML aus­ge­ge­be­ne Tabellen kön­nen nun um belie­big vie­le, ein­fa­che Diagramme (HTML-Charts) ergänzt werden.

Syntax:

HTMLCHART {<Optionen>} = <Zellbereich>;
  • Die voll­stän­di­ge Dokumentation befin­det sich unter ‘Tutorials und Handbücher’.

05.08.2019 (5.1.3.4): Funktionserweiterung für SUPPRESSEMPTYTABLE
  • Bisher war SUPPRESSEMPTYTABLE ein glo­ba­ler Schalter, des­sen letz­te Einstellung für den gesam­ten Tabellierlauf galt.
  • Nun ist SUPPRESSEMPTYTABLE eine tabel­len­spe­zi­fi­sche Voreinstellung: sie wird an alle Tabellen wei­ter­ge­ge­ben, die im Anschluss for­mu­liert wer­den, bis es eine neue SUPPRESSEMPTYTABLE -Voreinstellung gibt.
  • Wird eine Tabelle auf­grund von SUPPRESSEMPTYTABLE=YES unter­drückt, wird dies in den Warnungen (gtc.wrn) protokolliert.
  • Bei STRUCTURE oder NO hin­ter­lässt die unter­drück­te Tabelle eine Spur in den Ausgabedateien, dies wird nicht protokolliert.
  • Es ist mög­lich, dass eine mit SUPPRESSEMPTYTABLE=STRUCTURE unter­drück­te Tabelle nicht als Struktur aus­ge­ge­ben wer­den kann, z.B. wenn Variablen kei­ne Labels ent­hal­ten. Sie wird dann wie SUPPRESSEMPTYTABLE=NO behandelt.

17.07.2019 (5.1.3.3): Neues Statement: REPRINT TABLE

Syntax:

REPRINT TABLE = <tablename>;
  • Eine bereits pro­du­zier­te Tabelle kann an belie­bi­ger spä­te­rer Stelle im Tabellenband wie­der­holt aus­ge­ge­ben werden.
  • Die Tabelleninhalte blei­ben dabei erhal­te — mit Ausnahme des TABLETITLE und der TABLENUMBER .
  • Die Zellinhalte wer­den nicht neu aus­ge­zählt, son­dern es wird auf den bereits gezähl­ten Inhalt der Quelltabelle zurückgegriffen.
  • Die Tabelle wird aller­dings neu gesetzt, ein abso­lut iden­ti­sche Aussehen ist also nicht garantiert.
  • Die kopier­te Tabelle ent­hält die meis­ten Informationen aus der Ursprungstabelle, jedoch nicht ausnahmslos: 
    • TOPTEXT und BOTTOMTEXT blei­ben erhal­ten, und damit auch auto­ma­tisch ein­ge­füg­te Filtertexte (sie­he die TEXT -Optionen zu SETFILTER , TABLEFILTER und TABSELECT ).
    • Die Auswirkungen des Filters bzw. der Filter blei­ben ohne­hin erhal­ten, da die Daten der bereits aus­ge­zähl­ten und gedruck­ten Quelltabelle ent­nom­men werden.

12.07.2019 (5.1.3.3): Neues CellElement: SUMSUMPERCENT

Syntax:

SUMSUMPERCENT ( var, basisvar )
  • Kombination der zwei CellElements SUM und SUMPERCENT in einem CellElement

13.06.2019 (5.1.3.3): Funktionserweiterung: GESSCHART
  • Neue ChartOption: TABLE <name>
  • Die fes­te Bindung des GESSCHART -Statements an die davor ste­hen­de Tabelle ist (zumin­dest in Teilen) aufgehoben.
  • Man kann sich mit der zusätz­li­chen Option TABLE auf alle bestehen­den Tabellen als Datenquelle beziehen.
  • Das ermög­licht auch den Bezug auf ver­steck­te Tabellen.

Beispiel:

TABLE NAME tab1                   = k BY f1;
TABLE NAME tab2 HIDDEN( PS PDF  ) = k BY f2;
TABLE NAME tab3                   = k BY f3;
GESSCHART TABLE tab2 CHARTTITLE "chart zu hidden tab2"   HORIZONTAL
CHARTAREA  15 15 270 180 NEWPAGE
=
| FORM RECTANGLE COLUMNS 1:5   ROWS 1:2  DIRECTION FALLING
| FORM RECTANGLE COLUMNS 1:5   ROWS 4:5  DIRECTION RISING
;
  • Bei einer gemisch­ten Ausgabe von Charts und Tabellen erscheint das Chart immer im Anschluss an die direkt davor ste­hen­de Tabelle: Das Chart ist an die­se Tabelle gebun­den (atta­ched).
  • Ein Chart hat bei Ausgabe in die­sel­be PS/PDF-Datei immer zwei mög­li­che Bezüge zu Tabelle(n): die im Skript vor­an­ge­gan­ge­ne Tabelle (atta­ched), aus der sich sei­ne Position in der Ausgabedatei ablei­tet, und eine Tabelle, die die Datenquelle darstellt.
  • Dies kann die­sel­be Tabelle sein, dann ist es nicht not­wen­dig, die Datenquelle mit der TABLE -Option im GESSCHART-Statement expli­zit zu benennen.
  • Gibt es im GESSCHART -Statement kei­ne TABLE -Komponente, ist die vor­an­ste­hen­de Tabelle auto­ma­tisch die Datenquelle.
  • Im obi­gen Beispiel steht das GESSCHART -Statement im Anschluss an die Tabelle tab3 (atta­ched) und als Datenquelle ist expli­zit die Tabelle tab2 ange­ge­ben (TABLE tab2).

Anmerkung:

  • Charts aus GESSCHART -Anweisungen, die direkt hin­ter einer HIDDEN -Tabelle ste­hen, kön­nen NICHT aus­ge­ge­ben wer­den, weil das Chart Bestandteil der Tabellenausgabe ist und HIDDEN (PS oder PDF) die Ausgabe der Tabelle unterdrückt.
  • Da die Ursache die­ser Nicht-Ausgabe sonst schwer voll­zieh­bar ist, gilt die­se Konstellation als Syntax-feh­ler 799: “GESSCHART atta­ched to HIDDEN table, chart can­not be prin­ted” und führt zu Programmabbruch.

04.06.2019 (5.1.3.3): Neues TableOption: HIDDEN

Syntax:

TABLE = ... HIDDEN( { <medium> }*n ) ... = A BY B ...;
<medium> ::= PS | PDF | HTML | OFFICEEXPORT | INSTANTEXCEL;
  • Als neu­en Bestandteil der TABLEOPTIONS kann nun das “Verstecken” von Tabellen vom Typ TABLE , OVERVIEW und XOVERVIEW in defi­nier­ten Ausgabemedien (PostScript, PDF, HTML usw.) ein­ge­stellt werden.
  • Es gibt Situationen, in denen man sich auf die Inhalte von Tabellen bezie­hen möch­te, die nicht dar­ge­stellt wer­den sol­len. Ein Beispiel hier­für ist die Vererbung einer Sortierreihenfolge, die einer Tabelle ent­nom­men wer­den soll, die es zu die­sem Zeitpunkt (noch) nicht gibt. Wenn etwa die Reihenfolge einer Reihe von zehn Tabellen nicht aus der ers­ten, son­dern der zwei­ten Tabelle ent­nom­men wer­den soll.
  • Diese Anforderung kann man dadurch erfül­len, dass man die zwei­te Tabelle zwei­mal erzeugt: ein­mal HIDDEN vor der ers­ten, und dann sicht­bar nach dieser:
TABLE NAME sortsource HIDDEN( PS PDF HTML OFFICEEXPORT INSTANTEXCEL ) = #k BY val2 SORT ABSOLUTE;
TABLE SORT AS sortsource = #k by val1 ;
TABLE SORT AS sortsource = #k by val2 ;
TABLE SORT AS sortsource = #k by val3 ;

Anmerkung:

  • Zwischen den Ausgabemedien herrscht eine Hierarchie. Es muss immer ein “ PRINTFILE PS ” oder “ PRINTFILE PDF ” geben.
  • Alle Inhalte einer Tabelle wer­den für das PRINTFILE zusam­men­ge­stellt. Alle ande­ren Ausgabeformen (wie HTML, OFFICEEXPORT, POWERCHART usw.) sind Abnehmer der inter­nen Daten für das PRINTFILE .
  • Wird eine Tabelle für das PRINTFILE unsicht­bar gemacht, wer­den die inter­nen Daten genau­so pro­du­ziert wie im Standarfall.
  • Es wird aller­dings die Ausgabe in PS/PDF unter­drückt. Diese Unterdrückung greift tief in die inter­ne Verarbeitung der inter­nen Klassen für die Generierung von PS/PDF ein. Auch ver­steck­te ( PS/ PDF ) Tabellen exis­tie­ren so intern mit allen Inhalten, die­se sind also für alle abge­lei­te­ten Ausgabeformen greif­bar, also auch für POWERCHART.

Aktuelle Beschränkung:

  • Zwar lie­gen die Inhalte auch für GESStabs Artist vor. Diese Charts sind aber  struk­tu­rell Bestandteil der Tabellenausgabe und fal­len des­halb gegen­wär­tig noch den Mechanismen zur Unterdrückung in PS bzw. PDF zum Opfer.

31.05.2019 (5.1.3.3): Neues Feature: TRUNCATEDECIMALS

Syntax:

TRUNCATEDECIMALS <varlist> = <number>;
<number> = -9 .. 9;
  • GESStabs zählt ja ein­fach alles, auch die Häufigkeiten belie­bi­ger FLOAT -Werte. Das ist oft prak­tisch, kann aber auch läs­tig sein.
  • Bei Häufigkeitszählungen über kon­ti­nu­ier­li­che Variablen kommt es vor, dass mehr­fach der­sel­be gerun­de­te Wert mit ggf. unter­schied­li­chen Häufigkeiten dar­ge­stellt wird, wobei die genau aus­ge­zähl­ten Werte infol­ge der Rundung bei der Ausgabe gar nicht mehr ersicht­lich sind.
  • Die inter­ne Zählung ist dann dif­fe­ren­zier­ter als die Ergebnisausgabe: Bspw. wür­den bei einer Darstellung mit einer Nachkommastelle die Werte 0,0238, 0,0278, 0,0385, 0,0417, 0,0426, 0,0435 und 0,0455 alle auf 0,0 gerun­det, in der Tabelle stün­de dann sie­ben­mal der Wert 0,0 mit der Häufigkeit 1.
  • Um die­se Diskrepanz zwi­schen der inter­nen Genauigkeit und der gerun­de­ten Darstellung zu besei­ti­gen, kann anstel­le von SETDECIMALS das neue Schlüsselwort TRUNCATEDECIMALS ver­wen­det werden.
  • In der Folge wird wäh­rend des Zählens die zu zäh­len­de Variable auf den pas­sen­den Ausgabewert gerundet.
  • Im oben ange­führ­ten Beispiel stün­de dann der Zahlenwert 0,0 mit der abso­lu­ten Häufigkeit 7.
  • Stellt man mit einer sol­chen Variablen wei­te­re Berechnungen an, ist es natür­lich nicht wün­schens­wert, dass der unge­naue­re gerun­de­te Wert in die­se ein­geht — im oben­ste­hen­den Beispiel ist 0,0417 eben nicht gleich 0,0 wie in der Tabellenausgabe.
  • TRUNCATEDECIMALS ver­än­dert die Variableninhalte nicht dau­er­haft, son­dern nur im Zählvorgang in CODEBOOK und TABLE .  In ange­for­der­te Statistiken wie MEAN oder VARIANCE geht der unge­run­de­te Wert ein.

Beispiel: Negative <number> -Werte ver­schie­ben das Dezimalkomma nach links.

  • Rundung auf 100er:
TRUNCATEDECIMALS <varlist> = -2;

Anmerkung:

  1. Es wird emp­foh­len, SETDECIMALS und TRUNCATEDECIMALS nicht gemein­sam auf eine varia­ble anzuwenden.
  2. Ein Teil der sta­tis­ti­schen Kennzahlen wie MEDIAN oder Perzentile geht auch auf Häufigkeitsauszählungen zurück. Diese sind zwar intern und nicht stö­rend für den Tabellenleser, bei sehr gro­ßen Fallzahlen und hoher inter­ner Differenzierung der Daten kann dies in der Performance spür­bar wer­den. An die­sen Stellen greift TRUNCATEDECIMALS aber nicht ein.

31.05.2019/ 07.06.2019 (5.1.3.3): Neues Schlüsselwort: ALPHACASESENSITIVE

Syntax:

ALPHACASESENSITIVE = [ YES | NO | UPPERCASE | LOWERCASE ];
  • Default: NO
  • Im Standardfall wer­den die Inhalte von Alpha-Variablen ‘case-insen­si­tiv’ verglichen.
  • Daraus folgt, dass z.B. ‘Ja’, ‘ja’ und ‘JA’ als inhalts­gleich betrach­tet und behan­delt werden.
  • Die Schreibweise inhalts­glei­cher Strings rich­tet GESStabs nach der Schreibweise der zuerst auf­ge­tre­te­nen Zeichenfolge.
  • Mit UPPERCASE bzw. LOWERCASE kann die Darstellung zusam­men­ge­fass­ter Strings ver­ein­heit­licht wer­den: in Klein- oder Großschreibung.
  • ALPHACASESENSITIVE = YES; bewirkt, dass nur iden­ti­sche Strings als inhalts­gleich inter­pre­tiert: ‘Ja’, ‘ja’ und ‘JA’ sind dann unter­schied­li­che Inhalte.
  • Dies beein­flusst das Verhalten des Einlesens von DATAFILE , CSVINFILE und SPSSINFILE eben­so wie die Ergebnisse von bspw. COMPUTE CONCAT .
  • Die Einstellung gilt für alle Alpha-Variablen des gesam­ten Laufs.

29.04.2019 (5.1.3.1): Neues Tabelformat: NOXVARTITLEBOX

Syntax:

TABLEFORMAT = +/- NOXVARTITLEBOX;
  • Unterdrückt die Ausgabe des Variablennamens/ Vartitels für den Tabellenkopf.
  • Analog zu NOVARTITLEBOX (Y‑achse der Tabelle)

26.04.2019: Neues Feature: ALPHAFAMILY

Syntax:

ALPHAFAMILY <neueAlphaFamily> = { <alphavar> }*n;
  • Mit ALPHAFAMILY kann aus ato­ma­ren Variablen vom Typ ALPHA eine Varfamily vom Typ ALPHA erzeugt werden.
  • Damit las­sen sich offe­ne Fragen, für die in der Befragung meh­re­re Eingabefelder vor­ge­se­hen sind (1. Nennung, 2. Nennung, u.s.w.), leicht zusam­men­ge­fasst in einer Tabelle auswerten.
  • Wenn die zu bil­den­de Variable bereits exis­tiert, ist dies ein Syntaxfehler; eben­so, wenn eine der ato­ma­ren Variablen nicht vom Typ ALPHA ist.
  • EVALFAMVALONCE ist als Default auf YES gesetzt, d.h. wenn ein String in mehr als einer Variablen vor­kommt, aus denen die ALPHAFAMILY erzeugt wird, wird er nur ein­mal aus­ge­wer­tet, mit NO kann man die­ses Verhalten ändern.
  • Die ALPHAFAMILY ver­hält sich in Bezug zu EVALFAMVALONCE wie jede ande­re MULTIQ .
  • Mit der ALPHAFAMILY kann man wie mit einer VARFAMILY Tabellen erzeugen.
  • COMPUTE SUBSTR und COMPUTE CONCAT sind nicht anwend­bar, auch Textvergleiche ( IN , EQ , GE etc. bei ALPHAVAR ) sind nicht zulässig.
  • Möchte man tes­ten, ob eine bestimm­te Zeichenfolge in einer der ALPHAVARS vor­kommt, so muss man ent­we­der die ato­ma­ren Elemente tes­ten ( AND / OR -ver­knüpft) oder mit COMPUTE CONCAT eine aus den ALPHAVARS zusam­men­setz­te ALPHAVAR erzeu­gen und tes­ten, ob der Begriff in die­ser vorkommt.

Zum Schluss noch eine Warnung:

  • Die ato­ma­ren ALPHAVARS dür­fen nur in je einer ALPHAFAMILY ent­hal­ten sein.
  • Die fol­gen­den Anweisungen erzeu­gen Unsinn, da ’nenn1’ und ’nenn2’ in zwei ver­schie­de­nen ALPHAFAMILY s auf­tau­chen:
ALPHAFAMILY alleNennungen = nenn1 nenn2 nenn3 nenn4;
ALPHAFAMILY Nennung1und2 = nenn1 nenn2;

26.04.2019: Neues Feature: COMPUTE SUBSTR

Syntax:

COMPUTE SUBSTR [ <lettercase> ] <Zielvariable> = <Quellvariable> <start> <len>;
<lettercase> ::= [ LOWERCASE | UPPERCASE ]
  • Mit COMPUTE SUBSTR wird ein Substring der Länge <len>, ab der Position <start> kopiert.
  • Das Ergebnis kann kür­zer sein als <len> und ggf. die Länge null haben.
  • Ein lee­rer String einer Alpha-Variable ist MISSING .
  • <Quellvariable> muss eine ato­ma­re Variable sein. Ob es sich um Alpha-Variable han­delt, ist uner­heb­lich: Für alle Variablen wird der Text des Labels ver­wen­det, der dem aktu­el­len Wert entspricht.
  • Gibt es zum gegen­wär­ti­gen Wert einer exis­tie­ren­den Variablen kein Label (kann bei Alpha-Variablen nicht der Fall sein), wird ein lee­rer String (also MISSING) zurück gegeben.
  • Man kann außer­dem bestim­men, dass das Ergebnis in Groß- ( UPPERCASE ) oder Kleinbuchstaben ( LOWERCASE ) gewan­delt wer­den soll, um z.B. Fateinamen (für unix defi­niert) in Kleinbuchstaben zu verwenden.
  • Wird kei­ne der bei­den Optionen ver­langt, wird der Text unver­än­dert (d.h. wie in den Ausgangsvariablen) verwendet.
  • Wenn die <Zielvariable> exis­tiert, muss sie vom Typ ALPHA sein. Existiert sie nicht, wird eine neue Alpha-Variable generiert.

Beispiel:

COMPUTE SUBSTR part = neuevar 1 20;
  • SUBSTR kann auch als COMPUTE -Spezifikation in IF -Statements und deren ELSE -Komponente ver­wen­det werden.

Beispiel:

IF [ 2 3 ] IN x7 THEN SUBSTR part = neue 1 20 ELSE SUBSTR part = neue 1 10;

26.04.2019: Neues Feature: COMPUTE CONCAT

Syntax:

COMPUTE CONCAT [ <lettercase> ] <alphavar> = { <elem> }*n; 
<lettercase> ::= [ LOWERCASE | UPPERCASE ]
<elem> ::= { "<beliebiger text>" | VARIABLE }
  • Mit COMPUTE CONCAT kön­nen die Labels belie­big vie­ler ato­ma­rer Variable mit Textkonstanten zusam­men­ge­fügt, d.h. ver­ket­tet, werden.
  • Die Variablen als Argumente müs­sen ato­ma­re Variablen sein.
  • Ob es sich um Alpha-Variablen han­delt, ist dabei uner­heb­lich. Für alle Variablen wird der Text des Labels ver­wen­det, der dem aktu­el­len Wert entspricht.

Beispiel:

COMPUTE CONCAT neuevar = "aktuelles Label von Variable Q1 " q1 " und aktuelles Label von Variable Q2 " q2;
  • Wenn eine Variable nicht exis­tiert, wird der ein­ge­setzt Name als Textkonstante verwendet.
  • Gibt es zum gegen­wär­ti­gen Wert einer exis­tie­ren­den Variablen kein Label (kann bei aplha-Variablen nicht der Fall sein), wird ein lee­rer String verwendet.
  • Man kann außer­dem bestim­men, dass das Ergebnis in Groß- ( UPPERCASE ) oder Kleinbuchstaben ( LOWERCASE ) gewan­delt wer­den soll, um z.b. Dateinamen (für unix defi­niert) in Kleinbuchstaben zu verwenden.
  • In sol­chen Fällen wird man das Statement oft in “dege­ne­rier­ter” Form ver­wen­den, z.B.:
COMPUTE CONCAT LOWERCASE unixfilename = anyalpha;
  • CONCAT kann auch als COMPUTE -Spezifikation in IF -Statements und deren ELSE -Komponente ver­wen­det werden.

Beispiel:

IF [ 2 3 ] IN x7 THEN
CONCAT neue = 'aa' '-' 'bb' '-' xx1 '-' x5
ELSE
CONCAT neue = 'xx' '-' 'yy' '-' xx1 '-' x5;
  • Übersichtlicher ist oft die Verwendung von IFBLOCK / ELSEBLOCK / ENDBLOCK anstel­le von IF / ELSE :
IFBLOCK [ 2 3 ] IN x7 THEN
COMPUTE CONCAT neue = 'aa' '-' 'bb' '-' xx1 '-' x5;
COMPUTE SUBSTR PART = neue 1 20;
ELSEBLOCK
COMPUTE CONCAT neue = 'xx' '-' 'yy' '-' xx1 '-' x5;
COMPUTE SUBSTR part = neue 1 10;
ENDBLOCK;

26.04.2019: Neuer Vergleichsoperator ‘IN’ für Alpha-Vergleiche

Syntax:

IF <alpha> IN <alphavar> THEN ....
<alpha> ::= Textkonstante oder Alpha-Variable
<alphavar> ::= Alpha-Variable
  • In der ein­fa­chen Variante wird getes­tet, ob ein belie­bi­ger Text in einem Alpha-Wert vorkommt.
  • V1 sei eine Variable vom Typ Alpha, dann kann man mit ‘IN’ tes­ten, ob eine Textkonstante (z.b. ‘abc’) in die­ser Variable ent­hal­ten ist:
IF "abc" IN V1 THEN...
  • Man kann auch prü­fen, ob der Text einer Alpha-Variablen im Text einer ande­ren Variable ent­hal­ten ist: V1 und V2 sei­en bei­des varia­blen vom Typ Alpha, dann kann man mit dar­auf tes­ten, ob der Alpha-Inhalt von V2 Bestandteil von V1 ist:
IF V2 IN V1 THEN...
  • Es gibt auch einen “Wildcard”-Vergleich: Enthält die Textkonstante auf der lin­ken Seite des Vergleichs ein ‘*’ oder ein ‘?’, dann wird ein Pattern-Vergleich durchgeführt.
  • Jedes ‘?’ steht für einen belie­bi­gen Buchstaben, ‘*’ für mehrere.
IF "a?c.txt" IN V1 THEN...
  • Das letz­te Beispiel wür­de ent­spre­chend ‘true’ lie­fern für: a1c.txt, a2c.txt, abc.txt usw.
  • Diese Form des Vergleichs gibt es nur bei Textkonstanten; wenn auf der lin­ken Seite des Vergleichsoperators eine nume­ri­sche Variable steht, dann wird KEIN Pattern-Vergleich durch­ge­führt — auch nicht, wenn deren Text ein ‘*’ oder ‘?’ enthält.

23.04.2019: Neues Schlüsselwort: IGNORECASEINCOMPARE

Syntax:

IGNORECASEINCOMPARE = [ YES | NO ];
  • Alle Textvergleiche (EQ, NE , LE , GE , LT , GT und IN ) unter Bbeteiligung von Stringkonstanten und/oder Alpha-Variablen wer­den im Standardfall case-sen­si­ti­ve durch­ge­führt, d.h. “abc” ist unter­schied­lich zu “ABC” oder “Abc” usw.
  • Setzt man den Schalter IGNORECASEINCOMPARE auf YES , wer­den die Vergleiche durch­ge­führt, ohne dass zwi­schen Klein- und Großbuchstaben unter­schie­den wird. Hierfür wer­den alle Labeltexte vor dem Vergleich in Kleinbuchstaben gewandelt.
  • Grundsätzlich soll­ten auch Zeichen außer­halb des ASCII-Codessets, wie z.b. ä und Ä oder é und É rich­tig zuge­ord­net werden.
  • Da dies aber vom loka­len Setting des Betriebssystems abhängt, wird zur Vorsicht bei der Verwendung gera­ten. Deutsche Umlaute sind wohl OK, aber bei
    bspw. grie­chi­schen, hebräi­schen oder ost­eu­ro­päi­schen Sonderzeichen ist Kontrolle angebracht.

01.04.2019: Neues Feature von CLONEVAR: Löschen von Labels mittels DELETELABELS

Syntax:

CLONEVAR  =  [ DELETELABELS [ MISSING | AUTONOANSWER | OVERCODE | {}*n ] ];
  • Mehrere Variablen, die den­sel­ben Sachverhalt abbil­den, wer­den bei der Tabellierung oft mit leich­ten Modifikationen benötigt.
  • Ein häu­fi­ges Beispiel hier­für ist die Verwendung im Header und in der Vorspalte von Tabellen: MISSING-values , AUTONOANSWER oder OVERCODE sol­len zwar i.d.r. bei der Anzeige in der Vorspalte erschei­nen, nicht aber im Tabellenkopf.
  • Der Klon soll sich also manch­mal doch vom Original unterscheiden.
  • Mit der Option DELETELABELS kann man ein­zel­ne Labels gezielt über ihren Code löschen oder anhand ihrer Eigenschaften MISSING , AUTONOANSWER und OVERCODE .

Beispiel:

CLONEVAR f3_header = f3 DELETELABELS MISSING AUTONOANSWER OVERCODE;
FORHEADER f3_header = YES;
FORCOUNTS f3 = YES;
  • DELETELABELS ist wört­lich zu neh­men: es wer­den nur die Labels gelöscht, die Werte der Variablen wer­den nicht modifiziert.
  • Damit die bear­bei­te­ten Variablen nicht ohne Labels wie­der erschei­nen, ist es rat­sam, die Einstellung GLOBALPRINTALL auf NO zu setzen.

18.03.2019: Funktionserweiterung für SUPPRESSEMPTYTABLE: STRUCTURE

Syntax:

SUPPRESSEMPTYTABLE = [ NO | YES | STRUCTURE ];
  • SUPPRESSEMPTYTABLE ist ein glo­ba­ler Schalter, der für den gesam­ten Lauf gilt.
  • In für Endkunden bestimm­ten Läufen wird er gewöhn­lich auf YES gesetzt; lee­re Tabellen wer­den dann nicht ausgewiesen.
  • NO führt zur Ausgabe einer Tabellenseite ohne Inhalt mit einem kon­fi­gu­rier­ba­ren Text, der mit­teilt, dass kei­ne gül­ti­gen Fälle vor­han­den sind.
  • Die neue Option STRUCTURE gibt die Struktur von Tabellen vom Typ TABLE aus, d.h. alle Zellen wer­den mit Besetzung n=0 ausgegeben.
  • Entsprechende Informationen lie­gen für Tabellen vom Typ CODEBOOK nicht vor.
  • STRUCTURE wird so inter­pre­tiert, dass lee­re Tabellen in der Ausgabe kennt­lich gemacht wer­den sol­len, es erscheint an die­ser Stelle dann der EMPTYTABLETEXT .
  • Unabhängig von der Stellung von SUPPRESSEMPTYTABLE wird jede lee­re Tabelle in den Messages (gtc.msg) protokolliert.

13.03.2019: Neues Feature: CLONEVAR

Syntax:

CLONEVAR <destinationvar> = <sourcevar>;
  • Erzeugt einen Klon zur <source­var>, der den­sel­ben Variablentyp und auch die­sel­be Anzahl mög­li­cher Nennungen hat.
  • Dieser Klon erbt TEXT , VARTITLE , die MISSING values , MISSING … RANG E und ggf. die Eigenschaften AUTONOANSWER , EVALFAMVALONCE und GROUPCOUNTS ; auch varia­blen­be­zo­ge­ne Angaben zu Dezimalstellen ( DECIMALS , SETDECIMALS ) wer­den übertragen.
  • Die Labels wer­den kopiert, das umfasst auch die OVERCODES und LabelPoperties, wie z.B. USEFONT , LEVEL , SORTCLASS , NEWPAGE und RECODE , ana­log zu LABELS COPY .
  • Außerdem wird intern eine COMPUTE COPY -Anweisung ( COMPUTE COPY <destinationvar> = <sourcevar>; ) gene­riert, die wäh­rend des Einlesens alle Werte jeden Falls überträgt.

Voraussetzungen:

  • Es darf noch kei­ne Variable mit dem Namen der <desti­na­ti­on­var> existieren.
  • <source­var> muss exis­tie­ren und muss eine ato­ma­re Variable ( SingleQ ) oder eine Mehrfachnennungsvariable ( MultiQ , DichoQ ) sein.
  • Variablen vom Typ Alpha , OpenQ , AssocVar wie auch ande­re spe­zi­el­le Variablen (z.B. IndexVar ) kön­nen nicht geklont wer­den, der Versuch führt zu einem Syntaxfehler.
  • Nicht über­tra­gen werden: 
    • EXCLUDEVALUES und RESTRICTVALUES
    • Varkeys (z.b. SingleQ Key …)
    • Filter ( SETFILTER / ENDFILTER , FILTER )

14.02.2019: Neues Statement: MULTIFROMSTRING
  • Umwandeln von Alpha-Variablen in FAMILYVARS

Syntax:

MULTIFROMSTRING [ DELIMITED <delimiter> ] [ DECIMALS <decimalchar> ] <newvar> = <alfavar>;
  • Defaults: DELIMITED: ',' und DECIMALS: '.'
  • Zunehmend sind Variablen mit Mehrfachnennungen oder offe­ne Fragen in Datensätzen als Strings abgelegt.
  • Um die­se in GESStabs effi­zi­ent zu ver­ar­bei­ten, gibt es jetzt das neue Statement MULTIFROMSTRING.
  • <new­var> und <alfa­var> müs­sen exis­tie­ren­de Variablen sein, <new­var> muss eine FAMILYVAR sein. <alfa­var> kann auch eine nume­ri­sche Variable sein.
  • Entscheidend ist nur, dass es für den gegen­wär­ti­gen Code ein Label gibt, das sich nume­risch inter­pre­tie­ren lässt.
  • Es wer­den sovie­le Codes in <new­var> abge­legt, wie in dem Labelstring erkannt wer­den. (Trivialerweise natür­lich nur sovie­le Werte, wie die FAMILYVAR auf­neh­men kann.)
  • Existiert das Label zum gegen­wär­ti­gen Code nicht, oder ent­hält es kei­ne als Zahlen inter­pre­tier­ba­re Substrings, ist die resul­tie­ren­de Variable MISSING .
  • Wenn z.b. eine Alpha-varia­ble f3_alpha in einem SPSS-Datensatz den String “3,6,18” ent­hält, ist eigent­lich eine Mehrfachnennungsvariable mit den Werten 3, 16 und 18 “gemeint”.

Beispiel:

MAKEFAMILY f3  = 10;
MULTIFROMSTRING f3 = f3_alpha;

Mit der Sequenz kann man das Label “3,6,18” in eine GESStabs-kon­for­me MultiQ umwan­deln. (Die Werte von Alpha-Variablen wer­den intern in VALUELABELS gespeichert.)

  • Anmerkung: Ein Datumsstring in der Form “TT-MM-JJJJ” kann auf die­se Weise in eine MultiQ mit drei Werten gewan­delt werden.

Beispiel:

MAKEFAMILY datum1  = 3; EVALFAMVALONCE datum1 = no; MULTIFROMSTRING DELIMITED "-" datum1 = datestring; Die Verwendung von 
EVALFAMVALONCE
an dieser Stelle ist notwendig, da sonst z.b. "01-01-01" in eine 
MultiQ
mit nur einer Nennung "1" ausgepackt würde.

17.12.2018: Neues Schlüsselwort: OVEROVERCODE
  • Neues Schlüsselwort in Valuelabels
  • Bestimmung: Ein OVEROVERCODE ist ein OVERCODE , der nur aus OVERCODE s und ggf. OVEROVERCODE s zusam­men­ge­setzt ist
  • Voraussetzung für die Nutzung: Alle OVERCODE s und OVEROVERCODE s inner­halb der VALUELABELS haben ein­deu­ti­gen Namen.
  • Syntax: Zuweisung von Namen zu OVERCODE s durch Ausschreiben des Namens direkt hin­ter das Schlüsselwort OVERCODE (bzw. OVEROVERCODE )
  • Mehrfach ver­wen­de­te Namen wer­den erkannt und füh­ren zu einem Syntaxfehler.
  • Die lei­ten­de Idee bei der Verwendung von OVEROVERCODE ist, Codes in einer Labelliste nur ein­mal als Referenz in einem OVERCODE zu verwenden.

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 OOC"
OVEROVERCODE OOC2 :OC4 :OC1 "zweiter OOC"
OVEROVERCODE OOOC1 :OOC1 :OOC2 "erster OOOC"
;
  • Die Namen ‘OC1’, ‘OC2’… und ‘OOC1’ bzw. ‘OOOC1’ wur­den hier nur der Einfachheit hal­ber gewählt, selbst­ver­ständ­lich kön­nen hier­für auch inhalt­lich defi­nier­te Namen ver­wen­det werden.
  • Zusätzliche Regeln zur Reihenfolge: OVEROVERCODE s kön­nen nur aus OVERCODE s gebil­det wer­den, die bereits exis­tie­ren, also die wei­ter oben im Skript erzeugt wur­den und einen ein­deu­ti­gen Namen tragen.
  • Weniger stren­ge Regeln für die Platzierung der ato­ma­ren Codes: Codes kön­nen (wie bis­her) auch dann OVERCODE s zuge­ord­net wer­den, wenn sie noch nicht defi­niert sind.

Beispiel einer syn­tak­tisch kor­rek­ten 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 OOC"
overovercode OOC2 :OC4 :OC1 "zweiter OOC"
overovercode OOOC1 :OOC1 :OOC2 "erster OOOC"
1 eins
2 zwei
3 drei
4 vier
5 fünf
6 sechs
7 sieben
8 acht
9 neun
10 zehn
;

04.09.2018: Neues Datensatzformat: Invertierte Datensätze
  • Als neu­es pro­prie­tä­res Dateiformat kann GESStabs nun inver­tier­te Datensätze schrei­ben und lesen.
  • Vorteil: wesent­lich kür­ze­re Verarbeitungszeiten bei Datensätzen mit hoher Fall- und gerin­ger Variablenzahl
  • Daten wer­den varia­blen­wei­se in Blöcken angeordnet.
  • Invertierte Datensätze ent­hal­ten aus­schließ­lich nume­ri­sche Werte. Variablenbeschreibungen müs­sen via SYNTAX her­aus­ge­schrie­ben und in einer Textdatei über­ge­ben wer­den. Alpha-Variablen wer­den sys­te­ma­tisch umgeformt.

Syntax:

  • Herausschreiben eines inver­tier­ten Datensatzes:
INVERTOUT = "<filename/-path>";
  • Einlesen eines inver­tier­ten Datensatzes:
INVERTIN = "<filename/-path>";
  • Ein Tutorial mit allen Optionen steht unter ‘Tutorials und Handbücher’ zum Download bereit.

06.08.2018: Neues Statement: CONFIDENCERANGEPVALUE

Syntax:

CONFIDENCERANGEPVALUE = [ SIGNIF68 | SIGNIF90 | SIGNIF95 | SIGNIF99 | SIGNIF999 ];
  • Im Standardfall (ohne expli­zi­te Setzung von CONFIDENCERANGEPVALUE ) wird das Konfidenzintervall nähe­rungs­wei­se für einen p‑Wert von 0.05 berechnet.
  • Dieser p‑Wert kann jetzt mit dem CONFIDENCERANGEPVALUE -Statement neu gesetzt werden.
  • Nach Setzung eines expli­zi­ten p‑Wertes wird das Intervall exakt berechnet.

15.06.2018: Neues statement: EMPTYTABLETEXT 

Syntax:

EMPTYTABLETEXT = [ "text"  | NO ];
  • Im Normalfall wer­den lee­re Tabellen (in die kei­ne Fälle geflos­sen sind) unterdrückt.
  • Bei Setzung von SUPPRESSEMPTYTABLE = NO; wird eine Tabellenseite aus­ge­ge­ben, die den Standardtext “Empty table” und Angaben über die Syntax der Tabelle ent­hält (wel­che Variablen in die X- bzw. y‑Achse der Tabelle eingingen).
  • Mit der neu­en Option EMPTYTABLETEXT kann statt­des­sen ein spe­zi­fi­scher Text aus­ge­ben werden.
  • EMPTYTABLETEXT setzt eine Voreinstellung, die für alle fol­gen­den Tabellen gilt.
  • Selbstverständliche kann vor jeder Tabelle ein neu­er Text defi­niert werden.
  • Soll der ursprüng­li­che Zustand (ohne spe­zi­fi­sche Einstellung für lee­re Tabellen) wie­der her­ge­stellt wer­den, erreicht man dies mit EMPTYTABLETEXT = NO; .

22.05.2018: TRANSLATE: Neue Option für OFFICEXPORTOPTIONS
      • in Zusammenhang mit USEPOSTSCRIPTFONT

Syntax:

OFFICEXPORTOPTIONS =
....
| TRANSLATE <postcriptfontname> : <excelfontname>  [ OPTION { BOLD | ITALIC | UNDERLINE } ]
....
  • In vie­len Fällen ist es hin­rei­chend, dass GESStabs den Namen des PostScript-Fonts in das erzeug­te Excel- bzw. LibreOffice-Dokument ein­trägt — ins­be­son­de­re, wenn die­se Fonts im System instal­liert sind.
  • Über das opti­sche Resultat ent­schei­det aber das Windows-System auf dem Rechner des Betrachters, wel­cher Font als ange­mes­se­ne Ersetzung gilt.
  • Das uner­feu­li­che Resultat kann sein, dass der Erzeuger des Dokuments sinn­vol­le Font-Ersetzungen sieht, das Ergebnis beim Kunden aber anders aussieht.
  • Mit der TRANSLATE -Option zu OFFICEXPORTOPTIONS kann man genau fest­set­zen, wel­che Systemfonts die PostScript-Fonts erset­zen sollen.

Beispiel:

OFFICEXPORTOPTIONS EDIT =
| TRANSLATE "Helvetica" : "Arial"
| TRANSLATE "Helvetica-Bold" : "Arial"  OPTION BOLD
| TRANSLATE "Helvetica-BoldOblique" : "Arial"  OPTION ITALIC BOLD
| TRANSLATE "Helvetica-Oblique" : "Arial"  OPTION ITALIC
;
  • Hierbei ist zu beach­ten, dass ver­schie­de­ne Schnitte eines Fonts (wie BOLD oder ITALIC) im PostScript-Font-Modell einen wei­te­ren fFont dar­stel­len, wäh­rend die Schnitte in den Font-Modellen der meis­ten gra­phi­schen Benutzeroberflächen als Eigenschaften ( OPTION ) des Fonts ange­ge­ben werden.
  • Um die Schrift ‘Arial’ in den Schnitten ’stan­dard’, ‘bold’, ‘ita­lic’ oder ‘bol­dita­lic’ zu ver­wen­den, müs­sen für vier ver­schie­de­ne PostScript-Fontnamen eine Übersetzng defi­niert werden.
  • Spezialfall: Ein Abobe-Font soll wäh­rend eines Tabellier-Jobs in meh­re­re unter­schied­lich Systemfonts überetzt wer­den. Verwendet man OFFICEXPORTOPTIONS EDIT , so gilt die letz­te Setzung einer Fontübersetzung auch für davor ange­for­der­te Tabellen. D.h. bei EDIT gewinnt immer die letz­te Änderung. Ist es not­wen­dig, unter­schied­li­che Fontübersetzungen in einem Lauf zu ver­wen­den, müs­sen die OFFICEXPORTOPTIONS (ohne Verwendung von EDIT ) ins­ge­samt neu gesetzt werden.

24.04.2018: SORTCODEOVERCODE: neues TABLEFORMAT zur sortierung

Syntax:

TABLEFORMAT = +/- SORTCODEOVERCODE;
  • Eine alter­na­ti­ve Methode zur Sortierung von Labellisten mit OVERCODE
  • Sortiert wer­den alle Labels, ein­fa­che Labels und Overcode-Labels, anhand des Kriteriums.
  • Codes, die zu einem Overcode gehö­ren, wer­den im Anschluss an die­sen Overcode ausgegeben.
  • Diese Option ist auf Sortierungen nach ABSOLUTE und MEAN beschränkt.
  • Zu MEAN gehö­ren auch alle Zellelemente, bei denen zusätz­lich zum MEAN Signifikanzen aus­ge­ge­ben wer­den, wie z.b. MEANTEST , HYMEANTEST etc.
  • SORTCODEOVERCODE und AUTOOVERCODE schlie­ßen sich aus. Eine Tabelle, die die­se bei­den Tabellenformate ent­hält, ist ein syn­tak­ti­scher Fehler.

03.04.2018: Neues Statement: INVALIDRESULTS

Syntax:

INVALIDRESULT <cellelement> = <string>;

Existiert für Cellelement kein Ergebnis (z.b. kei­ne Signifikanz des Unterschieds zu einer ande­ren Spalte oder 0 Werte für einen Mittelwert), kann für die­sen Fall ein Ausgabestring defi­niert werden.


15.03.2018: Neue Optionen für OFFICEXPORTOPTIONS

1. CONTENTPAGE

Syntax:

....
| CONTENTPAGE : <name of worksheet>
....
  • Wenn die­se Option gesetzt ist, wird als ers­tes Worksheet eine Seite mit Inhaltsangaben eingefügt.
  • Dies setzt vor­aus, dass die Tabellen in min­des­tens einem expli­zit benann­ten Worksheet stehen.
  • Mindestens eine CHAPTERTITLE -Anweisung muss also im Skript vor­der ers­ten Tabellen-Anforderung stehen.
  • Ist ein CONTENTKEY der Tabelle bekannt, wird die­ser verwendet.
  • Ist das nicht der Fall, wird der TABLETITLE verwendet.
  • Ist auch die­ser nicht bekannt, wird der Text “unkown con­tent” ausgegeben.
  • Ein Wort zur Warnung: Damit man die Hyperlink-Funktion des Inhaltverzeichnisses nut­zen kann, soll­te man in den Beschriftungen der Worksheets ( CHAPTERTITLE ) kei­ne Sonderzeichen wie Umlaute etc. ver­wen­den. Diese wer­den zwar als Laschentexte kor­rekt dar­ge­stellt, die Hypertext-Funktion schei­tert dar­an aber (“Bezug ungültig”).

2. INHERITFONT

Syntax:

....
| INHERITFONT <boxtype> : [ YES | NO ]
....
  • Auf beson­de­ren Wunsch eines Nutzers
  • Das  Schlüsselwort INHERITFONT hat in die­sem Kontext die Bedeutung: Verwende den (ver­erb­ten) Font vom PS/PDF-Printfile.
  • Die ver­schie­de­nen syn­tak­ti­schen Möglichkeiten der Font-Bestimmung wer­den in fol­gen­der Priorität abgearbeitet: 
    • Wenn ELEMENTFONT expli­zit gesetzt ist, gilt dieser.
    • Sonst wenn BOXFONT expli­zit gesetzt ist, gilt dieser.
    • Sonst, wenn INHERITFONT auf YES gesetzt ist, wird der Fontname aus PS/PDF verwendet.
    • Ist dies alles nicht der Fall, wird an Excel/Libre Office kein Font über­ge­ben und es gilt der Office-Standardfont.

12.03.2018: Neue Option: OFFICECHARTDEFAULTS
  • Voreinstellungen für OFFICECHART
  • Hinweis: Die Syntax von OFFICECHARTDEFAULTS und OFFICECHART ist jetzt an die Schreibweise von OFFICEEXPORTOPTIONS angepasst.

Syntax:

OFFICECHARTDEFAULTS =
[ | AUTO : [ YES | NO ] ]
[ | CHARTTITLE : <title> ]
[ | INVERSE : [ YES | NO ] ]
[ | USE3D : [ YES | NO ] ]
[ | SIZE : <width> <height> ]
[ | FORM : [ BARS | COLUMNS | LINES | PIE ]
[ | OPTION : [ CLUSTERED | STACKED | PERCENTSTACKED ]
[ | LEGENDPOSITION : [ TOP BOTTOM LEFT RIGHT ] ]
[ | BACKGROUND : <colorvalue> ]
[ | FRAMECOLOR : <colorvalue> ]
[ | COLUMNS <number> : <number> ]
[ | ROWS <number> : <number> ]
[ | LABELS : [ 0 | 1 | 2 ] ]
;
  • Geleitet von der Vermutung, dass OFFICECHART häu­fig benutzt wird, ähn­li­che Charts für (fast) alle Tabellen in einem OFFICEEXPORT zu erstel­len, gibt es die syn­tak­ti­sche Möglichkeit, für die Parameter von OFFICECHART Defaults zu definieren.
  • Sollen alle Tabellen ver­char­tet wer­den, dann genügt ein OFFICECHARTDEFAULTS -Statement mit | AUTO : YES .
  • Bei mehr­fa­chem Aufruf von OFFICECHARTDEFAULTS gilt immer die letz­te Version; es gibt kei­ne Variante, ein­zel­ne Parameter zu modifizieren.
  • OFFICECHARTDEFAULTS = ; löscht alle Voreinstellungen.
  • Ist AUTO gesetzt, wird an jede Tabelle, die in der Folge defi­niert wird, auto­ma­tisch ein Chart ange­hängt, des­sen Parameter den OFFICECHARTDEFAULTS ent­nom­men werden.
  • Hier ein Beispiel, in dem 10 Excelsheets mit einer Tabelle und einem Pie-Diagramm erzeugt werden:
OfficechartDefaults =
| auto : yes
| ChartTitle : "Total"
| inverse : no
| legendposition : right
| form : pie
| background : $EEFFFF
| size : 500 400
| use3d : yes
| columns 1:1
;
dummyhead = ttl labels 1 "Total";
#macro #tab( &1 )
chaptertitle = y&1;
tabletitle = "Variable y&1";
table = ttl axx by y&1;
#endmacro
#domacro ( tab 1:10 )
  • Natürlich kön­nen an die Tabellen mit Auto-gene­rier­ten Charts wei­te­re Charts ange­hängt werden.

12.03.2018: Neues Feature: OFFICECHART
  • Diagramm-Darstellung von Tabellen in OFFICEEXPORT

Syntax:

OFFICECHART =
[ | CHARTTITLE : <title> ]
[ | INVERSE : [ YES | NO ] ]
[ | USE3D : [ YES | NO ] ]
[ | SIZE : <width> <height> ]
[ | FORM : [ BARS | COLUMNS | LINES | PIE ]
[ | OPTION : [ CLUSTERED | STACKED | PERCENTSTACKED ]
[ | LEGENDPOSITION : [ TOP BOTTOM LEFT RIGHT ] ]
[ | BACKGROUND : <colorvalue> ]
[ | FRAMECOLOR : <colorvalue> ]
[ | COLUMNS <number> : <number> ]
[ | ROWS <number> : <number> ]
[ | LABELS : [ 0 | 1 | 2 ] ]
;
  • Die Syntax ist iden­tisch mit der des OFFICECHARTDEFAULTS -Statements.
  • Die Option AUTO ist hier logi­scher­wei­se bedeu­tungs­los, gilt aber nicht als syn­tak­ti­scher Fehler.
  • Hinter jedem Tabellen-Statement vom Typ TABLE dür­fen belie­big vie­le OFFICECHART -Anweisungen fol­gen.
  • Für jede OFFICECHART -Anweisungen wird unter der Tabelle ein Standard-Excel (bzw. Libre-Office)-Diagramm erzeugt, sofern OFFICEEXPORT akti­viert ist.
  • Die Optionen erge­ben sich aus der oben dar­ge­stell­ten Syntax.

Es gibt sys­tem­be­dingt eine Reihe von Einschränkungen:

1. Die Tabelle darf nur EIN CELLELEMENT je Datenzelle enthalten.
2. Im Default wer­den alle Zeilen und Spalten der Tabelle dargestellt.

  • Man kann sowohl für die Spalten ( COLUMNS ) als auch für die Zeilen ( ROWS ) Bereichseinschränkungen formulieren: 
    • Zeilen und Spalten müs­sen in der Reihenfolge ihrer Position in der Tabelle bezeich­net werden.
    • Es kön­nen nur zusam­men­hän­gen­de Bereiche ange­steu­ert wer­den, also z.b. COLUMNS1:3 für die Einschränkung auf die ers­te bis drit­te Spalte der Tabelle.

3. Eine Ansteuerung über die Codes der Variablen ist nicht möglich.
4. Auch kön­nen Tabellenrahmen ( ABSCOL , TOTALROW etc.) nicht ange­steu­ert werden.
5. Von zu lan­gen Labeltexten ist abzuraten.
6. Tabellen müs­sen dar­über hin­aus so erzeugt wer­den, dass die Labels der Y‑Achse nur einen ein­zei­li­gen Text ent­hal­ten, d.h. alle Labeltexte und die Daten hier­zu müs­sen in direkt auf­ei­an­der­fol­gen­den Zeilen der Excel-Tabelle stehen.
7. Es besteht die Einschränkung, dass Charts nur in .xlsx- oder .ods-Dateien expor­tiert werden.

Zur Syntax:

  • Die Parameter dürf­ten selbst­er­klä­rend sein.
  • Zu INVERSE :
    • Wenn man kei­ne Angabe macht, (intern INVERSE = NO ), dann wer­den die Labels der Y‑Achse der Tabelle zur Achsenbeschriftung.
    • Sollen die Labels der X‑Achse (Kopf) der Tabelle zur Achsenbeschriftung her­an­ge­zo­gen, muss INVERSE ange­ge­ben werden.
  • Zu PIE :
    • In einem PIE kann immer nur eine Zeile oder eine Spalte dar­ge­stellt werden.
    • Die Ansteuerung ist ana­log zu den ande­ren Charttypen.
    • Will man eine Spalte dar­stel­len, muss man eine ein­zel­ne Spalte benen­nen, z.b. COLUMNS 1:1 bzw. 2:2 , und das Diagramm ist nor­mal, also nicht INVERSE .
    • Will man eine Datenzeile dar­stel­len, muss eine ein­zel­ne Zeile benannt wer­den, z.b. ROWS 3:3 , und das Diagramm muss als INVERSE gekenn­zeich­net werden.
  • Zu LABELS :
    • Die ein­zel­nen Elemente eines Office-Charts kön­nen mit Beschriftungen ver­se­hen werden.
    • Diese wer­den mit dem LABELS -Parameter, einem inte­ger zwi­schen 0 und 2, angefordert.
      0 : Zeige Tabellenwert
      1 : Zeige Tabellenwert als Prozent
      2 : Zeige Namen

22.02.2018: Neuigkeiten zu OFFICEEXPORTOPTIONS

1. Dokumentationsergänzung

  • Neben der Option ELEMENTFONT gibt es auch ELEMENTCOLOR .
  • Hiermit kann man eine Vordergrundfarbe für ein­zel­ne CELLELEMENTS vereinbaren.

2. Bugfix

  • Betrifft USEPRINTERCOLORS DATACELL .
  • Hier wur­den nur die Vordergrundfarben (Schriftfarben) über­tra­gen, die Hintergrundfarben wur­den ggf. nicht
    übertragen.
  • Gefixt!

3. Hinweis zu .xlsx und VARTITLE X

  • Bei der Anwendung der Option CONNECTEXCELCELLS , z.B. auf VARTITLE X , wird ggf. der Excel-Output im xlsx-Format so her­aus­ge­schrie­ben, dass Excel beim Einlesen unkor­rek­te Inhalte moniert.
  • Anschließend ist die Tabelle für das nai­ve Auge völ­lig ok.
  • WORKARAOUND:
    1. Man kann .xls ver­wen­den (hier aller­dings kei­ne Charts).
    2. Wenn man Charts pro­du­zie­ren will und die Excel-Fehlermeldung beim Einlesen auf­trit, kann man die .xlsx-Datei mit Excel ein­le­sen und anschlie­ßend wie­der spei­chern. Danach sind die Probleme verschwunden.

08.02.2018: Bugfix
  • Betrifft CALCULATECOLUMN und COLUMNSUMMARY
  • Diese wur­den in eini­gen aus­ge­lie­fer­ten Versionen nicht berech­net, die Zellen blie­ben leer.
  • Gefixt!

02.01.2018: Neue Option: POSTPONE für die JSON-Option im INVERTOUT-Statement
  • Im Standardfall wer­den die JSON-Variablen-Beschreibungen in dem Moment geschrie­ben, in dem das Statement gele­sen und ver­ar­bei­tet wird. Dies ist also ein Spiegel der Zustands der betrof­fe­ne­nen Variablen in zu die­sem Zeitpunkt.
  • Wenn ALPHA -Variablen gele­sen wer­den, und die Zuordnung von Codes zu Labeltexten gespei­chert wer­den soll, muss das Schreiben der JSON-Definition auf­ge­scho­ben wer­den, bis das Lesen der Daten been­det ist.
  • Dies bewirkt die Option POSTPONE .
  • Vgl. auch unten: SYNTAX .

Syntax:

INVERTOUT [  JSON [ POSTPONE ] <jsonpath> ] = <invertpath>;

02.01.2018: Verschiedene Variablen-Typen in INVERTIN/INVERTOUT
  • Betrifft: MULTIQ , DICHOQ , ALPHA , OPEN und OPENASALPHA
  • Invertierte Dateien spei­chern intern nur nume­ri­sche ato­ma­re Variablen.
  • Das bedeu­tet, dass man für ande­re Variablen Anpassungen machen muss, damit sie die­ser Anforderung ent­spre­chen und ihre Inhalte mit INVERTOUT geschrie­ben bzw. nach dem Einlesen mit INVERTIN ver­wen­det wer­den können.

1. Variablen vom Typ MULTIQ :

  • Bei ihrer inter­nen Verarbeitung erschei­nen sie als Liste von ato­ma­ren nume­ri­schen Variaben, die die ers­te, zwei­te … Nennung enthalten.
  • Diese tau­chen nach dem Einlesen der inver­tier­ten Datei wie­der auf, ledig­lich die Zusammenfassung in die VARFAMILY muss manu­ell wie­der her­ge­stellt werden.

2. Variablen vom Typ DICHOQ :

  • Hier gilt sinn­ge­mäß das­sel­be wie oben.

3. Variablen vom Typ ALPHA :

  • Sie sind schon mal vom Typ her ato­ma­re Variablen.
  • Außerdem haben sie immer auch einen nume­ri­schen Wert, der sich beim Einlesen ihrer Alpha-Texte ergibt.
  • Jeder Alpha-Text, der sich von allen vor­he­ri­gen unter­schei­det, wird der Variablen als Label ange­fügt, und hier­bei wird immer ein neu­er Code erzeugt.
  • Diesen Wert ent­hält die Variable als “cur­rent value”.
  • Sie wird des­halb auch nume­risch in das INVERTOUT -File geschrie­ben.
  • Damit sind aller­dings die ursprüng­li­chen Alpha-Texte noch nicht wie­der hergestellt.
  • Zwei din­ge müs­sen noch gesche­hen: 1. Die Code/Text-Zuordnungen müs­sen an das ein­le­sen­de Skript über­ge­ben  wer­den. 2. Bei der Erzeugung müs­sen alle Labels in Form eines Syntax-File gepei­chert werden.
  • Nun ist das übli­che Praxis, weil ja auch die Labeltexte aller ande­ren Variablen in die­ser Form über­ge­ben wer­den: SYNTAX VARLABELS VARTITLE VALUELABELS = <path>;
  • Dieses Statemen muss jetzt um die POSTPONE -Option erwei­tert wer­den (s.u.):
SYNTAX POSTPONE VARLABELS VARTITLE VALUELABELS = <path>;
  • Auf der ein­le­sen­den Seite muss die­se Syntax-Definition ein­be­zo­gen wer­den, danach kann man mit die­ser Variablen alles trei­ben wie gehabt.
  • Es gibt aber einen klit­ze­klei­nen Unterschied: Es ist jetzt eine nume­ri­sche Variable mit LABELS und nicht mehr ALPHA .

4. Variablen vom Typ OPENASALPHA :

  • Sie sind weder nume­risch noch atomar.
  • Ihr Inhalt kann aber mit einem COMPUTE ALPHA in eine Variable vom Typ ALPHA über­tra­gen werden:
COMPUTE ALPHA o1_a = o1_alpha;
  • Danach geht es wei­ter wie oben beschrieben.

5. Variablen vom Typ OPEN :

  • Variablen vom Typ OPEN ent­hal­ten nume­ri­sche Wertemengen. Ihnen kön­nen belie­big vie­le Codes zuge­ord­net werden.
  • Sie pas­sen for­mal nicht ins Schema einer inver­tier­ten Datei.
  • Man muss ihre Werte in eine Mehrfachnennungs-Variable über­tra­gen, deren ato­ma­re Bestandteile auto­ma­tisch ins inver­tier­te File über­tra­gen wer­den, z.B.:
MAKEFAMILY o1_n = 5; COMPUTE LOAD o1_n = o1;
  • Auf der ein­le­sen­den Seite müs­sen die­se mit einem VARFAMILY -Statement wie­der zu einer  Mehrfachnennungs-Variable zusam­men­ge­fasst werden:
VARFAMILY o1_n =  "o1_n $1" TO "o1_n $5";

02.01.2018: Zusätzliche Option: POSTPONE
  • Zusätzliche Option POSTPONE für das SYNTAX -Statement im Zusammenhang mit INVERTOUT
  • Im Standardfall wer­den SYNTAX -Files in dem Moment geschrie­ben, in dem das Statement gele­sen und ver­ar­bei­tet wird. Dies ist also ein Spiegel des Zustands der betrof­fe­ne­nen Variablen zu die­sem Zeitpunkt.
  • Für den Spezialfall, dass ALPHA -Variablen gele­sen wer­den, und die Zuordnung von Codes zu Labeltexten gespei­chert wer­den soll, muss aller­dings das Schreiben der Syntax-Definition auf­ge­scho­ben wer­den, bis das Lesen der Daten been­det ist. Dies bewirkt die Option POSTPONE .
  • Das ist dann rele­vant, wenn man in inver­tier­ten Dateien auch die Inhalte von ALPHA -Variablen spei­chert.
  • Invertierte Dateien sind von ihrer Struktur auf Effizienz desi­gned, und sie ent­hal­ten nur nume­ri­sche Daten.
  • Die den Labels zuge­ord­ne­ten Codes wer­den auto­ma­tisch gespeichert.
  • Um sol­che Variablen nach dem Lesen aus inver­tier­ten Dateien aus­zu­wer­ten, bedarf es der zug­hö­ri­gen Label-Informationen. Diese wird im SYNTAX -File mit aus­ge­ge­ben, wenn die Option POSTPONE gesetzt ist.

27.12.2017: Codes und Verbatims parallel aus einem OPENQFILE lesen

Syntax:

SINGLEQ <offen_alpha> = OPENASALPHA DATA <offen>;

<offen>              ::= Name der OPEN-Variablen wie im OPENQFILE
<offen_alpha> ::= Name der zusätz­lich zu erzeu­gen­den Variable mit dem Alpha-Text

  • Damit man Codes und Text im Skript par­al­lel anspre­chen kann, müs­sen aus einer OPEN -Variablen im OPENQFILE zwei Variablen mit unter­schied­li­chen Namen im Skript werden.
  • Dies wird dadurch gelöst, indem man zu jeder Standard- OPEN -Variablen (nume­ri­sche Codes) jeweils eine zusätz­li­che OPEN -Variable erzeugt, die nicht direkt aus dem OPENQFILE gele­sen wird, son­dern die Textinformation aus der Datenzeile der Ursprungsvariablen ableitet.
  • Damit dies gesche­hen kann, muss die zusätz­li­che Variable einen Verweis ken­nen, aus der Datenzeile wel­cher Variablen der Text ent­nom­men wer­den soll.
  • Das Variablen-Statement der Standard-Variablen sieht aus wie immer, z.b.: SINGLEQ offen1 = OPEN;
  • Die zusätz­li­che Variable, die den Alpha-Text ent­hal­ten soll, wird eben­so mit dem SINGLEQ -Statement erzeugt.
  • Statt des Schlüsselwortes OPEN steht hier OPENASALPHA , gefolgt vom Datenverweis nach dem Schlüsselwort DATA und dem Variablennamen, wie er im OPENQFILE steht. Z.B.: SINGLEQ offen1_alpha = OPENASALPHA DATA offen1;

Beispiel für eine Anwendung in einem Makro:

#macro #openplusalpha( &name )
SINGLEQ &name = OPEN;
SINGLEQ &name_alpha = OPENASALPHA DATA &name;
#endmacro
#domacro( openplusalpha offen1 offen2 offen3 offen4 offen5 offen6 )
  • In die­sem Beispiel wird davon aus­ge­gan­gen, dass im OPENQFILE die Codes und Verbatims der Variablen offen1, offen2, offen3, offen4, offen5 und offen6 vor­han­den sind.
  • Im Makro wer­den zusätz­lich die Variablen offen1_alpha bis offen6_alpha erzeugt, die die ver­ba­tims enthalten.
  • SPSS-sav-Files: Wenn man sowohl die Texte als auch die nume­ri­schen Codes einer Studie ins sav-File schrei­ben will, wer­den die zusätz­lich mit OPENASALPHA DATA erzeug­ten Variablen auto­ma­tisch über­nom­men. Dies ist das stan­dard­ver­fah­ren für OPENASALPHA -Variablen.
  • Die Variable, die die Codes ent­hält, wer­den nicht auto­ma­tisch über­tra­gen, da es sich bei deren Inhalten um Wertemengen han­delt, für die es in SPSS-Files kei­ne Entsprechung gibt.

27.12.2017: Syntaxerweiterung: FILEKEY für CSVINFILE

Syntax:

CSVINFILE  [ FILEKEY <key> ] [ <delimchar> ] = <filepath>;
  • Auch CSVINFILEs kön­nen mit einem FILEKEY ver­se­hen werden.
  • Der Mechanismus funk­tio­niert ana­log zur Bindung selek­tier­ter OPENQFILEs an DATAFILEs.

Beispiel:

CSVINFILE FILEKEY before2016 = "..\DATA2014\data.csv";
CSVINFILE FILEKEY before2016 = "..\DATA2015\data.csv";
CSVINFILE FILEKEY 2016 = "..\DATA2016\data.csv";
CSVINFILE FILEKEY 2017 = "..\DATA2017\data.csv";
KEY OPENQFILE = panelno;
OPENQFILE FILEKEY before2016 = "..\OPEN2014\opn.*";
OPENQFILE FILEKEY before2016 = "..\OPEN2015\opn.*";
OPENQFILE FILEKEY 2016 = "..\OPEN2016\opn.*";
OPENQFILE FILEKEY 2017 = "..\OPEN2017\opn.*";

27.12.2017: Syntaxerweiterungen: ALLOWEMPTY und FILEKEY für DATAFILE und OPENQFILE

Syntax:

DATAFILE  [ FILEKEY <key> ] [ ALLOWEMPTY ] = <filepath>;

und

OPENQFILE [ FILEKEY <key> ] [ ALLOWEMPTY ] = <filepath>;

1. Zu FILEKEY :

  • Im Defaultfall wer­den alle OPENQFILE s allen DATAFILE s zuge­ord­net. Das ent­spricht in der Regel auch den Anforderungen.
  • Die Zuordnung von Zeilen der OPENQFILE s zu den Fällen in den DATAFILE s geschieht allein über den Inhalt des Schlüssels, der nume­risch oder alpha­nu­me­risch sein kann.
  • In Spezialfällen (z.b. Wellenbefragungen in Panels) soll neben dem Fallschlüssel (z.b. Identifikation im Panel) auch zwi­schen den Befragungswellen unter­schie­den werden.
  • Mit der Option FILEKEY kann man nun DATAFILE s und OPENQFILE s eige­nen Gruppen zuordnen.
  • Wenn bei einem DATAFILE ein FILEKEY gesetzt ist, wer­den aus der Gesamtmenge aller über Schlüssel ver­wal­te­ten offe­nen Antworten nur die her­aus­ge­sucht, die aus OPENQFILE s stam­men, die den­sel­ben FILEKEY haben.

Beispiel:

DATAFILE FILEKEY 2016 = "..\DATA2016\data.*"; DATAFILE FILEKEY 2017 = "..\DATA2017\data.*";
OPENQFILE FILEKEY 2016 = "..\OPEN2016\opn.*"; OPENQFILE FILEKEY 2017 = "..\OPEN2017\opn.*";
  • Hiermit ist sicher­ge­stellt, dass den Daten aus dem Verzeichnis ‘DATA2016’ nur offe­ne Antworten zuge­ord­net wer­den, die im Verzeichnis ‘OPEN2016’ vor­ge­fun­den wurden.
  • Wie man sieht, kann ein FILEKEY belie­big vie­len OPENQFILE s bzw. DATAFILE s zuge­ord­net wer­den, denn mit z.b. “data.*” kann eine belie­big gro­ße Menge Dateien bezeich­net sein.

2. Zu ALLOWEMPTY :

  • Im Defaultfall über­wacht GESStabs, dass aus jedem DATAFILE - bzw. OPENQFILE -Statement wenigs­tens eine gül­ti­ge Datei resultiert.
  • Ist dies nicht der Fall, wird der Lauf mit einem Syntaxfehler abgebrochen.
  • Die Option ALLOWEMPTY erlaubt lee­re Ergebnismengen der Wildcard-Suche.

24.12.2017: Syntaxerweiterung von SORT AS in OVERVIEW-Tabellen
  • Neue Variablen-Option: CODE <reference-code>
  • Neue TABLE-Option: SORT AS
  • Gemeinsam erge­ben die­se neu­en Optionen die Möglichkeit, Sortier-Reihenfolgen von Standardtabellen an Mittelwertübersichten zu vererben.

Syntax des gesam­ten Statements:

OVERVIEW <tableoptions> = <kopf> BY <cellelementlist>( <varlist> ) 
[ SORT <cellelement> [ DESCEND ] [ PANE <number> CODE <number> ] ] ;
<varlist> ::= <var> | <varlist> <var>
<var> ::= <varname> <varoption>
  • In den TABLEOOPTIONS (vor dem ‘=’) wird jetzt auch SORT AS ausgewertet.
  • SORT AS kann sich auch auf Tabellen vom Typ TABLE bezie­hen, die z.B. mit SORT ABSOLUTE DESCEND sor­tiert sind.
  • Wenn dann eine Übersichtstabelle mit meh­re­ren MEAN etc. in einer kor­re­spon­die­ren­den Reihenfolge sor­tiert wer­den soll, kön­nen ein­zel­ne Variablen den Ausprägungen in der Ursprungstabelle zuge­ord­net werden.

Syntax:

<varoption> ::=
[ SORTCLASS <number> ]
[ LEVEL <number> ]
[ FILTER <log.bedingung> | ]
[ USEFONT <font> ]
[ USEWEIGHT <variable> ]
[ DESCRIPTION <string> ]
[ CODE <reference-code> ]

Beispiel:

  • Den Ausprägungen 1 bis 5 einer Variablen namens a17 mögen die Variablen a15 bis a19 entsprechen:
    1 .. a15
    2 .. a16
    3 .. a17
    4 .. a18
    5 .. a19
  • Die OVERVIEW -Tabelle kann dann kor­re­spon­die­rend zu den Häufigkeiten der Ausprägungen 1 .. 5 sor­tiert wer­den, indem man den Variablen die Codewerte ent­spre­chend zuordnet.
TABLE NAME sortbase = x4 BY a17 SORT ABSOLUTE DESCEND;
OVERVIEW SORT AS sortbase = x4 BY MEAN(
a15 CODE 1
a16 CODE 2
a17 CODE 3
a18 CODE 4
a19 CODE 5
);
  • Die Code-Zuordnungen müs­sen ein­deu­tig sein: wenn mehr als eine Variable in einem OVERVIEW -Statement den­sel­ben Code bekom­men, führt dies zu einem Syntaxfehler.
  • Wenn man Variablen auf die­se Weise Referenzcodes zuteilt, soll­te man dies voll­stän­dig für alle dar­zu­stel­len­den Variablen machen, da ansons­ten vom System Referenzcode ver­ge­ben wer­den, die zu ent­spre­chen­den Fehlern füh­ren können.

23.12.2017: Syntaxerweiterung zu INVERTOUT

Syntax:

INVERTOUT [ JSON <jsonpath> ] = <filepath>;
  • Wenn in der JSON-Klausel ein gül­ti­ger Filepath steht, wird in die­se Datei eine Beschreibung des Inhalts der INVERTOUT -Datei abge­legt.
  • Diese Beschreibung ent­hält alle Variablen, deren Vartitle, deren Text und deren Labels.

23.12.2017: Neues Statement: MINROWTOTAL[GLOBAL]/ MINCOLUMNTOTAL[GLOBAL]
  • Neue Statements zum Unterdücken von Spalten/ Zeilen, bei denen im Total eine Untergrenze bei spe­zi­el­len Cellelements unter­schrit­ten wird.

Syntax:

a) als nach­ge­stell­te Option zu einem TABLE -Statement:

MINROWTOTAL <cellelement> = <value>;
MINCOLUMNTOTAL <cellelement> = <value>;

b) als glo­ba­le Voreinstellung:

MINROWTOTALGLOBAL <cellelement> = <value>;
MINCOLUMNTOTALGLOBAL <cellelement> = <value>;
<cellelement> ::= [ COLUMNPERCENT | ROWPERCENT | MEAN | ABSOLUTE | PHYSICALRECORDS ]

c) zum Ausschalten der glo­ba­len Voreinstellung:

MINROWTOTALGLOBAL = NO;
MINCOLUMNTOTALGLOBAL = NO;

21.12.2017: Erweiterung des DUMMYHEAD-Statements
  • DUMMYHEAD dient dazu, einen Kopf für Table Structure / Table add zu definieren.
  • DUMMYHEAD defi­niert die Labeltexte — was aber ver­misst wur­de, ist die Funktionalität, die OVERCODE in Labels haben.
  • Das DUMMYHEAD -Statement darf jetzt eine Labels-Klausel ent­hal­ten, und die­se darf Overcodes enthalten.

Syntax:

DUMMYHEAD = <varname>
LABELS
OVERCODE 1 2 "Labeltext....
1 "Labeltext"
2 "Labeltext"
...
;
  • Das DUMMYHEAD ‑Statement erzeugt dann nicht nur die expli­zit genann­te Variable, son­dern für jedes Label, das NICHT Overcode ist, eine zusätz­li­che Variable mit dem kon­stan­ten Wert des Labelcodes. Deren Name ist <varname>__<labelcode>.
  • Auch die Table add -Statements müs­sen ange­pas­sen: Anstelle der kon­stan­ten Zahlenwerte müs­sen die zusätz­lich gene­rier­ten Konstanten-Variablen ver­wen­det wer­den, also z.b. “k_dummy__1” statt nume­risch 1, usw..

Beispiel:

dummyhead = k_dummy
labels
overcode sum 1 2 "Alter 1 + 2"
1 "Alter 1"
2 "Alter 2"
3 "Alter 3"
;
compute alter = random( 65 ) + 18;
TABLE STRUCTURE = k_dummy BY x3;
tablefilter 1 =  text "" [17:45] in alter;
table add = k_dummy__1 by x3 #s;
tablefilter 1 =  text "" [46:60] in alter;
table add = k_dummy__2 by x3 #s;
tablefilter 1 =  text "" [61:99] in alter;
table add = k_dummy__3 by x3 #s;
  • In einem so defi­nier­ten DUMMYHEAD , bei dem die Labels inner­halb der erwei­ter­ten Syntax defi­niert wer­den, wer­den auch die Overcodes aus den DUMMYHEAD -Labels gezählt — da alle Subvariablen die Labels der DUMMYHEAD -Variablen erben, und damit auch die Overcode-Definitionen.

15.12.2017: Textergänzungen mit PREPEND/ APPEND
  • Mit PREPEND und APPEND kön­nen Vartitle oder Vartexte modi­fi­ziert wer­den, indem man  Textbestandteile ange­hängt oder vor­an­ge­stellt werden.
  • In den Statements, die sich auf Vartexte bezie­hen, gilt die Syntax für Texte (Zeilenumbrüche etc. dür­fen ent­hal­ten sein).

Syntax:

PREPEND VARTEXT <varlist> = <text>;
APPEND VARTEXT <varlist> = <text>;
PREPEND VARTITLE <varlist> = <string>;
APPEND VARTITLE <varlist> = <string>;

13.12.2017: Bugfix
  • Betrifft MarkMeanRow / MarkMeanColumn
  • Interne Kennzeichungen über die Signifikanz von Mittelwertunterschieden wur­den via GESS ChartFactory in PowerPoint-Charts übertragen.
  • Gefixt!

6.12.2017: CSVINFILE
  • Die Anzahl der Semikola in den Datenzeilen wird nicht mehr überwacht.
  • Leere Felder nach dem letz­ten Semikolon erzeu­gen in der/ den betrof­fe­nen Variablen ein MISSING.

5.12.2017: Problemhinweis für ASSOCFILE spaltenfixiert
  • Wenn eine Datei, die als ASSOCFILE ein­ge­le­sen wer­den soll, UTF8-BOM-kodiert ist, wird der Schlüssel in der ers­ten Datenzeile im ASSOCFILE nicht kor­rekt gele­sen, da die 3‑Bytes des BOM als Inhalt inter­pre­tiert werden.
  • Es ist wei­ter­hin grund­sätz­lich bei spal­ten­fi­xier­ten Datensätzen dar­auf zu ach­ten, dass die­se nicht in UTF8 oder UTF8BOM kodiert sind.
  • Sind zei­chen außer­halb von ASCII (0..127) ent­hal­ten, wer­den die spal­ten falsch inter­pre­tiert. Solche Fehler sind u.u. sehr schwer zu finden.

5.12.2017: Bugfix
  • Betrifft MIN MAX
  • MIN MAX als CELLELEMENTS lie­fer­ten kei­ne Werte.
  • Gefixt!

5.12.2017: Bugfix
  • Betrifft IF .. PRINT in Datei
  • Sonderzeichen in der Pfadangabe wur­de nicht kor­rekt an Windows über­ge­ben (Windows mag kein UFT8).
  • Gefixt!

5.12.2017: Bugfix
  • Betrifft EXPANDINTOKEN
  • Es kam vor, dass EXPANDINTOKEN -Anweisungen, die durch ein IFDEF eigent­lich aus­ge­schal­tet sein soll­ten, vom Preprozessor doch ange­wen­det wurde.
  • Gefixt!

5.12.2017: Neues Statement: AUTOCLEAR

Syntax:

AUTOCLEAR = [ YES | NO ];
  • Voreinstellung: NO
  • Als Default wer­den expli­zit alle Variablen inner­halb eine GESStabs-Laufs vor dem Einlesen des nächs­ten Falles gecleart, d.h. expli­zit auf Missing gesetzt.
  • Wenn man abse­hen kann, dass dies unnö­tig ist, kann man die­se Option auf NO setzen.
  • Bei einer Million Fällen aus einer inver­tier­ten Datei ist der Zeitgewinn relevant.

5.12.2017: Neues Statement: ATOMVARSHORTCUT

Syntax:

ATOMVARSHORTCUT = [ YES | NO ];
  • Voreinstellung: NO
  • Hiermit kann man für ato­ma­re Variablen eine beschleu­nig­te Vearbeitung bei der Bereitstellung von Werten für eine Tabelle oder Computes einstellen.
  • Man soll­te dies nur tun, wenn man Variablen ver­wen­det, die Overcodes enthalten.

23.11.2017: USEWEIGHT
  • Wenn der Inhalt einer Variablen mit­tels USEWEIGHT zum gül­ti­gen Gewicht für eine oder meh­re­re Tabellen ver­wen­det wird ( USEWEIGHT = <varname>;Z), und diese Variable den aktuellen SETMISSING -Wert enthält, dann wird für diesen Fall das Gewicht 0 verwendet.
  • Die Logik dahin­ter: ein Fall, des­sen Gewicht nicht bestimmt ist, kann in einer gewich­te­ten Auswertung nicht ver­wen­det werden.

23.11.2017: Schreiben und Lesen invertierter Datenfiles
  • Neue Statements: INVERTIN , INVERTOUT , ZIPINVERTOUT , INVERTOUTMAX
  • Als neu­es (pro­prie­tä­res) Dateiformat kann GESStabs inver­tier­te Datenfiles schrei­ben und lesen.
  • In “nor­ma­len” Datenfiles ( DATAFILE , CSVINFILE , SPSSIN ) sind die Werte fall­wei­se ange­ord­net; die Dateien ent­hal­ten sequen­ti­ell Fälle und alle deren Werte.
  • Bei inver­tier­ter Speicherung ist das umge­kehrt: alle wer­te der ein­zel­nen Variablen sind zusam­men­hän­gend gespeichert.
  • Diese Speicherform erlaubt sehr effi­zi­en­tes Lesen, wenn nur weni­ge Variablen benö­tigt werden.
  • Der ide­al­ty­pi­sche Anwendungsfall ist, wenn aus sehr gro­ßen Dateien ein­zel­ne Tabellen mit weni­gen Variablen erzeugt wer­den sollen.
  • Mit INVERTOUT kann eine sol­che Datei gespei­chert wer­den, ähn­lich wie mit SPSSOUTFILE .
  • Ein inver­tier­tes File ist nur ein Datenfile; weder Valuelabels noch Vartitle oder Texte sind dar­in ent­hal­ten. In die­ser Hinsicht ist es mit einem CSVINFILE ver­gleich­bar, mit einem Unterschied: der Zustand der MISSING-Values (das glo­ba­le SETMISSING und varia­blen­be­zo­ge­ne MISSING ) wer­den übertragen.
  • INVERTIN ist das kom­ple­men­tä­re Statement, die­se Datei wie­der zu lesen.
  • Im Anschluss an das INVERTIN -Statement sind die Variablennamen im GESS-Skript bekannt.
  • Die Daten in den inver­tier­ten Files kön­nen kom­pri­miert gespei­chert wer­den (ZIP). Dies wird mit ZIPINVERTOUT (YES/NO) gesteuert.
  • Das INVERTIN -Statement erkennt, ob es sich um kom­pri­mier­te Daten han­delt oder nicht.
  • Die Werte in den inver­tier­ten Dateien sind in Blöcken von x Fällen gespei­chert. Diese Speichergröße beträgt im Standardfall 16384. Man kann dies mit INVERTOUTMAX anpassen.

23.11.2017: Semikolon und Anführungszeichen in Datenfeldern in CSVINFILE
  • Strings in Datenfeldern, die durch ” oder ’ ein­ge­schlos­sen sind, dür­fen das Feldtrennzeichen ; enthalten.
  • Außerdem dür­fen “” oder ” ver­wen­det wer­den, die dann als ein­zel­ner Char inter­pre­tiert werden.
  • Das letz­te Feld in einer Datenzeile muss nicht durch ein Semikolon abge­schlos­sen werden.

21.22.2017: Bugfix
  • Betrifft AUTOOVERSORT -Problem
  • Wenn SORTCLASS an Overcodes und außer­dem SORTCLASS an Labels, die kei­nem Overcode ange­hö­ren, mit AUTOSORTCLASS (das Resultat der Auflösung der inter­nen Hierarchie von Labels und Overcodes im AUTOOVERSORT ) zusam­men kamen, wur­de der Vorrang von SORTCLASS vor AUTOSORTCLASS falsch auf­ge­löst.
  • Gefixt!

21.11.2017: Bugfix
  • Betrifft Ausgabe in SPSS-Statement
  • Nach einer inter­nen Aufräumaktion wur­den die Variablennamen in expor­tier­ten SPSS-Valuelabels-Statements nicht an SPSS-Standards “geman­gelt”.
  • Gefixt!

23.10.2017: Bugfix
  • Betrifft COLUMNSUMMARY
  • Einzelne Zellen der Totalspalten wur­den bei der Ausführung von COLUMNSUMMARY feh­ler­haft gelöscht.
  • Gefixt!

28.09.2017: Neues Feature: OFFICEEXPORT
  • OFFICEEXPORT ist eine neue Methode, GESStabs-Tabellen nach Excel (.xls, .xslx) oder in Libre Office-Spreadsheets (.ods) zu exportieren.
  • Der Funktionsumfang ist ähn­lich wie bei INSTANTEXCEL , der Export erfolgt ohne Beteiligung von Excel/ Libre Office  durch GESStabs. Der Vorteil ist eine wesent­lich höhe­re Verarbeitungsgeschwindigkeit.
  • Da die Gestaltung nicht über HTML/ CSS erfolgt, gehö­ren damit auch die Begrenzungen der Kompatibilität beim  HTML-Import durch Excel der Vergangenheit an, ins­be­son­de­re die teil­wei­se män­gel­be­haf­te­te Interpretation von CSS  durch Excel.
  • Generell gilt: eben­so wie bei INSTANTEXCEL führt eine NEWCHAPTER -Anweisung vor einer Tabellenanweisung dazu, dass ein neu­es Worksheet in Excel/ Libre Office ange­legt wird.
  • Ebenso wie bei INSTANTEXCEL führt eine NEWPAGE -Anweisung vor einer Tabellenanweisung dazu, dass ein Seitenvorschub
    im Worksheet ange­legt wird. Dieser wird dann beim Ausdruck von Excel bzw. Libre Office ausgewertet.
  • Der Export wird durch das OFFICEEXPORT -Statement ange­for­dert.

Syntax:

OFFICEEXPORT = <filename> ;
  • <filename> muss eine der fol­gen­den Extensions haben : xlsx | xls | ods. Über die Extension wird auto­ma­tisch das inter­ne Format der Export bestimmt.
  • Zur Steuerung des Layouts gibt es das neue state­ment OFFICEXPORTOPTIONS .

Syntax:

OFFICEXPORTOPTIONS [ EDIT ] = { <option> } *n;
  • Wenn die Option EDIT gesetzt ist, wer­den nur die expli­zit ange­ge­be­nen Optionen geän­dert, alle ande­ren Optionen behal­ten ihre Werte, ana­log zu +/- bei TABLEFORMATS .
<option> ::= [ <boxfont> | <elementfont> | <background> | <foreground> | 
<verticalalign> | <horizontalalign>| <useprintercolors> | <frames> | 
<wraptext> | <connectexcelcells> | <labelwidth> ]
  • Als Optionen ste­hen fol­gen­de Elemente zur Verfügung: 
    • Schrifttyp und ‑for­mat eines defi­nier­ten Boxtyps ( BOXFONT )
    • Schrifttyp und ‑for­mat eines ein­zel­nen Zellenelements ( ELEMENTFONT )
    • Hintergrund- und Schriftfarben einer Tabellenbox ( BACKGROUND FOREGROUND )
    • vertikale/ hori­zon­ta­le Ausrichtung von Texten ( VERTICALALIGN HORINZONTALALIGN )
    • Übergabe der Farbgebung aus der PDF-/ PS-Ausgabedatei in Excel ( USEPRINTCOLORS )
    • Formatierungen von Rahmen ( FRAMES )
    • Zusammenfassung ein­zel­ner Zeilen in Datenzellen ( CONNECTEXCELCELLS )
    • Einstellungen für Fließtexte ( WRAPTEXT )
    • Zellenbreiten ( LABELWIDTH )

Beispiel:

officeexport = direct.xlsx;
#expand #gray $333333
officexportoptions =
| drawbox tabletitle : weight medium borders bottom color #gray
| drawbox labels x : weight thin color #gray
| drawbox labels y : weight thin color #gray
| boxfont tabletitle : "dejavu sans" size 14 option bold
| elementfont colchiqu : "Constantia" size 10 option bold
| VerticalAlign tabletitle : vcenter
| HorizontalAlign datacell : hcenter
| UsePrinterColors datacell : yes
| labelwidth : 350
| background labels y : $ccffdd
| foreground labels y : $FFEEEE
;
  • Tutorial zu OFFICEEXPORT : sie­he hier.

16.08.2017: Neue Statements: SIGNIFMINEFFECTCHIQ und SIGNIFMINEFFECTTTEST

Syntax:

SIGNIFMINEFFECTCHIQ = <value>;

bzw.

SIGNIFMINEFFECTTTEST = <value>;
  • Neues Feature: Begrenzung der Ausgabe von Sigifikanzkennzeichnung durch mini­ma­le Effektgröße
  • Hintergrund: Über Tabellenbände wird gern das Füllhorn sta­tis­ti­scher Tests (Signifikanztests) aus­ge­schüt­tet. Bei höhe­ren Fallzahlen wer­den oft aller­dings auch Zusammenhänge signi­fi­kant, deren gerin­ge Effektstärke eine wei­ter­ge­hen­de Interpretation oft unsin­ning erschei­nen lässt. Die Signifikanz ist ja nur die Aussage dar­über, wie unwahr­schein­lich es ist, dass die Nullhypothese gilt, dass die­ser Zusammanhang also in der Grundgesamtheit nicht exis­tiert. Je grö­ßer die Stichprobe, des­to gerin­ge­re Effekte wer­den als signi­fi­kant gekennzeichnet.
  • Es liegt also nahe, die Kennzeichnung von Signifikanz in sol­chen Fällen zu unter­drü­cken, in denen der vor­ge­fun­de­ne Unterschied einen vom Benutzer vor­zu­ge­ben­den Minimalwert nicht erreicht. Die Statistik kennt hier­für Maße der Effektstärke, die sonst auch als Zusammenhangsmaße ver­wen­det werden.
  • Die am häu­figs­ten ver­wen­de­ten Signifikanztests in den Tabellenbänden tes­ten Unterschiede von Anteilen (Prozentwerten) oder von Mittelwerten.
  • Zur Messung der Effektstärke bei Tests aus der ChiQu-Familie ( COLCHIQU , ROWCHIQU , HYCOLCHIQU etc.) wird Cramer´s Phi berech­net (das nume­risch iden­tisch ist mit Cohen´s w). Wird hier­bei nicht min­des­tens ein Effekt der Stärke SIGNIFMINEFFECTCHIQ erreicht, wird die Ausgabe des Signifikanzbuchstabens für die­se Zelle unter­dückt. Der Wertebreich von Phi ist 0 bis 1.
  • Für die Bewertung von Mittelwertunterschieden ( TTEST , MEANTEST , HYMEANTEST , ESSMEANTEST etc.) wird Cohens d berech­net. Der Mechanismus funk­tio­niert ent­spre­chend: Wird nicht min­des­tens ein Effekt in Höhe von SIGNIFMINEFFECTTTEST erreicht, wird der Signifikanzbuchstabe unter­drückt. Wie bei allen Maßen für Effektstärke bedeu­tet 0 auch hier, dass kein mess­ba­rer Zusammenhang besteht. Cohens d kann aber auch Werte grö­ßer 1 annehmen.
  • In aller Regel wird man für Cramer´s Phi ( SIGNIFMINEFFECTCHIQ ) klei­ne­re Grenzwerte anset­zen als für Cohens d ( SIGNIFMINEFFECTTTEST ). Wenn bei letz­te­rem die “Pooled Variance” den Wert 0 hat, wird Cohens d nume­risch unzu­läs­sig (vul­go unend­lich). In dem Fall wird der Test nicht durchgeführt.
  • SIGNIFMINEFFECTCHIQ bzw. SIGNIFMINEFFECTTTEST sind Tabellen-Voreinstellungen, sie gel­ten für alle in der Folge ver­ein­bar­ten Tabellen.
  • Mit SIGNIFMINEFFECTCHIQ oder SIGNIFMINEFFECTTTEST = 0; kann man die Restriktion wie­der ausschalten.
  • Wird durch einen die­ser Tests ein Signifikanzbuchstabe unter­drückt, wird dies ggf. im STATTESTDUMP-File protokolliert.

26.05.2017: Warnung im Zusammenhang mit INSTITUTION = “”; 
  • Bis Ende 2016 war der Institutsname, so wie in der Lizenz ver­ein­bart, immer Bestandteil der Ausgabe von INSTITUTION . Dies dien­te als ein mini­ma­ler Kopierschutz.
  • Seit der Einführung des Lizenzsystems über das Internet ist dies nicht mehr erfor­der­lich, und Kunden hat­ten dar­um gebe­ten, dass man den Text von INSTITUTION- komplett anpassen kann. Die Software wurde entsprechend angepasst.
  • Da der Inhalt von INSTITUTION der Name des ers­ten Sheets bei Ausgabe mit INSTANTEXCEL ist, gibt es dann Probleme, wenn INSTITUTION = ""; gesetzt wird, da Excel einen lee­ren String nicht als Name eines Sheets akzeptiert.
  • Der Lauf wird dann mit der dem Runtimeerror “can­not set name of sheet in excel” abgebrochen.
  • Abhilfe: INSTITUTION = ""; ver­mei­den, wenn eine Excel-Ausgabe geplant ist

26.05.2017: Anpassung der Namen atomarer Variablen 
  • Betrifft die Anpassung der Namen ato­ma­rer Variablen von MULTIQ und DICHOQ bei der Speicherung in ASCIIOUTFILE DELIMITED an die Namen, die GESS Q. ausgibt.
  • Die Namen wer­den jetzt bei Verwendung von MODIFYCSVNAMES = YES; dem ange­passt, wie GESS Q. sol­che Variablen benennt.
  • Die Namensbestandteile “ $1” etc. wer­den in “_1” etc. umgewandelt.

23.05.2017: Funktionsanpassung bei CALCULATECOLUMN 
  • CALCULATECOLUMN wer­tet Zahlenwerte aus, die den Zellen ein­deu­tig zuge­ord­net sind.
  • Diese konn­ten aller­dings auch Zahlenwerte sein, die bei der wei­te­ren Verarbeitung der Ausgabe unter­drückt wer­den, z.B. durch SUPPRESSIFLESS .
  • CALCULATECOLUMN prüft jetzt, ob die­se Zellen im Verlauf der Ausgabe einen String ent­hal­ten, der einen Zahlenwert dar­stellt: nur dann wird der Zellenwert aus­ge­wer­tet. Sonst gilt die Zelle als missing.

09.05.2017: neue syntaktische Variante von MARKCELLS 
  • auf Basis von Häufigkeiten in PS und PDF

Syntax:

MARKCELLS = YES COMPUTE COLOR SIGNIFLEVEL [ SIGNIF90 | SIGNIF95 | SIGNIF99 | SIGNIF999 ] GT <colorGT> LT <colorLT> ;
  • In die­ser Version ( MARKCELLS COMPUTE ) wird für jede Zelle aus den Randverteilungen und der Zellenbesetzung die “Unwahrscheinlichkeit” der empi­ri­schen Besetzung als p‑Wert berechnet.
  • Aus dem SIGNIFLEVEL ergibt sich ein Intervall ( 0..SIGNIFLEVEL ).
  • Die Zellen, deren p‑Wert in die­sem Intervall liegt, wer­den farb­lich gekennzeichnet.
  • Eine Zelle mit dem p‑Wert=0 wird mit einem benann­ten Farbwerte ( colorGT bzw. colorLT ) gefärbt.
  • Zellen, deren p‑Wert grö­ßer ist als das SIGNIFLEVEL , behal­ten einen wei­ßen Hintergrund.
  • Zellen, deren p‑Werte zwi­schen 0 und SIGNIFLEVEL lie­gen, wer­den mit einer pro­por­tio­nal ange­pass­ten Farbe zwi­schen colorGT bzw. colorLT und weiß eingefärbt.
  • Lange Rede, kur­zer Sinn: Je signi­fi­kan­ter die Abweichung vom Erwartungswert, des­to kräf­ti­ger die Farbmarkierung.
  • Wenn TABLEFORMAT EXCELCOLOR gesetzt ist, wer­den die Hintergrundeinfärbungen auch in Excel übertragen.

03.05.2017: neues CELLELEMENT MARKCELLSPVALUE
  • Der Einfärbung von Zellen im Zuge von MARKCELLS liegt ja immer irgend­ein Signifikanztest zugrun­de, meis­tens 2x2-Chiquadrat-basiert.
  • Man kann für die Abschätzung die Methoden CLASSIC, COLCHIQU, ROWCHIQU etc. einsetzen.
  • Die Entscheidung für eine Farbe zur Kennzeichnung geschieht anhand des p‑Wertes.
  • Diesen Wert kann man nun auch als ein CELLELEMENT ausgeben.
  • 0.05 enst­pricht dem 5%-Niveau, also soll­te man ein pas­sen­des Format vor­se­hen, z.b. ‘#.###’.
  • Werte > 0.20 wer­den der Übersichlichkeit hal­ber nicht expli­zit aus­ge­ge­ben, son­dern durch “–” ersetzt.

15.03.2017: geänderte Voreinstellung zu SPSSSINGLEWRITE
  • Die Voreinstellung ist immer YES.
  • Wenn man gro­ße Mengen von Valuelabels in einem WRITESPSSFILE ver­sen­ken muss, kann man die­se Voreinstellung auf NO ändern.
  • Es hat sich her­aus­ge­stellt, dass die Methode zum schnel­len Speichern auch in der Windows-Version nicht in allen Fällen sicher funktioniert.

16.02.2017: neues Statement IGNORESPSSMISSINGVALUES

Syntax:

IGNORESPSSMISSINGVALUES = [ YES / NO ];
  • Wenn eine Variable beim Einlesen eines SPSS-Files den Wert des inter­nen SysmisVal von SPSS hat, dann wird die­ser beim Einlesen durch den SETMISSING -Wert von GESS ersetzt.
  • Alle Variablenwerte aus dem sav-File wer­den dann als gül­tig übertragen.

16.02.2017: neues Statement IGNORESPSSSYSMISVAL

Syntax:

IGNORESPSSSYSMISVAL = [ YES / NO ];
  • Mit die­sem Schalter kann man GESStabs anwei­sen, die MISSING VALUES in einem SPSS-sav-File beim Einlesen mit SPSSINFILE zu ignorieren.
  • Alle Variablenwerte aus dem sav-File wer­den dann als gül­tig übertragen. 

13.02.2017: Bugfix
  • Betrifft: SPSSOUTFILE
  • Die Standardübergabe von VALUELABELS an die SPSSIO-Schnittstelle hat­te sich in eini­gen Fällen als zu lang­sam erwiesen.
  • Diese Übergabe wur­de auf eine ande­re Methode der SPSSIO-API umgestellt.
  • Hierbei ist lei­der ein Filter ver­lo­ren­ge­gan­gen, der Overcodes nicht durch­ge­las­sen hat, sodass Overcodes unnö­tig an SPSS über­tra­gen wurden.
  • Gefixt!

13.02.2017: Neues Statement #DOMACRO4

Syntax:

#domacro4 (<filename>)
  • Einen ähn­li­chen Hintergrund wie #DOMACRO3 hat auch das #DOMACRO4 -Statement.
  • Der Unterschied ist, dass der Name des Makros nicht im Skript fest­ge­legt wird, son­dern als ers­tes Feld in der CSV-Datei benannt wird.
  • Der Aufruf #domacro4(macrocalls4.csv) wür­de bei dem fol­gen­den Inhalt der Datei ‘macrocalls4.csv’
    table;a11;a12;
    tablea;a11;a13;
    tableb;a11;a14;
    tablea;a11;a15;
    tableb;a11;a16;
    table;a11;a17;
    die Existenz von drei Macros vor­aus­set­zen, #table , #tablea und #tableb .
  • Die Existenz geeig­ne­ter Tabelliermakros vor­aus­ge­setzt, kön­nen so auch Mitarbeiter, die mit dem Tabellieren nicht ver­traut sind, eige­ne Tabellen definieren.

13.02.2017: Neues Statement #DOMACRO3

Syntax:

#domacro3 (<macroname> <filename>)
  • Wie auch #DOMACRO und #DOMACRO2 dient das #DOMACRO3 -Statement der wie­der­hol­ten Abarbeitung von Makros.
  • Die Makro-Parameter wer­den hier­bei aus einer CSV-Datei ent­nom­men, die am ein­fachs­ten mit einem Tabellenverarbeitungsprogramm erzeugt wer­den kann.
  • Dadurch bie­tet es eine Schnittstelle zu Mitarbeitern, die nicht im Scripting ver­siert sind.
  • Als ers­ter Parameter wird der Makroname über­ge­ben, als zwei­ter Paramater der Pfad einer CSV-Datei, die zei­len­wei­se die Parameter ent­hält, die an das genann­te Makro über­ge­ben wer­den sollen.
  • Jede Zeile der CSV-Datei gene­riert einen Makro-Aufruf.
  • Die ein­zel­nen Felder ( durch ‘;’ getrennt ) wer­den als die ein­zel­nen Parameter interpretiert.

Ein ein­fa­ches Beispiel:

  • Gegeben sei fol­gen­des Makro:
#macro #table( &1 &2 )
table = &1 by &2;
#endmacro
  • … und fol­gen­der Aufruf:
#domacro3( table, macrocalls.csv )a11;a12;
  • Die CSV-Datei ‘macrocalls.csv’ ent­hält fol­gen­de Zeilen:

a11;a13;
a11;a14;
a11;a15;
a11;a16;
a11;a17;

  • Hierdurch wür­den 6 ver­schie­de­ne Tabellen erzeugt: a11 by a13 , a11 by a14 etc.

13.02.2017: Neues Statement SPSSSINGLEWRITE
  • Die Übergabe von VALUELABELS an SPSS-.sav-Files wur­de aus Performancegründen auf eine SPSS-Methode umge­stellt, die wesent­lich effi­zi­en­ter iden­ti­sche valu­la­bels an meh­re­re Variablen überträgt.
  • Leider führt die­se Methode in eini­gen Fällen zu Fehlernvinnerhalb der SPSS-API.
  • Da die­ser Fehler mit der SO-Bibliothek unter Linux regel­mäßg auf­tritt, wird die­se schnel­le­re Methode unter Linux mit der Voreinstellung ‘NO’ auto­ma­tisch unterbunden.

Syntax:

SPSSSINGLEWRITE = [ YES | NO ] ;

(Voreinstellung: Windows: NO, Linux: YES)


12.01.2017: Bugfix
  • Betrifft CVSINFILE
  • Inhalte von Alpha-Variablen im csv-Infile, die ein Semikolon ent­hal­ten, wur­den vom CVSINFILE falsch inter­pre­tiert: Ein Semikolon wur­de auch inner­halb von durch ” oder ’ ein­ge­schlos­se­nen Strings als csv-Trenner interpretiert.
  • Gefixt!

11.01.2017: Erweiterung der Datenübergabe an GESS ChartFactory 
  • Die Datenübergabe an GESS Chartfactory erfolg­te bis­lang als Text-Tatei in einem csv-ähn­li­chen Format.
  • Dieselbe Information wird jetzt auch als xlsx-Datei gespeichert.
  • Hintergrund: Excel liest beim Einspielen in einem csv-ähn­li­chen Format eigen­wil­lig bei Zahlen mit Dezimalstellen immer min­des­tens zwei Nachkommsstellen, auch wenn nur eine vor­han­den ist…

11.01.2017: Bugfix
  • Betrifft INSTITUTION in HTML.
  • Bei der Ausgabe von Tabellen in HTML wur­de feh­ler­haft die INSTITUTION aus dem Lizenzschlüssel verwendet.
  • Jetzt wird der INSTITUTION -String ver­wen­det, der ggf. durch das INSTITUTION -Statement modi­fi­ziert wurde

22.11.2016: Neue Option CALCCOLLOWACCURACY 
  • CALCCOLLOWACCURACY = CALCulateCOLumnLOWACCURACY

Syntax:

CALCCOLLOWACCURACY = [ YES | NO ] ;
  • Globaler Schalter für den gesam­ten Lauf
  • Bei CALCULATECOLUMN und COLUMNSUMMARY wer­den bei Berechnungen als Default die exak­ten Werte der Zellinhalte herangezogen.
  • Diese kön­nen von den in der Tabelle dar­ge­stell­ten Werten abwei­chen: ein Wert von 2.352121326 wird in der Tabelle z.b. als 2.4 dar­ge­stellt. Wenn man mit Werten mit allen Nachkommastellen rech­net, kann sich z.b. als Differenz ein ande­rer Wert erge­ben, als wenn man nur die aus­ge­wie­se­nen Ziffern heranzieht.
  • Bei man­chen Kunden bewirkt man aber kei­ne Zufriedenheit über eine gestie­ge­ne nume­ri­sche Genauigkeit, son­dern eher Ablehnung und Beharren auf die Anzeige des Taschenrechners.
  • Man kann mit die­sem Schalter die Genauigkeit her­ab­set­zen: dann rech­net GESStabs unge­nau, wie gewünscht.

15.11.2016: Neue Funktion COLUMNSUMMARY

Syntax:

COLUMNSUMMARY <zielspalte>  [ format "#,#..." ] =  <function> [ <option>( {<quellspalte>}*n  );
<zielspalte> ::= < varno code >
<quellspalte> ::= < varno code >
<function> ::= [ MEAN | SUM | MIN | MAX ]
<option>   ::= [ ZEROMISSING | DASHMISSING ]
  • Zusätzlich zur Berechnung von Spalten mit­tels CALCULATECOLUMN gibt es hier­mit eine wei­te­re Funktion, um in Tabellen wei­te­re Spalten aus bereits bestehen­den Spalten zu errechnen.
  • Über belie­bi­ge Quellspalten kann man als Summary den Mittelwert, die Summe, das Minimum oder das Maximum ausgeben.
  • Außerdem kön­nen die Resultate sowohl mit CALCULATECOLUMN als auch mit wei­te­ren COLUMNSUMMARY -Statements wei­ter­ver­ar­bei­tet werden.
  • Mit den Optionen ZEROMISSING und DASHMISSING kann man steu­ern, ob lee­re Zellen in die Berechnung ein­ge­hen oder aus­ge­schlos­sen wer­den sollen.
  • Mit DASHMISSING wer­den Zellen, die mit­tels ‘-’ als leer gekenn­zeicn­het sind, vor den Berechnungen aus­ge­schlos­sen. Hier gibt es kei­ne Automatik, weil es z.b. bei der Berechnung eines MEAN über Prozentwerte sinn­voll sein kann, die­se Zellen als 0 in die Berechnung ein­flie­ßen zu lassen.
  • Bei Prozentwerten in Tabellen wird mit ‘-’ oft eine Zellenbesetzung mit null signa­li­siert. Bei einem MEAN über MEAN steht das ‘-’ hin­ge­gen meist für einen nicht bere­chen­ba­ren Wert. Da der COLUMNSUMMARY -Operator kei­ne Kenntnis über die Natur der Zahlen hat, muss es hier eine Steuerungsmöglichkeit im Script geben.
  • Der Vollständigkeit hal­ber kann man mit­tels ZEROMISSING auch Zellen aus­s­schlie­ßen, in denen eine nume­ri­sche Null steht.
  • Beide Optionen wer­den wohl am häu­figs­ten bei MEAN oder MIN benö­tigt. Bei SUM ist es ja rela­tiv gleich­gül­tig, ob eine Null addiert wird oder nicht.

22.9.2016: Bugfix
  • Betrifft die Font-Selektion bei CALCULATECOLUMN .
  • Zur Definition des Fonts von Werten, die man mit CALCULATECOLUMN berech­net hat, gibt es zwei Methoden, von denen eine aller­dings einen Bug hatte:

a) Hat immer funk­tio­niert: Man ver­gibt einen Font für das Label und erzwingt des­sen Weitergabe mit­tels INHERITFONT [x] . In die­sem Fall wird neben den CELLELEMENT -Font auch der Label-Fontbeeinflusst. Beispiel:

groups kopf1 =
| total : 1 eq 1
| code3 : a12 eq 3
| code4 : a12 eq 4
| code5 : a12 eq 5
| code1 usefont "Times-Roman" size 13  : 2 eq 1  
| code2  : 2 eq 1
;
inheritfont y = no;
inheritfont x = yes;
table = kopf1 by a11;
CALCULATECOLUMN <1 5> = <1 2> + <1 3>;
CALCULATECOLUMN <1 6> = <1 2> - <1 3>;

b) Funktioniert jetzt auch: Man ver­gibt ein CELLELEMENT für das label und defi­niert einen USEFONT für die­ses CELLELEMENT . Beispiel:

groups kopf2 =
| total : 1 eq 1
| code3 : a12 eq 3
| code4 : a12 eq 4
| code5 : a12 eq 5
| code1 cellelements ( physicalrecords ) : 2 eq 1  
| code2 cellelements ( physicalrecords ) : 2 eq 1
;
inheritfont y = no;
inheritfont x = no;
cellelements =  columnpercent;
usefont physicalrecords = "Times-Roman" size 13;
globalcolminimum = 0;
table = kopf2 by a11;
CALCULATECOLUMN <1 5> = <1 2> + <1 3>;
CALCULATECOLUMN <1 6> = <1 2> - <1 3>;

22.9.2016: Bugfix
  • Betrifft COLUMNPERCENT als CELLELEMENT für SORT im TABLE -Statement.
  • Der Sortieralgorithmus berech­ne­te das CELLELEMENT COLUMNPERCENT auf Basis einer nicht kor­rekt ermit­tel­ten Randzelle.
  • Gefixt!

22.9.2016: neues TABLEFORMAT IDENTCHIQNOSIGNIF
  • Wenn man Variablen gegen sich selbst tabel­liert und dabei einen COLCHIQU -Test mit­lau­fen lässt, dann sind die Abweichungen in den Zellen in die­ser Subtabelle nume­risch hoch­si­gni­fi­kant, inhalt­lich aller­dings hoch uninteressant.
  • Es gab den Kundenwunsch, die Signifikanz-Buchstaben in die­sem Fall nicht anzuzeigen.
  • In sol­chen und ähn­li­chen Konstellationen kann man jetzt die Ausführung der CHIQU -Signifikanztests mit dem Tableformat IDENTCHIQNOSIGNIF ausschließen.
  • Für einen Chi²-Test wer­den die Zellen zusam­men­ge­fasst, sodass nur eine 4‑Felder-Tabelle übrig bleibt. Wenn in bei­den Zeilen die­ser Tabelle eine Zelle gleich der Randverteilung ist (was bedeu­tet, dass die ande­re Zelle = 0 sein muss), wird der Signifikanztest unterdrückt.

22.9.2016: Bugfix
  • Betrifft die Übergabe von Tellinhalten aus XTAB-Tabellen an GESS ChartFactory.
  • Das POWERCHART -Statement berech­net die Werte zur Übergabe an PowerPoint selbst. Bei der Ermittlung von Werten für CELLELEMENTS , die auf einer Randzelle beru­hen, tra­ten spo­ra­disch Fehlberechnungen auf.
  • Gefixt!

30.8.2016: zusätzliches Encoding bei CSVINFILE
  • In UTF‑8 enco­dier­te CSV-Dateien dür­fen jetzt auch ein BOM haben.

Syntax:

ENCODING CSVINFILE = UTF8BOM;
  • Wenn das aktu­el­le GESS Q. CSV-Dateien in UTF8BOM schreibt,  erleich­tert dies die Verwendung von GESS Q.-Daten im CSV-Format mit Excel, da Excel UTF‑8 mit BOM erkennt.
  • Ein wesent­li­cher Vorteil von CSV-Dateien ist ja, dass kei­ne Spaltenfixierung besteht, sodass die vari­ie­ren­de phy­si­ka­li­sche Länge von Zeichen kei­ne Probleme berei­tet, und UTF‑8 des­halb uni­ver­sell ein­setz­bar ist.

29.8.2016: Dokumentationsnachtrag: property NOREPORT
  • Eine Variable mit der Property NOREPORT wird in der Ausgabe durch report.exe unterdrückt.

Beispiel-Syntax:

NOREPORT sysnum sysdate systime = NO;

5.8.2016: neues CELLELEMENT MINMAX

Syntax:

MINMAX( <variable> )
  • Je Zelle wer­den das Minimum (0‑Perzentil) und das Maximum (100-Percentil) ermittelt.
  • Minimal- und Maximalwert wer­den nach­ein­an­der, durch einen Punkt getrennt, ausgegeben.
  • FORMAT MINMAX wird ausgewertet.

5.8.2016: neue Signifikanzniveaus

Wenn’s der Wahrheitsfindung dient…

  • Neue Signifikanzniveaus:  SIGNIF68 SIGNIF32AND10
  • SIGNIF68 ist wie SIGNIF90 ein ein­fa­cher Signifikanztest (auf nur einem Level), 68% (bzw. 32%)
  • SIGNIF32AND10 ist wie SIGNIF20AND10 ein Signifikanztest auf zwei Level, 32% (minus­kel) und 10% (majus­kel)

20.7.2016: POSTREPLACE
      • Neue Tabellenoption: POSTREPLACE

Syntax:

POSTREPLACE <cellelement> : <text1> = <text2> [ IF <text3> ]
  • Nachgestellte Option zum TABLE -Statement
  • In der vor­an­ste­hen­den Tabelle wer­den alle Ausgabezeilen zu dem genann­ten CELLELEMENT dar­auf­hin durch­sucht,  ob <text1> in der Ausgabe ent­hal­ten ist. Wenn das der Fall ist, wird die­ser Text durch <text2> ersetzt. Der Suchtext <text1> kann “?” als Wildchar ent­hal­ten. Man kann die­se Ersetzung mit einer zusätz­licheh Bedingung ver­se­hen, dass <text3> eben­falls ent­hal­ten ist.
  • Praktisches Beispiel: In einer Tabelle sol­len  COLUMNPERCENT dar­ge­stellt wer­den. In den Spalten aber, in denen die Basis einen Schwellwert unter­schrei­tet, soll statt­des­sen die abso­lu­te Zellenbesetzung aus­ge­ge­ben wer­den, und die­se soll mit “N=” gekenn­zeich­net wer­den. Dieses Problem wird durch eine Kombination aus POSTPROCESS und POSTREPLACE gelöst:
FORMAT COLUMNPERCENT = '#';
CELLELEMENTS =  COLUMNPERCENT;
TABLE = #K BY A12;
POSTPROCESS COLUMNPERCENT : IF XABS LT 150 THEN SELF = -CELLABS;
POSTREPLACE COLUMNPERCENT : "-" = "N=";
  • Das Ganze ist natür­lich “getrickst”: POSTPROCESS ist eine arith­men­ti­sche Snweisung und kann nur Zahlenwerte beein­fus­sen. Die arith­me­ti­sche Eigenschaft “nega­tiv” über­setzt sich aller­dings in einen Textbestandteil, ein “-” vor der Zahl. Dies kann man dann für eine Textersetzung nutzen.
  • Die Aufgabe war ein­fach, da für COLUMNPERCENT ein Darstellungsformat ohne Dezimalzeichen ver­langt war. Etwas umfang­rei­cher wird es, wenn ein kom­ple­xe­res Format gefor­dert ist:
FORMAT COLUMNPERCENT = '#,#%';
CELLELEMENTS =  COLUMNPERCENT;
TABLE = #K BY A12;
POSTPROCESS COLUMNPERCENT : IF XABS LT 150 THEN SELF = -CELLABS;
POSTREPLACE COLUMNPERCENT : ",?%" = "" IF '-';
POSTREPLACE COLUMNPERCENT : "-" = "N=";
  • POSTPROCESS ist iden­tisch. Mehrere POSTREPLACE wer­den in der­sel­ben Reihenfolge nach­ein­an­der aus­ge­führt, wie sie in Script ste­hen. Das ers­te POSTREPLACE lässt das Dezimalzeichen und %-Zeichen ver­schwin­den, unter der Bedingung, dass ein Minuszeichen gefun­den wur­de. Das zwei­te POSTREPLACE ersetzt wie gehabt das “-” durch “N=”.
  • Nächste Stufe: wenn zusätz­lich die Ausgabe eines Signifikanztests gefor­dert ist:
CELLELEMENTS =  COLPERCANDSIGN;
SUPPRESSIFLESS COLPERCT FRAMECELL X ABSOLUTE = 150;
ZERODASHCHAR = ' ';
TABLE = #K BY A12;
POSTPROCESS COLUMNPERCENT : IF XABS LT 150 THEN SELF = -CELLABS;
POSTREPLACE COLUMNPERCENT : ".?%" = "" IF '-';
POSTREPLACE COLUMNPERCENT : "-" = "N=";
  • Hierzu muss man wis­sen: COLPERCANDSIGN ist eine Textkombination aus COLUMNPERCENT und COLPERCT . Wenn in den Spalten mit n<150 nur die ein­fa­che Häufigkeit als vor­zei­chen­lo­se und nach­kom­ma­freie Zahl ste­hen soll, dann müs­sen wir zunächst die Ausgabe des Signifikanztests in den betref­fen­den Spalten unter­drü­cken. dazu braucht es ein SUPPRESSIFLESS für
    den ver­wen­de­ten Signifikanztest, in die­sem Fall also COLPERCT .
  • Wenn ein CELLELEMENT mit SUPPRESSIFLESS unter­drückt wird, steht an der Stelle i.d.r ein ‘-’. das ist der ZERODASHCHAR , der hier dadurch unsicht­bar wird, dass wir ihn als Blank dar­stel­len. Der Rest ist bekannt: POSTPROCESS und 2x POSTREPLACE wie oben.
  • Alternativ zum “Unsichtbarmachen” durch ein Blank im ZERODASHCHAR hät­te man die­sen natür­lich auch durch ein wei­te­res POSTREPLACE ent­fer­nen können:
POSTREPLACE COLPERCT : "-" = "";

20.6.2016: neue Labeloption CSSCLASS
  • Erweiterung der Ausgabe nach HTML
  • Analog zu USEFONT für PS/PDF-Ausgabe kann man Labels jetzt auch eine CSSCLASS hin­zu­fü­gen. Diese wird nur bei der Ausgabe in eine HTML-Datei berück­sich­tigt. Z.B.:
SINGLEQ q5 =
TEXT "
Frage 5:
Wie gefällt Ihnen Modell XYZ"
20 7 1
LABELS
OVERCODE 1:3 "sehr gut/gut" CSSCLASS overcodePos
OVERCODE 4:6 "sehr schlecht/schlecht" CSSCLASS overcodeNeg
1 'sehr gut'
* 'gut'
* 'teils/teils'
* 'schlecht'
* 'sehr schlecht'
;
  • In der CSS-Datei könn­ten dann für overcodePos und overcodeNeg ent­spre­chen­de Darstellungen ver­ein­bart wer­den. z.b. bold und rot bzw. grün als Textfarben.

20.6.2016: Erweiterung CSVINFILE
CSVINALPHA = <namelist>;
  • Alternativ zur Kennzeichnung von ALPHA-Variablen mit­tels “@” im Variablennamen kann man auch eine Liste von Variablennamen ange­ben. Werden dann im Header eines CSVINFILE ent­spre­chen­de Variablennamen gefun­den, wer­den die­se auch ohne “@” als ALPHA-Variablen verarbeitet.

20.06.2016: Bugfix CSVINFILE
  • Bei meh­re­ren CSVINFILE s konn­ten MULTIQ/DICHOQ zuvie­le ato­ma­re Variablen ent­hal­ten. Das führ­te zwar nicht zu fal­schen Daten, aber zu inef­fi­zi­en­te­ren Strukturen.
  • Gefixt!

6.6.2016: Bugfix INSTANTEXCEL
  • Negative Zellinhalte (z.b. MEAN ) wur­den an Excel in Stringform über­ge­ben anstel­le der übli­chen Binärübertragung mit einem Darstellungsformat. Je nach natio­na­ler Einstellung von Excel und des ver­wen­de­ten Zahlenformats bei der GESS-Tabellenausgabe ergab dies fal­sche Darstellungen.
  • Ist gefixt: nega­ti­ve Ergebnisse wer­den jetzt auch binär übertragen.

2.6.2016: Funktionserweiterung bei OVERVIEW/XOVERVIEW
OVERVIEW ADD = ...
XOVERVIEW ADD = ...
  • OVERVIEW bzw. XOVERVIEW erzeu­gen Übersichtstabellen durch eine ver­bor­ge­ne Übersetzung in TABLE ADD -Statements. D.h. der Compiler erzeugt eine TABLE STRUCTURE und fügt die nume­ri­schen Werte durch TABLE ADD ein.
  • Dies leg­te es nahe, die Zählung wei­te­rer Daten in die von OVERVIEW/XOVERVIEW erzeug­te TABLE STRUCTURE durch OVERVIEW ADD bzw. XOVERVIEW ADD   ana­log zu TABLE ADD ermög­li­chen, z.B.:
OVERVIEW =     #K BY ABSOLUTE MEAN( A12 A13 A14 );
OVERVIEW ADD = #K BY ABSOLUTE MEAN( B12 B13 B14 );

22.2.2016: neues Ausgabeformat für VARLIST: QST

Syntax:

VARLIST = <Dateipfad> QST;
  • Werden die Variablen mit Bezug zu einem spal­ten­fi­xier­ten Datensatz und ihre Verspaltung in einem spe­zi­el­len QST-Format dargestellt.

22.2.2016: CONTENTKEY-Funktion für CHAPTERPAGE
  • CHAPTERPAGE ist for­mal ein Abkömmling des Grundtyps “Tabelle”.
  • Man kann einer CHAPTERPAGE des­halb mit dem CONTENTKEY -Statement auch einen Eintrag für das Inhaltsverzeichnis zuweisen.
  • Dieser Text wird dann in Inhaltsverzeichnisse übernommen.

22.2.2016: ACROSS und EXCELOUTACROSS
  • Neue TABLEFORMATS :  ACROSS und EXCELOUTACROSS
  • Für Nutzer, die nicht davon las­sen kön­nen, ihre Charts von Hand aus Excel-Tabellen abzu­lei­ten, gibt es jetzt die Möglichkeit, die ein­zel­nen CELLELEMENTS neben­ein­an­der anstatt des GESS-Standards unter­ein­an­der anord­nen zu lassen.
  • Das Tableformat EXCELOUTACROSS beschränkt die­sen Umbau auf die Ausgabe in EXCELOUT AS/VIA HTML .
  • Mit dem all­ge­mei­ne­ren ACROSS wer­den auch die CELLELEMENTS in PS-und PDF-Ausgaben neben­ein­an­der dargestellt.

11.2.2016: UNIXTIME und CURRENTMILLIS
  • Neue TIME -Funktionen: UNIXTIME und CURRENTMILLIS
  • Für Berechnungen von ver­stri­che­ner Zeit im zusam­men­hang mit GESS Q.-Files fehl­te eine prak­ti­sche Form der aktu­el­len Uhrzeit in der Form von Sekunden ( UNIXTIME ) oder Millisekunden ( CURRENTMILLIS ) seit 1970 (Unix epoch).
  • Wie TIME sind dies Funktionen inner­halb arith­me­ti­scher Berechnungen, z.B.:
COMPUTE myUNIXTIME = UNIXTIME( 0 );
COMPUTE myCURRENTMILLIS = CURRENTMILLIS( 0 );
  • Das Resultat ent­spricht der von Windows gelie­fer­ten loka­len Zeit.

8.2.2016: PUSHSTARTCOLUMN und POPSTARTCOLUMN
  • Neues Statements: PUSHSTARTCOLUMN und POPSTARTCOLUMN
  • Die GESS-Produkte erzeu­gen auto­ma­tisch wäh­rend des Interpretierens des Scripts eine zusam­men­hän­gen­de Verspaltung im Datensatz. Wenn man nun zwi­schen Frage 1 und Frage 2 eine zusätz­li­che Frage ein­bau­en will, darf die­se die ein­mal ver­wen­de­te Verspaltung nicht verändern.

Aus:

Singleq Frage1 = … *
Singleq Frage2 = … *

Soll wer­den:

Singleq Frage1 = … *
Singleq Zusatzfrage1 = …
MultiQ Zusatzfrage2 = … *
Singleq Frage2 = … *
  • Am ele­gan­tes­ten geht das mit einem Stack. GESS kennt jetzt einen Stack der als nächs­tes zu ver­wen­den­den Spalte.
  • Mit einem Push defi­niert man einen neu­en Anfangswert für die fol­gen­den Fragen, mit dem fol­gen­den Pop wird die Verspaltungsumgebung auf den Zustand vor dem Push zurückgesetzt.
Singleq Frage1 = … *
PushStartColumn = 500;
SingleQ Zusatzfrage1 = … *
MultiQ Zusatzfrage2 = … *
PopStartColumn;
Singleq Frage2 = … *
  • Dies gilt für alle spal­ten­be­zo­ge­nen Fragetypen: SingleQ, SingleQ Alpha, MultiQ und DichoQ.
  • GESStabs kennt die­sen Mechanismus genau­so und errech­net die Herkunftsspalten analog.

27.1.2016: Bugfix DICHOQ NOINPUT
  • Das DICHOQ hat zwar die Eigenschaft NOINPUT syn­tak­tisch akzep­tiert, in der Folge aber in einem GESS Cati-Script die Frage trotz­dem zum Input dargestellt.
  • Ist jetzt gefixt. z.b.:
DICHOQ dichobula = NOINPUT
220 '1'
* '2'
* '3'
* '4'
* '5'
* '7'
* '6'
* '8'
* '9'
* '10'
* '11'
* '12'
* '13'
* '14'
* '15'
* '16'
EQ 1;
COMPUTE LOAD dichobula = bula;
  • Würde die Information bula als dicho­to­me Variable mit 16 mal 0/1 ab Spalte 220 im Ausgabedatensatz dar­stel­len, aber nicht abfragen.

27.1.2016: Erweiterung für SINGLEQ
  • Im SINGLEQ ‑Statement kann man jetzt auch die eigen­schaft NOINPUT ange­ben. z.b.:
SINGLEQ Nachname = ALPHA NOINPUT 200 20;
  • Eine sol­che Variable hät­te in einem GESS Cati-Script die Eigenschaften eines Ausgabebereichs im Datensatz, wür­de aber nicht im schirm zur abfra­ge vorgelegt.
  • Für die­sen Zweck wur­de bis­lang immer die alt­ehr­wür­di­ge Form VARNAME ver­wen­det. Für neue Benutzer ist das schwer zu vermitteln.

27.1.2016: MAKESINGLE

Erweiterung:

MAKESINGLE <newvar> = ALPHA;
  • Zusätzlich zu den Syntaxvarianten:
MAKESINGLE <newvar>;
MAKESINGLE <newvar> [ = <arithm.expression> ];
  • Gibt es jetzt eine zusätz­li­che Variante:
MAKESINGLE <newvar> = ALPHA;
  • Hierbei wird eine neue lee­re SINGLEQ mit der Eigenschaft ALPHA erzeugt.

22.1.2016: CITEFIRSTVAR/CITEALLVARS bei OVERVIEW/XOVERVIEW
  • Im Zusammenhang mit OVERVIEW oder XOVERVIEW läuft die auto­ma­ti­sche Zitierung von Variablentexten ins Leere, da die CONTROLVAR , die die Grundlage der Zitierung ist, in bei­den Fällen eine syn­the­ti­sche Variable unbe­kann­ten Namens ist, die wäh­rend der Interpretation des OVERVIEW-Statements erst gebil­det wird. Daher kann man die­ser Variablen auch kei­nen Text zum Zitieren beigeben.
  • Die Verarbeitung der OVERVIEW -Statements ist jetzt so erwei­tert, dass der Vartext der ers­ten Variablen in der Variablenliste der inter­nen syn­the­ti­schen Variable zuge­fügt wird.
  • Langer Rede, kur­zer Sinn: CITEFIRSTVAR und Konsorten funk­tio­nie­ren in die­sem Zusammenhang jetzt auch.

22.1.2016: Interpretation von OPENQ-Files
  • Historisch gewach­sen: Um die Arbeit mit OPENQ -Files zu ver­ein­fa­chen, gab es die Konvention, kur­ze Zeilen kur­zer­hand aus­zu­schlie­ßen und kom­men­tar­los nicht zu ver­ar­bei­ten. OPENQ-Files mit weni­ger als 10 Zeichen gal­ten als Schrott. Von GESS pro­du­zier­te OPENQ -Files sind immer länger.
  • Man kann die­ses Format aber natür­lich auch anders nut­zen und da sind Kunden an die­se Untergrenze gesto­ßen: OPENQ -Zeilen mit weni­ger als 10 Zeichen sind dabei untergegangen.
  • Da OPENQ -Files oft nach Bearbeitung in Editoren oder Tabellenkalkulationsprogrammen Schrott-Zeilen ent­hal­ten, ist die­ser Mechanismus grund­sätz­lich erhaltenswert.
  • Die Untergrenze von 10 Zeichen ist aber wohl zu klein, wenn ein­stel­li­ge Variablennamen, ein­stel­li­ge Fallnummern und ein­stel­li­ge Codes ver­wen­det werden.
  • Die kür­zest mög­li­che OPENQ -Zeile dürf­te sein:
  • Das macht mini­mal 7 Zeichen. Wenn die Files außer­halb von GESS erzeugt wer­den, mag auch das Trennzeichen nach dem Code feh­len, also mini­mal 6 Zeichen.
  • Zeilen wer­den nur noch dann geschrot­tet, wenn sie weni­ger als 6 Zeichen enthalten.

22.1.2016: Neues CELLELEMENT: PHI
  • Der 4‑Felder-Phi-Koeffizient misst den Zusammenhang zwi­schen Ausprägungen.
  • Dieses CELLELEMENT dürf­te nur in spe­zi­el­len Fällen sinn­voll sein, ent­sprach aber einem Kundenwunsch.
  • Wenn man Mehrfachnennungsvariablen tabel­liert, kann man die ein­zel­nen Ausprägungen ja als unab­hän­gi­ge 0/1‑Variablen betrach­ten. Damit eröff­net sich die Möglichkeit, die zugrun­de lie­gen­de 4‑Felder-Tabelle zu rekon­stru­ie­ren, und auf die­ser Basis den Koeffizienten zu bestimmen.
  • Ein Beispiel: Wenn Befragte meh­re­re Nennungen für Entscheidungsgründe abge­ben kön­nen, dann kann man die­se Variable gegen sich selbst tabel­lie­ren. Den Phi-Koeffizienten kann man dann als den Zusammenhang zwi­schen den Gründen inter­pre­tie­ren: Ein nega­ti­ver Koeffizient z.b. wür­de anzei­gen, dass die Befragten, die Grund A genannt haben, sel­te­ner Grund B ange­ben. usw..

4.1.2016: Neues CELLELEMENT: SPACE

Syntax:

SPACE( <variable > )
  • Die Aufgabe von SPACE (es könn­te auch EMPTY hei­ßen) ist ledig­lich, eine lee­re Zelle zu produzieren.
  • Diese wie­der­um wer­den u.U. benö­tigt, um lee­re Zeilen bzw. Spalten in Tabellen für PowerPoint zu erzeugen.

Für Neuigkeiten aus 2015 und frü­her, sie­he READ.ME!

  • Support, Neuigkeiten und Dokumentation
  • Demos und Videos
  • Tutorials und Handbücher
  • Downloads
  • Neuigkeiten
    • GESStabs
    • GESS Q.
    • GESS ChartFactory
  • Schulungen

Neueste Beiträge

  • Es lebe die Tabelle
  • GESS Q. abseits der klassischen Befragung
  • GESStabs Handbuch 5.2

Sie wurden angerufen?

Wir führen Telefonumfragen für die Markt- und Sozialforschung durch. Als Mitglied des Bundesverbandes der deutschen Marktforscher halten wir uns streng an die Richtlinien des Verbandes und des Datenschutzes.
Ihre Meinung ist uns wichtig!
Haben Sie Fragen oder Feedback zu unseren Umfragen? Kontaktieren Sie uns!

Kontakt

GESS Gesellschaft für Software in der Sozialforschung mbH
GESS Phone & Field Marktforschung GmbH
Waterloohain 6-8
22769 Hamburg
Telefon: +49 40 853 753 0
Telefax: +49 40 853 753 33

Senden Sie uns Ihre Anfrage an: info@gessgroup.de
© 2016-2021 GESS Gesellschaft für Software in der Sozialforschung mbH • Impressum • Datenschutzerklärung
  • Startseite
  • Software
    • GESStabs
    • GESS Q.
    • GESS ChartFactory
    • GESS Cati
    • Support, Neuigkeiten und Dokumentation
  • Umfragen und Analysen
    • Telefonumfragen
    • Onlineumfragen
    • Offlineumfragen
    • Mixed-Mode-Design
    • Datenverarbeitung und Analysen
  • Blog
  • Unternehmen
    • Engagement
    • Jobs
  • Referenzen
    • Kunden und Partner
    • Projekte
  • Kontakt
    • Impressum
    • Datenschutzerklärung