CK SALE

CK SemiAutomated List Editor

CK SemiAutomated List Editor: 0.3 (Build 20060818)

www.coufal.org/cksale
© 2006 Klaus Coufal (cksale@coufal.org)

Einleitung

Diese Programm soll als Nachfolger der beiden DOS-Programme CKEDIT (aus 1993) und CKLISTP (aus 1995) deren Funktion unter Windows übernehmen, dabei aber einige Einschränkungen dieser Programme nicht mehr haben. So können jetzt die einzelnen Sektionen der Steuerdatei viel mehr Zeilen als bisher besitzen und der Benutzerkomfort wurde durch das zusätzliche graphische Benutzerinterface erhöht.
Die Hauptaufgabe bleibt aber weiterhin, aus vorhandenen Listen (z.B. von Benutzernamen) mit Hilfe einer Templatedatei andere Listen (z.B.: eine LDIF-Datei) zu generieren.
Erstmalig mit diesem Programm sind auch eine - weitgehend vollständige - schriftliche Beschreibung des Aufbaus einer Templatedatei und in die Hilfe integrierte Beispiele verfügbar.

Fensterbeschreibung
Programmbedienung
Lizenzinformationen
Versionsübersicht


CKSALE - Fensterbeschreibung

Fensterbeschreibung

Das Hauptfenster hat für alle drei notwendigen Dateien die gleichen Bedienelemente:
Name | Typ | Zweck
Beschreibung der Datei | Text | Anzeige der Datei, auf die sich die Bedienelemente beziehen. Dabei bezeichnet "Templatefile" die Datei, die das Muster zur Umarbeitung enthält, "Inputfile" die Liste, die verarbeitet wird und "Outputfile" die Datei, die für das Ergebnis der Verarbeitung zur Verfügung steht.
Browse | Schaltfläche | Zur Auswahl der entsprechenden Datei kann damit ein Dateiauswahlfenster geöffnet werden.
Edit | Schaltfläche | Damit kann die entsprechende Datei bearbeitet werden (sollte noch keine Datei ausgewählt worden sein, hat diese Schaltfläche keine Funktion).
Dateiname | Eingabefeld | Hier kann der entsprechende Dateiname direkt eingegeben werden bzw. wird von einem "Browse" eingetragen.

Darunter existiert noch die Schaltfläche "Merge", damit wird die eigentliche Verarbeitung ausgelöst. Während der Verarbeitung wird links von der Schaltfläche "Merge" ein Fortschrittsbalken angezeigt.

Programmbedienung
Übersicht


Programmbedienung

Die Programmbedienung besteht i.a. aus der Auswahl (mit der Schaltfläche "Browse" oder durch direkte Eingabe) der drei notwendigen Dateien (Reihenfolge beliebig) und der Verarbeitung, die durch Drücken auf die Schaltfläche "Merge" ausgelöst wird. Es kann aber auch eine der Dateien bearbeitet (Schaltfläche "Edit") werden, oder mit Hilfe des Menüpunktes "Extras/Use Pattern Template" eine Templatedatei erstellt werden.
Die weitere Bedienung erfolgt über das Menü.
File
Extras
?

Übersicht
Templatefileformat
Kommandozeilenoptionen
Einträge in die Registry


Datei

Neu

Der Menüpunkt "File/New" startet das Programm neu, dabei werden alle Felder neu initialisiert (Daten werden nicht übernommen). Der Menüpunkt "File/Exit" beendet das Programm.Wenn noch ungespeicherte Daten vorhanden sind, erscheint eine entsprechende Abfrage, sollten Sie diese mit der Schaltfläche NEIN beantworten, wird abgebrochen.

Menü Extras


Extras

Use Pattern Template

Der Menüpunkt "Extras/Use Pattern Template" erlaubt die Übernahme fertiger Templatedateien aus einer Liste. Sollte noch keine Templatedatei definiert sein, öffnet sich der entsprechende Dialog. Sollte die Templatedatei bereits existieren, erscheint ein entsprechender Hinweis mit drei Auswahlmöglichkeiten:
Schaltfläche | Aktion
Ja | Die schon existierende Datei wird überschrieben
Nein | Die schon existierende Datei wird nicht überschrieben und das Dateiauswahlfenster erscheint erneut
Abbrechen | Der gesamte Vorgang wird abgebrochen

