ColumnBinary-Format

<< Click to Display Table of Contents >>

Navigation:  Anhang > Historisches >

ColumnBinary-Format

ColumnBinary (ein Abbild der 12 Lochpositionen in den Spalten in der historischen Lochkarte) spielte in der Mitte des vergangenen Jahrhunderts eine wichtige Rolle in der Marktforschung  und wird von GESStabs nach wie vor unterstützt.


ColBinInfile

Syntax:

COLBININFILE = <filename>; 

Eingabefile von Daten im COLumn-BINary-Format. (Hier feiert die Lochkarte mit ihren 12 Lochpositionen fröhliche virtuelle Auferstehung.)


ColBinInCard(s)

Definition für den zu lesenden Datensatz im COLBIN-Format.


ColBinIn

Syntax:

COLBININ <varname> = { | value < column : code }*n }; 

Mit dem COLBININ-Statement »bindet« man einzelne Ausprägungen einer bereits bestehenden Variable an bestimmte Bits in einer oder mehreren COLBIN-Spalten. Die folgende Sequenz generiert die Variable Alter und setzt die Ausprägung in Abhängigkeit von bestimmten Bits in zwei COLBIN-Spalten.

Beispiel:

VARNAME = Alter; 

COLBININ Alter =

| 1 < 22:9

| 2 < 22:X

| 3 < 22:Y

| 4 < 23:0

| 5 < 23:1

| 6 < 23:3;

Wenn mehrere der Bits 22:9 bis 23:3 gesetzt sind, hat die Variable die zuletzt gefundene Ausprägung. 23:1 hätte also Vorrang vor 23:0 oder 22:Y.


ColBinInCols

Syntax:

COLBININCOLS = <value>; 


ColBinInSwapped

Syntax:

COLBININSWAPPED = [ YES | NO ]; 

COLBIN-Daten sind u.U. »geswapped«, d.h. die Reihenfolge der HIGH- und LOW-Bytes entspricht nicht der INTEL-Reihenfolge für die 8086-Prozessorfamilie. In dem Fall kann man GESStabs veranlassen, die Bytes innerhalb der 16-Bit-Worte vor der Verarbeitung zu vertauschen.


QuantumInChars

Syntax:

QUANTUMINCHARS = <filename>; 

Neben der oben erwähnten Methode, Mehrfachnennungen mit »*« zu kennzeichnen und an Zeilenende das Bitmuster abzulegen, gibt es eine weitere Möglichkeit, Softwareentwickler zu quälen: bestimmte Bitmuster (nicht alle, aber einige) kann man in die Buchstaben des Alphabets und in Sonderzeichen kodieren. So bedeutet dann z.B. das %-Zeichen die Codes 0, 4 und 8. das große S bedeutet 0 und 2. Hierfür gibt es eine Textdatei Quantumcodes.ini, die man bei GESS bekommen kann. Mit diesem Statement kann die Interpretation einbauen.


Binary

Variableneigenschaft einer SingleQ

Syntax:

SINGLEQ <varname> =
[ TITLE <titletext> ] [ ALPHA ] [ [ start | * ] [ width | BINARY ] ]
[ LABELS [ AS <varname > | COPY <varname> | MAKE <number> | 
{ LabelEntry }*n } ];

BINARY anstelle der Spaltenbreite: dies darf nur im Zusammenhang mit einem COLBININFILE stehen. Dann werden die 16 Bit der COLBIN-Spalte als vorzeichenlose Binärzahl interpretiert, deren Zahlenwert wird ermittelt und der Variablen zugewiesen.


DichoQ

Bei Input aus einer COLBIN-Datei gilt eine etwas andere als die übliche Syntax zur Bildung einer DichoQ.

Syntax:

DICHOQ <varname> = [ TITLE <titlestring> ] { column:value <labeltext> }*n ;

"value" kann die Werte 0 .. 9, X und Y annehmen. Hiermit sind die Bits in einer COLBIN-Spalte bezeichnet.

Beispiel:

DICHOQ WichtThem =

TITLE "Wichtige Themen des Wahlkampfs"

22:0 "Gesundheitspolitik"

22:1 "Asylpolitik"

22:X "Schulpolitik"

22:Y "Wirtschaft";

Die Sternchen-Schreibweise für anschließende Spalten findet bei COLBIN keine Verwendung.


ColBinOutFile

Ausgabefile von Daten im COLumn-BINary-Format. Nähere Erläuterungen zu COLBIN-Daten siehe oben.


ColBinOutCard(s)

Syntax: entspricht Card(s).

Anzahl der Karten und Voreinstellung der jetzt aktuellen Karte für die Ausgabe von Variablen im COLBIN-Format.


ColBinOut

Das Pendant zu COLBININ ist COLBINOUT. In der ersten Form ist es sehr ähnlich dem oben beschriebenen COLBININ:

Beispiel:

COLBINOUT Alter =

| 1 > 22:9

| 2 > 22:X

| 3 > 22:Y

| 4 > 23:0

| 5 > 23:1

| 6 > 23:3; 

Mit dem COLBINOUT-Statement kann man auch VARFAMILYs und VARGROUPs auf COLBIN-Multipunches abbilden, denn bei der Variablen kann es sich auch um Mehrfachnennungsvariablen handeln. Bei Variablenfamilien ist die Zuordnung der Ausprägungen trivial; bei VARGROUPs werden die einzelnen Variablen virtuell auf die Ausprägungen 1, 2, .... n abgebildet.
Zusätzlich gibt es eine weitere Form des COLBINOUT-Statements:
Beispiel:

