Ein Ausrufezeichen (
Steuerzeichen (ASCII-Kode<32, z.B. TAB, ESC, CR, LF, FF, ... ) werden außerhalb von Zeichenketten durch Leerzeichen ersetzt. Mehrfache Leerzeichen werden außerhalb von Zeichenketten (siehe unten) durch ein einzelnes Leerzeichen ersetzt. Leerzeichen oder Tabulatoren am Zeilenanfang oder Zeilenende und auch ganze Leerzeilen werden ignoriert.
Ein Backslash (
Zeilen, die mit dem Nummer-Symbol (
Nicht-Kommandozeilen werden in die Ausgabedatei kopiert. Genaure Details werden im nächsten Abschnitt beschrieben.
| DEBUG-INFO: Text unvollständig/fehlerhaft |
| --- ??? --- |
Die Steuerdatei wird im Initialisierungsmodus abgearbeitet: - Es werden Einstellungen zum Einlesen der Dateien vorgenommen. - Die Kommandozeilenparameter können verarbeitet. - Eigene Kommandozeilen können zugefügt werden. - Durch das Kommando 'SCANFILES' werden die angegebenen Eingabe- dateien ausgewertet. (-> Schritt 4) Die Eingabedateien werden ausgewertet. Die Steuerdatei wird im Auswertungsmodus abgearbeitet: - Definition von selections, transformations, playercalculations, gamecalculations, printings - Eingabetabellen werden selektiert. - Auswertungsmodi werden definiert. - Statistische Auswertungen werden durchgeführt. - Ergebnisse werden auf Dateien ausgegeben.
| --- ??? --- |
DEFINE <objekt> <name>
Es wird ein Object definiert, welches später mit dem angegebenen Namen
referenziert werden kann. Durch die wiederholte Definition eines Objektes
kann dieses geändert oder ergänzt werden.
DEFINE OPTIONS
Es können weitere Optionen definiert werden, die alle mit '-', '+' oder
'/' eingeleitet werden können. Dabei werden fünf Arten von Optionen
unterstützt, die verschiedene Arten von Parametern erwarten:
VOID <options>...
Definition von Optionen ohne Parameter.
CHARACTER <options>...
Definition von Optionen, die genau ein Zeichen als Parameter erwarten.
TEXT <options>...
Definition von Optionen, die eine beliebig langen Text als
Parameter erwarten.
INTEGER <options>...
Definition von Optionen, die eine Ganzzahl als Parameter erwarten.
FLOATINGPOINT <options>...
Definition von Optionen, die eine Fließkommazahl als Parameter
erwarten.
Als Optionen dürfen Groß- und Kleinbuchstaben sowie Ziffern verwendet
werden. Für jede Option, vordefiniert oder durch DEFINE OPTIONS definiert,
werden zwei Symbole definiert: OPT$* und PARM$*. Anstatt '*' wird der
Buchstabe oder die Ziffer verwendet, wobei bei Großbuchstaben der Buchstabe
doppelt verwendet wird. Näheres ist im Abschnitt `Symboldefinitionen'
beschrieben.
DEFINE SCANMODE <name> [ <dateinamen>... ]
Es wird ein Modus zum Lesen einer Datei mit den Spieldaten festgelegt.
Hinter dem Namen kann eine Liste mit Dateinamen und Dateimasken mit
haltern angegeben werden, auf die dieser Eingabemodus angewendet wird.
Näheres ist im Abschnitt `Dateiformate für Datendateien' beschrieben.
Die Definition von Eingabemodi wird durch END beendet, wobei die folgenden
Kommandos möglich sind:
MODE 18XX
MODE RANGLIST
Die Eingabedateien können grundsätzlich im 18XX-Format oder im
RANGLIST-Format vorliegen. Dieses wird im Abschnitt `Dateiformate
für Datendateien' näher beschrieben.
PREOFF
Mit diesem Befehl wird die Preprozessorbearbeitung (#if,#include,
Kommentare,...) für diesen ScanMode abgeschaltet.
PRECHAR <char>
Es wird ein Zeichen für die Einleitung von Preprozessorbefehlen
(#if,#include,...) festgelegt. (Standard='#')
PRECOMMENT <string1> <string2> <string3>
Es werden die Zeichen für Erkennung von Kommentaren durch den Prepro-
zessor festgelegt. Dabei werden maximal die ersten beiden Zeichen
eines jeden Strings verwendet. String-1 gibt das Zeichen oder die
Zeichenkombination für den Beginn eines Kommentares an, String-2 für
das Ende eines Kommentares und String-3 für einen Kommentares bis zum
Zeilenende. Als Standard wird '{', '}' und '!' verwendet.
PRETIE <string>
Hiermit wird das Zeichen oder die Zeichenkombination aus zwei Zeichen
festgelegt, mit welchen mehrere Zeilen zu einer logischen Zeile
zusammengefaßt werden können. Dazu muß es nach dem Entfernen von
Kommentaren als letztes in einer Zeile stehen. Als Standard wird
'\' verwendet.
READPOINTS <formel>
Es wird eine Formel zur Auswahl der zu verwendenen Punktezahl
festgelegt. Ohne Angabe wird 'P.1' als Formel verwendet.
(siehe auch Abschnitte `Dateiformate für Datendateien' und `Formeln')
TRANSFORMATION <formel>
Es wird eine Formel zur Eingangstransformation der Spielpunkte
festgelegt. Ohne Angabe wird 'P' als Formel verwendet.
(siehe auch Abschnitte `Dateiformate für Datendateien' und `Formeln')
SIGN <Zeichen>
Mit dem Zeichen wird ein Scanmodus erkannt. Dazu wird aus der
Quelldatei das erste Zeichen verglichen, das kein Kommentar und kein
Leerzeichen ist.
END
Die Definition von SCANMODE wird beendet.
DEFINE SELECTION <name>
Es wird eine Formel für die Auswahl von Ergebnistabellen festgelegt.
Die Verwendung der Formel ist im Abschnitt `Schritte der Berechnung'
und die Details dieser Formel im Abschnitt `Formeln' beschrieben.
SELECT <formel>
Es wird eine Formel zur Auswahl der Ergebnistabellen festgelegt.
Ohne Angabe wird '1.0' als Formel verwendet.
END
Die Definition von SELECTION wird beendet.
DEFINE TRANSFORMATION <name>
Es wird eine Formel zur Transformation der Spielerpunkte festgelegt.
Mehrere solcher Transformationen können vor der eigentlichen Ausweertung
durchgeführt werden.
Die Verwendung der Formel ist im Abschnitt `Schritte der Berechnung'
und die Details dieser Formel im Abschnitt `Formeln' beschrieben.
VARIABLE <variablendefinition>
Es können belibieg viele Variablendefinitionen eingefügt werden,
die alle unmittelbar vor der Berechnung der Formel ausgeführt werden.
Details hierzu sind im Abschnitt `Variablen' beschrieben.
TRANSFORM <formel>
Definition der Formel; ohne Angabe wird 'P/MEAN' verwendet.
END
Die Definition von TRANSFORMATION wird beendet.
DEFINE PLAYERLEVEL <name>
Es wird eine Formel zur Berechnung der Spielerstärke festgelegt.
Die Verwendung der Formel ist im Abschnitt `Schritte der Berechnung'
und die Details dieser Formel im Abschnitt `Formeln' beschrieben.
CALCULATE <formel>
Definition der Formel; ohne Angabe wird 'SUM/WSUM' verwendet.
END
Die Definition von PLAYERLEVEL wird beendet.
DEFINE GAMELEVEL <name>
Es wird eine Formel zur Berechnung der subjektiven Partienstärke festge-
legt. Die Verwendung der Formel ist im Abschnitt `Schritte der Berechnung'
und die Details dieser Formel im Abschnitt `Formeln' beschrieben.
CALCULATE <formel>
Definition der Formel;
ohne Angabe wird 'WEIGHT * P * (SUMLEVEL-LEVEL) / (N-1)' verwendet.
END
Die Definition von GAMELEVEL wird beendet.
DEFINE ITERATION <name>
Hiermit werden die Parameter für das itterarive Verfahren festgelegt.
Bei Ablauf der Iteraton kann diese durch das Drücken des Leerzeichens
jederzeit vorzeitig beendet werden.
MINIMUM <numerischer_Ausdruck>
Minimale Anzahl von Iterationsschritten, die auf jedenfall
durchgeführt werden müssen. Bereich: 1 .. 1000000
MAXIMUM <numerischer_Ausdruck>
Maximale Anzahl von Iterationsschritten, nach dem die Iteration
beendet wird. Bereich: MINIMUM .. 1000000
EPSILON <numerischer_Ausdruck>
Bei jedem Iterationsschritt wird das Quadrat der maximalen Änderung
eines Stärkewertes berechnet. Ist dieser Wert kleiner als EPSILON,
dann wird die Iteration vorzeitig beendet. Wegen der Genauigkeit
der Fließkommazahlen sind nur Zahlen aus dem Bereich 1 bis 1e-30
sinnvoll. Der Wert '0' schaltet diese Funktionalität ab.
END
Die Definition von ITERATION wird beendet.
DEFINE SORTMODE <name>
Es wird eine Formel für die Berechnung der Reihenfolge der Spieler bei der
Ausgabe festgelgt. Die Verwendung der Formel ist im Abschnitt `Schritte
der Berechnung'und die Details dieser Formel im Abschnitt `Formeln'
beschrieben.
SORT <formel>
Definition der Formel; ohne Angabe wird 'LEVEL' verwendet.
REVERS
REVERS <Boolscher_Ausdruck>
Die Sortierung erfolgt normalerweise von großen nach kleinen Werten.
Nach Angabe von Revers ohne Paramter oder mit einem Wert >0 erfolgt
die Sortierung von kleinen nach großen Werten, was z.B. für die
alphabetische Sortierrrung der Spieler nötig ist.
END
Die Definition von SORTMODE wird beendet.
DEFINE PRINTGAME <name>
DEFINE PRINTPLAYER <name>
Es werden Formeln für die Ausgabe von Partienlisten (PRINTGAME) und
Spielerlisten (PRINTPLAYER) festgelegt. Die Formeln liefern als Ergebnis
eine zeichenkette, die dann in die Ausgabedatei geschrieben wird.
Die Verwendung der Formeln ist im Abschnitt `Schritte der Berechnung'
und die Details dieser Formeln im Abschnitt `Formeln' beschrieben.
FILENAME <dateiname>
Es wird ein Datei festgelegt, in die die Ausgabe geschrieben werden
soll. Dieser Befehl impliziert den Befehl OVERWRITE.
Ohne Angabe einer Zieldatei wird die Ausgabe in die durch das
Kommando PRINTFILE spezifizierte Datei geschrieben.
OVERWRITE
APPEND
Die beiden Varianten unterscheiden sich nur, wenn die Zieldatei, die
durch FILENAME spezifiziert worden ist, bereits existiert. Durch
OVERWRITE wird diese Datei überschrieben, durch APPEND wird das
Ergebnis am Dateiende angahängt. Bei mehrfacher Verwendung dieser
beiden Kommandos ist nur die letzte gültig. Bei der zweiten Verwendung
des gleichen Printmodusses wird automatisch APPEND verwendet.
SORT
UNSORT
Die Sortierung der Ausgabeliste wird ein- bzw. ausgeschaltet. Bei
mehrfacher Verwendung dieser beiden Kommandos ist nur die letzte
gültig. Voreingestellt ist SORT.
HEADER <formel>
Definition der Formel für den Tabellenkopf;
ohne Angabe wird '' verwendet.
PLAYER <formel>
Definition der Formel, die für jeden Spieler angewendet wird;
ohne Angabe wird 'print('%4d. %-25s %8.3f',I,NAME,LEVEL)' verwendet.
TRAILOR <formel>
Definition der Formel für den Tabellenfuß;
ohne Angabe wird '' verwendet.
END
Die Definition von PRINTGAME bzw. PRINTPLAYER wird beendet.
DEFINE JOB <name>
Es wird ein MACRO definiert: Der Text zwischen 'DEFINE JOB <name>' und
'ENDJOB' bzw. 'JOBEND' innerhalb einer Datei wird markiert. Durch einen
Aufruf von 'JOB <name>' wird der Text wie eine Include-Datei in die
in die gerade bearbeitete Steuerdatei eingefügt. Bei der Definition eines
Jobs werden alle Preprozessor-Anweisungen ignoriert -- sie werden aber
bei der Ausführung beachtet.
Jobs können auch über die Preprozessoranweisung '#MACRO' definiert werden.
JOB [?] <name>
JOB [?] <name> ()
JOB [?] <name> (P1)
JOB [?] <name> (P1,P2,...)
Ein zuvor mittels 'DEFINE JOB <name>' definierter Job wird ausgeführt.
Einem Job können auch Parameter übergeben werden. Der x-te Parameter
wird in die Variable '$x' übertragen. Die Variable ist auf jeden Fall
definiert und '$N' enthält die Anzahl der Parameter. Die Parameter
'$x' mit x aus $N..20 werden auf den Wert NONE gesetzt.
Jobs bzw. Macros können auch über die Preprozessoranweisung '#CALL'
bzw. '#:' aufgerufen werden.
PSET <Symbole...>
PSET <Symbol> = <numerischer_Ausdruck> [; ...]
..... ??? .....
PSET und #PDEFINE sind identisch.
SET <Symbole...>
SET <Symbol> = <numerischer_Ausdruck> [; ...]
Es können Symbole definiert werden. Symbole sind Zeichenketten, die
aus Buchstaben, Ziffern und den Sonderzeichen '$', '_', '-' und '+'
bestehen, wobei Großschreibung keine Rolle spielt.
Die einzelnen Symbole können durch Kommata oder Semikola getrennt sein.
Die Symbole erhalten den Wert '0'. Um ihnen andere Werte zuzuweisen, kann
nach einem '=', ':' oder ':=' ein numerischer Ausdruck folgen. Die
Definition und die Zuweisung eines Wertes erfolgt erst nach der Berechnung
des folgenden Ausdruckes. Sollen nach einem solchen Ausdruck weitere
Definitionen folgen, so ist das ';' als Trennzeichen zwingend. Bereits
definierte Symbole erhalten einen neuen Wert.
SET und #DEFINE sind identisch.
GSET <Symbole...>
GSET <Symbol> = <numerischer_Ausdruck> [; ...]
GSET arbeitet wie SET, es werden jedoch globale Variablen gesetzt.
GSET und #GDEFINE sind identisch. (Vergleiche #DEFINE ind #GDEFINE)
COMMANDLINE
Die Parameterzeile bei Aufruf des Programmes wird ausgewertet.
Dieser Befehl ist nur im Initialisierungsmodus möglich.
PARAMETER <text>
Der folgende Text wird wie eine Parameterzeile bei Aufruf des Programmes
behandelt und entsprechend ausgewertet. Damit können weitere Optionen und
weitere Dateinamen von Quelldateien spezifiziert werden.
Dieser Befehl ist nur im Initialisierungsmodus möglich.
SCANFILES
Der Initialisierungsmodus wird beendet, alle Quelldateien werden nach
Ergebnistabellen durchsucht. Anschließend wird der Bearbeitungsmodus
aktiviert. Dieser Befehl ist daher nur im Initialisierungsmodus möglich.
OUTPUT [+] <Zieldatei>
Es wird eine Datei für die allgemeine Ausgabe definiert. Durch die
Verwendung von '+' vor dem Dateinamen wird eine bereits existierende Datei
nicht überschrieben, sondern am Dateiende ergänzt. Genaueres über die
Ausgabedateien ist im Abschnitt `Ausgabedateien' beschrieben.
ERRORLOG [+] <Dateiname>
Es wird eine Datei für Fehlermeldungen und Logging definiert. Durch die
Verwendung von '+' vor dem Dateinamen wird eine bereits existierende Datei
nicht überschrieben, sondern am Dateiende ergänzt. Genaueres über die
Ausgabedateien ist im Abschnitt `Ausgabedateien' beschrieben.
PRINTFILE [/] [+] <Dateiname>
Es wird eine Datei für die Ausgabe gemäß PRINTGAME und PRINTPLAYER
definiert. Durch die Verwendung von '+' vor dem Dateinamen wird eine
bereits existierende Datei nicht überschrieben, sondern am Dateiende
ergänzt. Normmalerweise wird als erstes der Programmtitel in die Datei
geschrieben. Durch die Verwendung von '/' wird der Programmtitel nicht
geschrieben. Genaueres über die Ausgabedateien ist im Abschnitt
`Ausgabedateien' beschrieben.
ECHO <String_Ausdruck>
Das Ergebnis des Stringausdruckes wird in die gerade aktuelle Druckdatei
(siehe PRINTFILE) geschrieben. Ist keine solche definiert, dann wird das
Ergebnis in die Standardausgabedatei (siehe OUTPUT) geschrieben.
MESSAGE <String_Ausdruck>
Dieses Nachricht erscheint auf dem Bildschirm und in der Datei für
Fehlermeldungen (siehe ERRORLOG).
TIMESTAMP
Sowohl im Ausgabekanal (->OUTPUT) als auch auf dem Fehlerkanal (->ERRORLOG)
wird das aktuelle Datum mit der aktuellen Uhrzeit abgelegt.
LOGGING
Es wird festgelegt, welche Kontrollausgaben vorgenommen werden sollen.
Dieses kann einzeln oder auch in Ebenen erfolgen. In die Fehlerdatei
(-->ERRORLOG) werden immer alle Ausgaben gemäß Modus ALL geschrieben, auf
den Bildschirm nur die spezifizierten. Über die Kommandozeilenoption -l#
kann eine Log-Level eingestellt werden. Es existieren die folgenden
Einstellungen:
NONE := LEVEL0
LEVEL0 := %
LEVEL1 := ERRORS
LEVEL2 := LEVEL1 + INFORMATIONS
LEVEL3 := LEVEL2 + TITLE + SUMMARY
LEVEL4 := LEVEL3 + INPUTS + OUTPUTS
LEVEL5 := LEVEL4 + PRINTINGS
LEVEL6 := LEVEL5 + CALCULATIONS
LEVEL7 := LEVEL6 + ITERATIONS
LEVEL8 := LEVEL7 + DEFINITIONS
LEVEL9 := LEVEL8 + GAMES
ALL := LEVEL9
Die Einstellungen ermöglichen die folgenden Ausgaben:
ERRORS Ausgabe von Fehlermeldungen
INFORMATIONS Ausgabe von Informationen über den Befehl MESSAGE
TITLE Ausgabe des Programmtitels
SUMMARY Ausgabe von Speicherbedarf und anderen statistischen Angaben
INPUTS Ausgabe von Informationen über einzulesende Dateien
OUTPUTS Ausgabe von Informationen über Ausgabedateien
PRINTINGS Ausgabe von Informationen über die Tabellenausgabe
CALCULATIONS Ausgabe von Informationen über die Berechnungen
ITERATIONS Ausgabe von Infos über das Fortschreiten der Iteration
DEFINITIONS Ausgabe über Definitionen von Objekten
GAMES Ausgabe beim Enlesen einer jeden Partie
ROUNDING [ NEAREST | ZERO | UP | DOWN ]
Bei der Wandlung von Fließkommazahlen in Ganzzahlen müssen diese gerundet
werden. Es stehen nun vier Rundungsmöglichkeiten zur Verfügung:
NEAREST Es wird immer zur nächsten ganzen Zahl gerundet (Voreinstellung)
ZERO Es wird immer in Richtung Wert 0 gerundet.
UP Es wird immer aufgerundet.
DOWN Es wird immer abgerundet.
LIST <Objekt-Typ>...
Es werden alle Objekte des angegebenen Objekttypes in die Ausgabedatei
als Liste geschrieben. Damit sind Kontrollen möglich:
ALL Es wird alles ausgegeben.
JOBS Liste der Jobs
LOCALS Liste der lokalen Variablen
GLOBALS Liste der globlen Variablen
SCANMODES Liste der Objekte vom Typ SCANMODE
FILEMASKS Liste der Dateimasken (-->SCANMODE)
PLAYER, PLAYERS Liste aller Spieler
ATTRIBUTES Liste der Attribute
SELECTIONS Liste der Objekte vom Typ SELECTION
TRANSFORMATIONS Liste der Objekte vom Typ TRANSFORMATION
PLAYERLEVELS Liste der Objekte vom Typ PLAYERLEVEL
GAMELEVELS Liste der Objekte vom Typ GAMELEVEL
ITERATIONS Liste der Objekte vom Typ ITERATION
PRINTGAMES Liste der Objekte vom Typ PRINTGAMES
PRINTPLAYERS Liste der Objekte vom Typ PRINTPLAYER
SORTMODES Liste der Objekte vom Typ SORTMODES
GAME, GAMES Liste aller Partien
SELECT <name>
Auswahl von Partien vornehmen.
PLAYERLEVEL, GAMELEVEL und ITERATION werden auf 'DEFAULT' gesetzt.
RESELECT
Vorherige SELECT wiederholen.
TRANSFORMATION <name>
Transformation <name> vornehemen. Es können 0 bis beliebig viele
Transformationen hintereinander verwendet werden.
PLAYERLEVEL <name>
PLAYERLEVEL <name> <name2>
Berechnungsmodus für die Spielerstärke bestimmen. Bei der Angabe von zwei
Modi wird der zweite Modus zur Berechnung der Spielerstärken nach der
letzten Iteration verwendet.
GAMELEVEL <name>
Berechnungsmodus für die subjektive Spielerstärke der Gegner innerhalb
einer Partie bestimmen.
ITERATE <name>
ITERATION <name>
Iterationsmodus bestimmen.
CALCULATE
Berechnungen gemäß PLAYERLEVEL, GAMELEVEL und ITERATION durchführen.
PRINTGAMES <name>
Liste aller ausgewählten Partien gemäß Modus <name> ausgeben.
PRINT <name>
PRINTPLAYERS <name>
Rangliste aller ausgewählten Partien gemäß Modus <name> ausgeben.
SORT <name>
Sortiermodus für Spielerrangliste auswählen.
CLEARVARS
Alle spielerabhängigen Variablen löschen. (-->SAVEPLAYERS)
SAVEPLAYERS <name> ( vormals TRANSFER <name> )
Für jeden Spieler werden die Variablen <name>.N, <name>.SUM, <name>.WSUM,
<name>.BEST, <name>.WBEST, <name>.WORST und <name>.WWORST gespeichert.
Diese Werte entsprechen den Werten bei der Berechnung von PLAYERLEVEL. Es
können so aus mehreren Auswertungen Ergebnisse festgehalten werden. Diese
Variablen können dann bei der Tabellenausgabe gemeinsam verwendet werden.
SAVEGAMES <name>
Für jede Partie werden die Variablen <name>.FIRST, <name>.MEAN,
<name>.MEDIAN, <name>.BINOM, <name>.WEIGHT, <name>.GAMELEVEL und
<name>.GROUP gespeichert. Diese Werte entsprechen den Werten bei der
Berechnung von GAMELEVEL. Es können so aus mehreren Auswertungen Ergebnisse
festgehalten werden. Diese Variablen können dann bei der Tabellenausgabe
gemeinsam verwendet werden.
TABSIZE <nummerischer_Ausdruck>
Bei der Textausgabe werden Tabulatoren für große Leerräume verwendet.
Der Tabulatorabstand wird durch TABSIZE bestimmt. Ein Wert von '0'
bedeutet, daß keine Tabulatoren verwendet werden sollen.
DATE, REFDATE
Es wird ein Referenzdatum eingestellt. (-->SELECTIION,TRANSFORMATION)
Voreingestellt ist das aktuelle Datum (Heute, 0 Uhr).
SYSTEM <programm + parameter>
Es wird ein externes Programm mit Parametern aufgerufen, als ob es im
Befehlsinterpreter -- normalerweise COMMAND.COM -- direkt eingegeben würde.
Es wird ein Zeichenketten Ausdruck erwartet.
| --- ??? --- |
| --- ??? --- |
| --- ??? --- |
Syntax: VARIABLE <name> := <formel>
VARIABLE <name> [] := <formel>
VARIABLE <name> [a] := <formel>
VARIABLE <name> [a:] := <formel>
VARIABLE <name> [:b] := <formel>
VARIABLE <name> [a:b] := <formel>
Bei einigen Formeln können vorher Variablen definiert werden. Dazu wird ein
Variablenname gefolgt von einer Formel angegeben. Zwischen Name und Formel
kann ':=', ':', '=' oder nichts hiervon stehen.
So definierte Variablen stehen zusätzlich zu den vordefinierten Variablen
zur Verfügung. Diese können bei weiteren Variablendefinitionen oder bei
der eigentlichen Formel verwendet werden.
Die Daten in den eckigen Klammern geben die Art und Weise der Berechnung an.
Dabei sind grundsätzlich alle Parameter verfügbar, die auch bei der
eigentlichen Formel verfügbar sind.
- Die Berechnung erfolgt spielerunabhängig. Alle spielerabhängigen
Variablen sind daher undefiniert.
[] Die Berechnung erfolgt hintereinander für alle Teilnehmer.
[a] Die Berechnung erfolgt nur für Teilnehmer `a'.
[a:] Die Berechnung erfolgt hintereinander für alle Teilnehmer ab
einschließlich Teilnehmer `a'. Anstatt '[a:]' kann auch '[a:*]' oder
'[a:y]' mit hinreichend großem 'y' geschrieben werden.
[:b] Die Berechnung erfolgt hintereinander für alle Teilnehmer bis
einschließlich Teilnehmer `b'. Anstatt '[:b]' kann auch '[x:b]'
mit x<=1 geschrieben werden.
[a:b] Die Berechnung erfolgt hintereinander für alle Teilnehmer von
einschließlich Teilnehmer `a' bis einschließlich Teilnehmer `b'.
Für 'a' und 'b' können beliebige numerische Ausdrücke verwendet werden.
Die Indizes werden automatisch auf die Grenzwerte angepaßt.
Beispiel
Es soll eine Transformation definiert werden, die das geometrische Mittel
als Referenzwert verwendet. Ein mögliche Lösung ist folgendes, wobei anstatt
Multiplizieren und Wurzelziehen das arithmetische Mittel aus den Logarithmen
berechnet wird:
define transformation gmean
variable gmean := 0.0 ! 1. Formel
variable gmean[] := gmean + log(p) ! 2. Formel
variable gmean := exp(gmean/n) ! 3. Formel
transform p / gmean ! 4. Formel
end
Es wurden vier Formeln definiert:
1. Die Variable GMEAN wird definiert und der Wert 0.0 zugeordnet.
2. Über alle Spieler wird die Summe des Logarithmusses ihrer Punktewertung
gebildet.
3. In einer Abschlußberechnung wird das geometrische Mittel berechnet.
4. In der eigentlichen Transformation wird das geometrische Mittel als
Referenzwert verwendet.
| --- ??? --- |
Im folgenden werden die im Programm ANALYSE verwendet Formeln beschrieben.
Die genaue Syntax der Formeln ist in der Datei 'STREAM.HTM' beschrieben.
===============================
READPOINTS (-->define scanmode)
Standardformel: 'P.1'
Variablen: N Anzahl der Punkteangaben
P.1 erste Punkteangabe
: :
P.n letzte Punkteangabe
PN Kürzel für 'P.n'
Sobald eine Datenzeile (Information eines Spielers) eingelesen worden ist,
wird diese Formel angewendet. Damit kann aus mehrspaltigen Tabellen der
richtige Punktewert, ggf. transformiert, ausgewählt werden.
===============================
TRANSFORMATION (-->define scanmode)
Standardformel: 'P'
Variablen:
DATE Datum der Tabelle als Zahl im Format `yyyymmdd'
YEAR Jahreszahl des Datums der Tabelle
MONTH Monatszahl des Datums der Tabelle
DAY Tageszahl des Datums der Tabelle
AGE Alter der Tabelle in Tagen relativ zum Referenzdatum
REFDATE Referenzdatum als Zahl im Format `yyyymmdd'
REFYEAR Jahreszahl des Referenzdatums
REFMONTH Monatszahl des Referenzdatums
REFDAY Tageszahl des Referenzdatums
FACTOR Gewichtungsfaktor, der bei der Partie angegeben wurde ('*nnn')
FIRST Punkte des besten Spielers
MEAN arithmetisches Mittel der Spielerpunkte
MEDIAN Median der Spielerpunkte
MIDDLE spezieller gewichteter Mittelpunkt der Spielerpunkte
BINOMIAL Mittelwert mit Binomialgewichtung der Spielerpunkte
TITLE Titelzeile des Spieles
TEXT Textueller Kommentar innerhalb der Titelzeile
N Anzahl der Spieler innerhalb einer Partie
I Index des aktuellen Spielers, 1..N
R Rang des aktuellen Spielers
Spieler mit der gleichen Punktezahl erhalten den
gleichen niedrigen Rang, z.B. 1,2,2,2,5,6,6,8
RN Anzahl der Spieler, die den gleichen Rang 'R' haben
P Punkte des aktuellen Spielers
P.1 Punkte des Spielers mit der größten Punktezahl
: :
P.n Punkte des Spielers mit der geringsten Punktezahl
PN Kürzel für 'P.n'
A$* Für jedes Attribut <attrib> ist ein Symbol
'A$<attrib>' definiert.
SM$* Für den ScanMode, mit dem diese Tabelle eingelesen
worden ist, ist das Symbol 'SM$<name>' definiert.
Nach dem Einlesen aller Spieldateien werden die Spielpunkte der Spieler
aller Eingabetabellen transformiert. Die Formel wird dabei nacheinander
für alle Spieler einer Partie angewendet. Anschließend werden die Spieler
neu sortiert. Die neu errechnete Punktezahl ersetzt den Wert 'P' und wird
für alle weiteren Berechnungen verwendet. Die Ursprungswerte sind hiernach
nicht mehr verfügbar.
Nach der Transformation sollten die folgenden Eigenschaften erfüllt sein:
- Die Punktzahl eines jeden Spielers ist >0.0
- Der beste Spieler hat die meisten Punkte
Diese Formel wird normalerweise nur dann verwendet, wenn die Daten nicht
die beiden oben genannten Eigenschaften besitzen.
===============================
SELECT (-->define selection)
Standardformel: '1'
Variablen:
DATE Datum der Tabelle als Zahl im Format `yyyymmdd'
YEAR Jahreszahl des Datums der Tabelle
MONTH Monatszahl des Datums der Tabelle
DAY Tageszahl des Datums der Tabelle
AGE Alter der Tabelle in Tagen relativ zum Referenzdatum
REFDATE Referenzdatum als Zahl im Format `yyyymmdd'
REFYEAR Jahreszahl des Referenzdatums
REFMONTH Monatszahl des Referenzdatums
REFDAY Tageszahl des Referenzdatums
FACTOR Gewichtungsfaktor, der bei der Partie angegeben wurde ('*nnn')
FIRST Punkte des besten Spielers
MEAN arithmetisches Mittel der Spielerpunkte
MEDIAN Median der Spielerpunkte
MIDDLE spezieller gewichteter Mittelpunkt der Spielerpunkte
BINOMIAL Mittelwert mit Binomialgewichtung der Spielerpunkte
TITLE Titelzeile des Spieles
TEXT Textueller Kommentar innerhalb der Titelzeile
N Anzahl der Spieler innerhalb einer Partie
P.1 Punkte des Spielers mit der größten Punktezahl
: :
P.n Punkte des Spielers mit der geringsten Punktezahl
PN Kürzel für 'P.n'
A$* Für jedes Attribut <attrib> ist ein Symbol
'A$<attrib>' definiert.
SM$* Für den ScanMode, mit dem diese Tabelle eingelesen
worden ist, ist das Symbol 'SM$<name>' definiert.
Mit dieser Formel werden Tabellen für eine Auswertung ausgewählt. Ist der
Rückgabewert >0.0, dann wird die Tabelle mit dem Rückgabewert als
Gewichtung (-->WEIGHT) für die folgenden Auswertungen verwendet.
Andernfalls wird die Tabelle nicht verwendet.
===============================
TRANSFORM (-->define transformation)
Variablendefinition mittels `VARIABLE' möglich (siehe vorheriges Kapitel)
Standardformel: 'P/MEAN'
Variablen:
WEIGHT Gewichtung der Partie := Ergebnis von SELECT
FIRST Punkte des besten Spielers
MEAN arithmetisches Mittel der Spielerpunkte
MEDIAN Median der Spielerpunkte
MIDDLE spezieller gewichteter Mittelpunkt der Spielerpunkte
BINOMIAL Mittelwert mit Binomialgewichtung der Spielerpunkte
N Anzahl der Spieler innerhalb einer Partie
I Index des aktuellen Spielers, [1..N]
J Index von `hinten', J := N+1 - I, [N..1]
M M := (N+3)/2 - min(I,J) --> z.B. 1,2,3,4,5,4,3,2,1
V Ergebnis der vorherigen Berechnung
R Rang des aktuellen Spielers.
Spieler mit der gleichen Punktezahl erhalten den
gleichen niedrigen Rang, z.B. 1,2,2,2,5,6,6,8
RN Anzahl der Spieler, die den gleichen Rang 'R' haben
P Punkte des aktuellen Spielers
P.1 Punkte des Spielers mit der größten Punktezahl
: :
P.n Punkte des Spielers mit der geringsten Punktezahl
PN Kürzel für 'P.n'
B Binomialkoeffizient des aktuellen Spielers
B.1 Binomialkoeffizient des ersten Spielers
: :
B.n Binomialkoeffizient des letzten Spielers
Als Vorbereitung für die aktuelle Berechnung der Spielerstärken werden die
Spielerdaten transformiert.
===============================
CALCULATE (-->define playerlevel)
Standardformel: 'SUM/WSUM'
Variablen:
SUM Summe der gewichteten Einzelbewertungen
WSUM Summe der Gewichtungen
BEST Bestes Einzelergebnis des Spielers
WBEST Gewichtungsfaktor des besten Einzelergebnisses
WORST Schlechtestes Einzelergebnis des Spielers
WWORST Gewichtungsfaktor des schlechtesten Einzelergebnisses
N Anzahl der Ergebnisse in den Summen
Innerhalb des iterativen Verfahrens, welches mindestens einmal durchlaufen
wird, werden die gewichteten (-->WEIGHT) Bewertungen der Spieler in den
einzelnen Partien (-->CALCULATE/gamelevel) in der Variable SUM aufsum-
miert. WSUM enthält dann die Summe der Gewichtungen. Sind alle diese
Gewichtungen '1.0', dann ist WSUM == N.
Nach der Berechnung für alle Spieler erfolgt eine Normierung der Spieler-
stärken. Dabei wird jeder Spielerwert mit demselben Faktor multipliziert,
so daß die Summe der Spielerstärken gleich der Anzahl der Spieler ist.
===============================
CALCULATE (-->define gamelevel)
Standardformel: 'WEIGHT * P * (SUMLEVEL-LEVEL) / (N-1)'
Variablen:
WEIGHT Gewichtung der Partie := Ergebnis von SELECT
LEVEL Stärke des aktuellen Spielers
:= Ergebnis von CALCULATE/playerlevel
SUMLEVEL Summe der Stärken alle Spieler dieser Partie
GAMELEVEL Partiestärke := SUMLEVEL/N
N Anzahl der Spieler
P Punkte des aktuellen Spielers
Innerhalb des iterativen Verfahrens, welches mindestens einmal durchlaufen
wird, wird die Stärke jeder Partie aus dem arithmetichen Mittel der
Spielerstärken berechnet. Mit Hilfe dieser Formel wird die subjektive
Partienstärke eines jeden Spielers berechnet. So werden z.B. in der
Standardformel nur die Stärken der Gegner verwendet, indem die eigene
Stärke wieder herausgerechnet wird. Verzichtet man auf den Faktor WEIGHT,
so sollte bei CALCULATE/playerlevel die Formel 'SUM/N' anstatt 'SUM/WSUM'
verwendet werden.
===============================
SORT (-->define sortmode)
Standardformel: 'LEVEL'
Variablen:
LEVEL Spielerstärke des Spielers nach der letzten Berechnung
von CALCULATE/playerlevel nach der Normierung.
LEVEL0 Spielerstärke des Spielers nach der letzten Berechnung
von CALCULATE/playerlevel vor der Normierung.
GROUP Gruppennummer des Spielers
N Anzahl der Partien des Spielers
* Variablen, die spielerbezogen durch den Befehl
TRANSFER definiert worden sind.
Mit dieser Formel wird die Sortierung der Spieler inklusive Rangberechnung
bestimmt. Spieler mit dem höchsten Wert werden als erstes ausgegeben.
Spieler mit gleichem Ergebnis erhalten die gleiche Rangnummer.
===============================
HEADER, TRAILOR (-->define printplayer)
Standardformel: ''
Variablen:
NP Anzahl der Spieler innerhalb einer Partie
Das Ergebnis dieser beiden Formeln wie unmittelbar vor (HEADER) und nach
(TRAILOR) der folgenden Formel (PLAYER) ausgegeben. Damit kann der Kopf
und der Fußbereich einer Spielertabelle festgelegt werden.
PLAYER (-->define printplayer)
Standardformel: 'print('%4d. %-25s %8.3f',I,NAME,LEVEL)'
Variablen:
I Index des aktuellen Spielers, [1..N]
R Rang des aktuellen Spielers.
Spieler mit der gleichen Sortierwert erhalten den
gleichen niedrigen Rang, z.B. 1,2,2,2,5,6,6,8
RN Anzahl der Spieler, die den gleichen Rang 'R' haben
NAME Name des aktuellen Spielers
ID ID des aktuellen Spielers
LEVEL Stärke des Spielers nach der letzten Berechnung
von CALCULATE/playerlevel nach der Normierung.
LEVEL0 Stärke des Spielers nach der letzten Berechnung
von CALCULATE/playerlevel vor der Normierung.
GROUP Gruppennummer des Spielers
N Anzahl der Partien des Spielers
* Variablen, die spielerbezogen durch den Befehl
SAVEPLAYER definiert worden sind.
Bei der Ausgabe einer kompletten Spielerliste mittels des Kommandos
PRINTPLAYER wird zuerst HEADER, danach für jeden Spieler das Ergebnis
dieser Formel und danach TRAILOR ausgegeben.
===============================
HEADER, TRAILOR (-->define printgame)
Standardformel: ''
Variablen:
FACTOR Gewichtungsfaktor, der bei der Partie angegeben wurde ('*nnn')
WEIGHT Gewichtung der Partie := Ergebnis von SELECT
FIRST Punkte des besten Spielers
MEAN Arithmetisches Mittel der Spielerpunkte
MEDIAN Median der Spielerpunkte
MIDDLE spezieller gewichteter Mittelpunkt der Spielerpunkte
BINOMIAL Mittelwert mit Binomialgewichtung der Spielerpunkte
GAMELEVEL Stärke dieser Partie, entsprich der Variable
GAMELEVEL aus der Formel CALCULATE/gamelevel
GAMEGROUP Gruppennummer der Partie
SRCFILE Dateiname der Quelldatei
SRCLINE Zeilenummer innerhalb der Quelldatei
SRCDATE Zeit der Quelldatei im BinTime-Format (->STREAM.HTM)
GAMEDATE Zeit der Partie im DateTime-Format (->STREAM.HTM)
GAMEID ID der Partie
TITLE Titelzeile des Spieles
TEXT Textueller Kommentar innerhalb der Titelzeile
NP Anzahl der Spieler innerhalb einer Partie
* Variablen, die partienbezogen durch den Befehl
SAVEGAME definiert worden sind.
Das Ergebnis dieser beiden Formeln wird unmittelbar vor (HEADER) und nach
(TRAILOR) der folgenden Formel (PLAYER) ausgegeben. Damit kann der Kopf
und der Fußbereich jedes Partienberichts festgelegt werden.
PLAYER (-->define printgame)
Standardformel: 'print('%4d. %-25s %8.3f',I,NAME,LEVEL)'
Variablen:
I Index des aktuellen Spielers, [1..N]
NAME Name des aktuellen Spielers
ID ID des aktuellen Spielers
POS Position des Spielers beim Einlesen der Tabelle
LEVEL Stärke des Spielers nach der letzten Berechnung
von CALCULATE/playerlevel nach der Normierung.
LEVEL0 Stärke des Spielers nach der letzten Berechnung
von CALCULATE/playerlevel vor der Normierung.
GLEVEL Subjektive Stärke des Spielers in dieser Partie,
Ergebnis von CALCULATE/gamelevel
GROUP Gruppennummer des Spielers
N Anzahl der Partien des Spielers
P0 Punkte des Spielers vor der ersten Transformation
P Punktezahl des Spielers nach allen Transformationen
FACTOR Gewichtungsfaktor, der bei der Partie angegeben wurde ('*nnn')
WEIGHT Gewichtung der Partie := Ergebnis von SELECT
FIRST Punkte des besten Spielers
MEAN Arithmetisches Mittel der Spielerpunkte
MEDIAN Median der Spielerpunkte
MIDDLE spezieller gewichteter Mittelpunkt der Spielerpunkte
BINOMIAL Mittelwert mit Binomialgewichtung der Spielerpunkte
GAMELEVEL Stärke dieser Partie, entsprich der Variable
GAMELEVEL aus der Formel CALCULATE/gamelevel
SRCFILE Dateiname der Quelldatei
SRCLINE Zeilenummer innerhalb der Quelldatei
SRCDATE Zeit der Quelldatei im BinTime-Format (->STREAM.HTM)
GAMEDATE Zeit der Partie im DateTime-Format (->STREAM.HTM)
GAMEID ID der Partie
NP Anzahl der Spieler innerhalb einer Partie
* Variablen, die spielerbezogen durch den Befehl
TRANSFER definiert worden sind.
Bei der Ausgabe einer kompletten Partienliste mittels des Kommandos
PRINTGAMES wird für jede Partie zuerst HEADER, danach für jeden Spieler
das Ergebnis dieser Formel und danach TRAILOR ausgegeben.
| --- ??? --- |
Es existieren vier Ausgabekanäle: - stderr - Ausgabedatei via OUTPUT - Fehlerdatei via ERRORLOG - Druckdatei via PRINTFILE Über `stderr' werden Ausgaben gemäß LOG-Mode vorgenommen. Die Ausgabedatei enthält alle vom Programm erzeugten Ausgaben. In die Fehlerdatei werden alle Informationen gemäß LOG-Mode ALL sowie alle Fehler ausgegeben. Ist keine Fehlerdatei angegeben, so werden die Fehlermeldungen in die Ausgabedatei geschrieben. In die Ausgabedatei werden alle Listen durch LIST und zusätzliche Informationen geschrieben. In die Druckdateien werden alle Ausgaben durch PRINTGAME und PRINTPLAYER geschrieben.