Die Liste kann jederzeit mit eigenen Templates erweitert werden, diese sollten zumindest eine .REMARK-Sektion enthalten (da diese angezeigt wird) und in das Unterverzeichnis "Templates" des Installationsverzeichnisses (Vorgabe: C:\Programme\CKTools\CKSALE) kopiert werden. Dabei ist zu beachten, daß diese bei einer eventuellen Deinstallation mitgelöscht werden bzw. bei einem Update des Programmes möglicherweise mit Installationsdateien gleichen Namens überschrieben werden.

Menü ?


?

Hilfe

Der Menüpunkt "?/Help" startet die externe Hilfe zu diesem Programm oder wenn diese nicht installiert ist, wird eine interne Kurzfassung angezeigt.

Info

Der Menüpunkt "?/About" zeigt allgemeine Programminformationen an und bietet Links zur Anzeige der Lizenz bzw. zur Homepage des Programmes an.

Menü File


CK SALE - Templatefileformat

CK SALE - Templatedateiformat

Eine Templatedatei besteht aus mehreren Sektion, die das Umwandeln von der Eingabedatei in die Ausgabedatei steuern. Jede Sektion beginnt mit einem "." direkt gefolgt vom Sektionsnamen und endet entweder automatisch durch den Beginn einer anderen Sektion oder explizit durch ein ".END"-Kommando. Sektionsbeginn und Sektionsende stehen jeweils in einer eigenen Zeile. Zusätzlich sind noch Kommentarzeilen möglich, diese beginnen mit einem ";".

Mögliche Sektionsnamen:
.REMARK | Hier können beliebige Kommentare zur Templatedatei hinterlegt werden. Dadurch muß bei längeren Kommentare nicht bei jeder Zeile ein ";" vorangestellt werden.
.CONTROL | In dieser Sektion werden die Eigenschaften des Parsers (wie werden die Zeilen der Eingabedatei in einzelne Felder aufgetrennt) gesteuert.
.HEADER | Hier wird der Inhalt des Kopfes der Ausgabedatei(en) festgelegt.
.LINE | In dieser Sektion wird die eigentliche Umwandlung (wie wird ein Datensatz für die Ausgabe gebildet) festgelegt.
.TRAILER | Hier wird der Inhalt festgelegt, der an das Ende der Ausgabedatei(en) angefügt wird.

Kommandos in der .CONTROL-Sektion
separator={blank|tab|equal|<Zeichen>} | Angabe eines Trennzeichens, dabei bedeutet "blank" ein Leerzeichen, "tab" eine Tabulatorschaltung und "equal" das Gleichheitszeichen, alle anderen druckbaren Zeichen können direkt verwendet werden. Es ist jeweils nur ein Zeichen und keine Zeichenkette zulässig, allerdings können durch mehrfache Verwendung dieses Kommandos auch mehrere Trennzeichen angegeben werden. Jedes Trennzeichen trennt jeden Datensatz der Eingabedatei auf, sodaß mehrere Teile pro Datensatz entstehen, die dann in einzeln in den Datensatz für die Ausgabedatei übernommen werden können. Derzeit sind maximal 10 Teile möglich. Der Vorgabewert für das Trennzeichen ist das Leerzeichen.
treat tab as blank={on|off} | Mit diesem Kommando kann bewirkt werden, daß die Tabulatorschaltungen in den Datensätzen der Eingabedatei wie Leerzeichen behandelt werden. Statt "on" kann auch "true", "yes" oder "1" verwendet werden, alle anderen Angaben werden als "off" interpretiert. Der Vorgabewert ist "off".
treat multiple separator as one={on|off} | Wenn diese Option eingeschaltet wird (durch "on", "true", "yes" oder "1"), werden aufeinander folgende Trennzeichen wie ein einziges behandelt, dadurch ist es nicht relevant, wenn in einer Zeile z.B. ein Leerzeichen und in der nächsten Zeile mehrere Leerzeichen als Trennzeichen verwendet werden. Der Vorgabewert ist "on".
number of lines per record=n | Mit dieser Option wird eingestellt, wie viele Zeilen aus der Eingabedatei zu einem Datensatz zusammengefaßt werden. Zwischen den Zeilen wird jeweils ein Trennzeichen eingefügt. Der Vorgabewert beträgt 1.
maximum number of records per output file=n | Mit diesem Kommando kann die Anzahl der Datensätze pro Ausgabedatei beschränkt werden (z.B.: Beim Import von LDIF-Dateien ist nur eine begrenzte Anzahl von Datensätzen möglich). Dazu wird an den ausgewählten Dateinamen ein "_" und eine Zahl (beginnend mit 1) angehängt, diese Zahl wird so lang hochgezählt bis alle Datensätze der Eingabedatei - unter Berücksichtigung der maximalen Anzahl der Datensätze pro Ausgabedatei - verarbeitet sind. Die Schaltfläche "Edit" bezieht sich in diesem Fall auf die momentane bzw. die letzte Ausgabedatei. Sollten weniger Datensätze in der Eingabedatei ein, als mit dieser Option angegeben wird, dann wird nur der originale Dateiname (ohne "_1") verwendet. Warnung: die Option bremst die Verarbeitung um den Faktor 15 (die Verarbeitung dauert ca. 15 mal so lang, wie mit einer Ausgabedatei). Der Vorgabewert ist 0, d.h. diese Option ist deaktiviert.
Jeder Befehl in der .CONTROL-Sektion muß in einer eigenen Zeile stehen.