COLBINOUT Alter = 16; 

Die Ausprägungen 0 .. 9 der Variablen Alter werden in der Spalte 16 abgelegt. Bei allen anderen Werte bleibt die Spalte 16 leer.

Man kann auch eine ganze Serie von Variablen in aufeinanderfolgende COLBIN-Spalten ablegen:

Beispiel:

COLBINOUT Item1 TO Item20 = 41; 

Hiermit werden die Variablen Item1 bis Item20 in die Spalten 41 bis 60 verfrachtet. Ganze positive Zahlen können in mehrspaltige COLBIN-Felder abgelegt werden:

COLBINOUT Item1 TO Item10 = 11 2; 

Die Itemvariablen werden, soweit ihre Werte ganzzahlig zwischen 0 und 99 liegen, in die Spalten 11 und 12, 13 und 14, usw. bis 29 und 30 abgelegt.

Für zwei häufige Formen der Kodierung gibt es spezielle Bit-Abbildungsmuster, mit denen man typische Codepläne einfacher abbilden kann.

Syntax:

COLBINOUT <varlist> = <start> <width> 
BITGROUP [ 10 | 12 ]; 

Bei BITGROUP 10 wird folgende Abbildung realisiert:

1. Spalte (<start>)

1 > 1

 

2 > 2

 

....

 

9 > 9

 

 

2. Spalte (bis len)

10 > 0

 

11 > 1

 

....

 

19 > 9

usw.

Bei BITGROUP 12 wird folgende Abbildung realisiert:

1. Spalte (<start>)

1 > 1

 

2 > 2

 

....

 

9 > 9

 

10 > 0

 

11 > X

 

12 > Y

 

.

2. Spalte (bis len)

13 > 1

 

14 > 2

 

...

 

21 > 9

 

22 > 0

 

23 > X

 

24 > Y

usw.


ColBinOutCols

Syntax:

COLBINOUTCOLS = <value>; 

Ursprünglich waren Column-Binary Zeilen immer 80 »Spalten« lang. Physikalisch entspricht dies einer Folge von 80 16-Bit-Words (also 160 Bytes), in denen jeweils die 12 möglichen Lochungen einer Lochkarte (genau, da kommt das her) gespeichert sind, 4 Bits je Word bleiben ungenutzt. Im Anschluss stehen häufig noch 2 Bytes mit CR und LF, die das jeweilige Record als »Zeile« begrenzen. Physikalisch ist ein COLBIN-Record also meistens 162, in einigen Fällen 160 Bytes lang.

Diese Längenbegrenzung fiel dann im Zusammenhang mit den QUANTUM-Zeilen; bei diesen wurden alle Singlepunches als 1 Byte geschrieben (wie in einer ASCII-Datei), alle Multipunches wurden durch ein * ersetzt, und im Anschluss an die Zeile kam zunächst ein Trennzeichen (HEX 7F), und dann in der Reihenfolge der durch * ersetzten Werte kamen je 2 Bytes mit COLBIN.  Diese Zeilen wurden dann bald länger als 80 Zeichen. In diesen Fällen nimmt GESStabs die Längenanpassung automatisch vor; da die CR/LF Sequenz am Zeilenende erkannt werden kann.

Inzwischen tauchen aber auch Datensätze auf, die im ursprünglichen binären COLBIN-Format beliebige Längen haben können. Diese Datensätze haben willkürliche fixe Record-Längen, die man den binären Daten nicht entnehmen kann. Um die Einleseprozedur hierauf anzupassen, verwendet man das COLBININCOLS-Statement.

Ein Datensatz mit 900 Byte physikalischer Satzlänge wäre demnach mit

COLBININCOLS = 450; 

zu vereinbaren (2 Bytes je Colbin-Spalte). Maximalwert: 800.


ColBinOutSwapped

Syntax:

COLBINOUTSWAPPED = [ YES | NO ]; 

COLBIN-Daten müssen u.U. auch bei der Ausgabe »geswapped« werden, d.h. die Reihenfolge der HIGH- und LOW-Bytes muss umgedreht werden. In dem Fall kann man GESStabs veranlassen, die Bytes innerhalb der 16-Bit-Worte vor der Speicherung zu vertauschen.


ColBinCRLF

Syntax:

COLBINCRLF = [ YES | NO ]; 

In manchen Installationen werden COLBIN-Datensätze als 160 Bytes abgelegt, in anderen werden sie als »Zeilen« am Ende mit einer CR/LF-Sequenz abgeschlossen. Im letzteren Fall sind die COLBIN-Records 162 Bytes lang. Gilt für Input und Output gleichermaßen.


ColBinFormat

Syntax:

COLBINFORMAT = <Colbinformatname>; 

Anpassungen an spezielle Column-Binary-Formate werden mit dem COLBINFORMAT-Statement erreicht. Alle Voreinstellungen gelten sowohl für Input als auch für Output. Für kundenspezifische COLBIN-Formatnamen, siehe (Kunden-)Spezifika.


Weiteres

ColumnOffSet

IOCheck

NoIOCheck