Mögliche Variablen in den Sektionen
%0 | Der Teil des Datensatzes der Eingabedatei, der vor dem ersten Trennzeichen steht.
%1 | Der Teil des Datensatzes der Eingabedatei, der zwischen dem ersten und zweiten Trennzeichen steht.
%2, ..., %9 | Analog zu %1 die weiteren Teile des Datensatzes der Eingabedatei
%C | Die Anzahl der bisher gelesenen Datensätze der Eingabedatei (Enthält am Ende des Umwandlungsvorgang die Gesamtzahl der Datensätze der Eingabedatei).
%F | Die Nummer der Ausgabedatei, wenn mehrere Ausgabedateien verwendet werden, sonst Leer.
%R | Die Anzahl der bisher für die momentane Ausgabedatei gelesenen Datensätze (beginnt bei jeder neuen Datei wieder mit 1). Sollte nur eine Ausgabedatei verwendet werden ist diese Variable gleich der Variablen %C
# | Gleichbedeutend zu %C (wird aus Kompatibilitätsgründen zu Vorgängerprogrammen weiter unterstützt).
In diesem Zusammenhang kommt dem Zeichen "\" eine besondere Bedeutung zu, es wird als sogenanntes Fluchtsymbol verwendet, sollten Sie das Zeichen "%" oder "#" direkt verwenden wollen (nicht als Variable) dann muß davor ein "\" stehen, selbstverständlich gilt das auch für das Fluchtsymbol selbst, wann immer ein "\" im Text benötigt wird, muß ein zweiter davorgeschrieben werden. Generell gilt, wann immer das Zeichen "\" in der Templatedatei auftaucht, wird es selbst überlesen, aber das nächste Zeichen direkt (ohne Interpretation) übernommen.

Beispiele


CK SALE - Beispiele

CK SemiAutomated List Editor - Beispiele

Allgemeines

Für diese Beispiele wurden die Eingabedateien aus Gründen der Übersichtlichkeit bewußt kurz gehalten, die wirklichen Vorteile sind bei größeren Eingabedateien (in der Paxis oft mehrere 1000 Datensätze) offensichtlicher.

Beispiel 1

Templatedatei
.REMARK
Diese Templatedatei erzeugt aus einer Dateiliste ein Kommandoprozedur
.CONTROL
treat tab as blank=on
treat multiple separator as one=on
number of lines per record=1
maximum number of records per output file=0
.HEADER
; Zuerst lege das Zielverzeichnis an und wechsle dorthin
\; Kommandoprozedur zum Verschieben bestimmter Dateien
MD XYZ
CD XYZ
.LINE
; Kopiere die Dateien aus der Liste vom USB-Stick und lösche Sie dort
COPY U:\\%0.%1 >NUL
DEL U:\\%0.%1
.TRAILER
; Am Ende gib noch die Anzahl der Dateien aus
ECHO # Dateien kopiert und von U:\\ gelöscht.
.END
Eingabedatei
beispielprogramm exe
liste            xls
brief            doc
Ausgabedatei
; Kommandoprozedur zum Verschieben bestimmter Dateien
MD XYZ
CD XYZ
COPY U:\beispielprogramm.exe >NUL
DEL U:\beispielprogramm.exe
COPY U:\liste.xls >NUL
DEL U:\liste.xls
COPY U:\brief.doc >NUL
DEL U:\brief.doc
ECHO 3 Dateien kopiert und von U:\ gelöscht.

Beispiel 2

Templatedatei
.remark
Add an attribut to an object in a LDAP-tree
.control
treat tab as blank=on
treat multiple separator as one=on
number of lines per record=1
maximum number of records per output file=256
.header
version: 1

.line
; outputfile is in ldif-format and may be imported to the LDAP-tree
dn: cn=%0,o=testfirma
changetype: modify
add: Personalnummer
Personalnummer: %1

.end
Eingabedatei
meier	      1234
huber	      1235
list	      1236
niedersteiner 1245
Ausgabedatei
version: 1

dn: cn=meier,o=testfirma
changetype: modify
add: Personalnummer
Personalnummer: 1234

dn: cn=huber,o=testfirma
changetype: modify
add: Personalnummer
Personalnummer: 1235

dn: cn=list,o=testfirma
changetype: modify
add: Personalnummer
Personalnummer: 1236

dn: cn=niedersteiner,o=testfirma
changetype: modify
add: Personalnummer
Personalnummer: 1245

Templatefileformat


Einträge in die Registry

Globale Einstellungen unter HKEY_LOCAL_MACHINE\SOFTWARE\CKTools\CKSALE
 | Name | Typ | Beschreibung
 | Install_Dir | REG_SZ | Verzeichnis in das das Programm installiert wurde
 | Name | REG_SZ | Name des Programmes
 | Version | REG_SZ | Genaue Versionsbezeichnung des installierten Programmes

Benutzerspezifische Einstellungen unter HKEY_CURRENT_USER\Software\CKTools\CKSALE
 | Name | Typ | Beschreibung
 | StartX | REG_DWORD | X-Wert der linken oberen Ecke des Fensters
 | StartY | REG_DWORD | Y-Wert der linken oberen Ecke des Fensters

Sonstiges:
Zusätzlich noch die Keys, die für die Deinstallation notwendig sind, in "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CKSALE".

Bei einer Deinstallation werden alle Keys außer den Benutzerspezifischen (HKEY_CURRENT_USER\Software\CKTools\CKSALE für alle Benutzer, die das Programm verwendet haben) gelöscht.


Kommandozeilenoptionen

Unterstützte Optionen (Reihenfolge beliebig):
 | /templatefile=datei1 | datei1 wird als Musterdatei verwendet
 | /inputfile=datei2 | datei2 wird als Eingabedatei verwendet
 | /outputfile=datei3 | datei3 wird als Ausgabedatei verwendet
 | /silent | Start ohne graphische Benutzeroberfläche (nur sinnvoll, wenn alle drei Dateien auch angegeben werden)


CK SALE - Versionsentwicklung

Versionen von CK SemiAutomated List Editor

V0.3 20060817

Verbesserte Fehlerbehandlung.
Neuer Menüpunkt "Extras/Use Pattern Template" erlaubt die Übernahme einer Templatevorlage aus einer Liste von Dateien im Unterverzeichnis "Templates" des Installationsverzeichnisses.

V0.2 20060815

Neue .CONTROL-Funktion "MAXIMUM NUMBER OF RECORDS PER OUTPUT FILE=n", dabei bedeutet n=0, daß die Option nicht wirkt, jedes andere n splittet die Ausgabedatei nach n Datensätzen (die dabei erzeugten Dateinamen setzen sich aus dem angegebenen Dateinamen, "_" und einer laufenden Nummer (von 1 beginnend) zusammenen; sollten weniger Datensätze als n in der Eingabedatei sein, dann wird nur der originale Dateiname (ohne "_1") verwendet. Warnung: die Option bremst die Verarbeitung um den Faktor 15 (die Verarbeitung dauert ca. 15 mal so lang, wie mit einer Ausgabedatei).
Der Editbutton wirkt in diesem Fall auf die momentane bzw. auf die letzte Ausgabedatei.
Dafür wurden auch neue Variablen eingeführt: %R ist die laufende Nummer in der momentanen Ausgabedatei, %F ist die Nummer der momentanen Ausgabedatei und %C ist die laufende Nummer über alle Ausgabedateien (gleichbedeutend mit #).
Die durch leere Eingabedateien (oder durch Leerzeilen) erzeugte Ausgabedatei, die nur den Header bzw. den Trailer beinhaltet, wird gelöscht.
Der Fortschrittsbalken ist nur während der Verarbeitung sichtbar.

V0.1 20060814

First release. Funktionen von CKEDIT (V1.0/1993 10 15) und CKLISTP (V0.2/1995 10 19) unter Windows neu programmiert, dabei die zwar vorhandenen aber nicht implementierten .CONTROL-Funktionen "fixed columns" und "column<n>" und die systemfremde .EXTEND-Funktion nicht implementiert. Die Commandline-Kompatibilität zu diesen Programmen ist mit zwei .BAT-Dateien (CKEDIT.BAT und CKLISTP.BAT) sichergestellt. CKSALE hat ein Commandlineinterface und eine graphische Benutzeroberfläche. Neu hinzugekommen ist die Möglichkeit Kommentarzeilen (mit ";" an erster Stelle) auch außerhalb der .REMARK-Sektionen einzufügen (Sollten ";" an erster Stelle benötigt werden, muß es in CKSALE im Gegensatz zu den alten Versionen mit dem Fluchtsymbol "\" davor verwendet werden: "\;") und die .CONTROL-Funktion "separator=equal" um das Gleichheitszeichen als Trennzeichen verwenden zu können ("separator= =" funktioniert unter CKSALE nicht mehr, da das Parsing wesentlich geändert wurde).
Leerzeilen (vor allem am Ende der Eingabedatei) sind kein Problem mehr, da alle Leerzeilen in der Eingabedatei "überlesen" werden.
Die Zahl der Zeilen in den einzelnen Sektionen ist nicht mehr auf so kleine Werte wie bisher (10 bzw. 15) beschränkt, daher wurden auch die dazugehörigen Fehlercodes und -meldungen nicht implementiert (Jetztige Grenze ist eine Summengrenze und auch von dem zur Verfügung stehenden Hauptspeicher abhängig).
Die Reihenfolge der Sektionen ist jetzt beliebig, d.h. muß nicht in der Strenge der alten Programme eingehalten werden; außerdem kann jede Sektion auch mehrfach vorkommen, gleichartige werden in der Reihenfolge Ihres Auftretens zusammengefaßt.


CK SALE - Lizenz

Lizenz

"SemiAutomated List Editor" © 2006 by Klaus Coufal (office@coufal.org)

Lizenz für CK SALE V0.3

Hiermit wird jeder Person die Erlaubnis erteilt, dieses Programm ohne
Gebühr unter Beachtung der folgenden Einschränkungen zu verwenden.

DAS PROGRAMM WIRD IHNEN ZUR BENUTZUNG ÜBERLASSEN, SO WIE ES IST
UND OHNE IRGENDEINE FUNKTIONSGARANTIE. DIE VERWENDUNG ERFOLGT
AUF EIGENE GEFAHR, DER AUTOR ÜBERNIMMT KEINE HAFTUNG FÜR EVENTUELLE
SCHÄDEN, DIE DURCH DIE VERWENDUNG DIESES PROGRAMMS ENTSTEHEN.

Das Programm darf nur in der vorliegenden Form inkl. dieses Copyright-
Hinweises weitergegeben werden.
Für die Weitergabe dürfen keine Gebühren verlangt werden.
Das Programm darf nicht zurückentwickelt oder verändert werden.

Die Urheberrechte verbleiben beim Programmersteller.

Internationale Fassung des Gewährleistungsausschlusses:

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.