options random home http://rzstud1.rz.uni-karlsruhe.de/~ule3/Railserver/rstech-d.html (Einblicke ins Internet, ~06/1995)

RailServer: Wie er funktioniert


Des Pudels Kern: HAFAS.EXE

Kern des RailServers ist die mit der CD "Elektronisches Kursbuch Deutschland" der Deutschen Bahn AG bzw. auch mit den "Elektronischen Städteverbindungen gelieferte Fahrplansoftware der Fa. HaCon GmbH, Hannover.

Es handelt sich dabei um ein (übrigens sehr gut programmiertes) interaktives Programm zur Ermittlung von Bahnverbindungen; ein Batch-Modus ist nicht vorgesehen. Ich kann die Software nur jedem empfehlen, der diesen RailServer mehr als nur sporadisch benutzt - Bezugsquelle hier.

Das Entschlüsseln der Datenstruktur gelang mir nur ansatzweise (die Bahnhofsdatei und die Entfernungstabelle - Dateien PLANB und PLANK - konnte ich verstehen, den Rest nicht). Die Firma wollte verständlicherweise auch nichts verraten; sie bietet eine DLL zum Einbau in eigene Programme an, die auf die Daten zugreifen kann.

Trick mit VIRTUAL USER

Kurzerhand programmierte ich das erste TSR-Programm meines Lebens mit einer Turbo Pascal-Uraltversion (normalerweise arbeite ich mit Visual BASIC). Dieses simuliert anhand eines vorgegebenen kleinen Programm-Skripts einen Benutzer, der auf bestimmte Fragen eines Programms mit vorgegebenen Daten antwortet (also sowas wie PROGRAMM.EXE < EINGABE.ASC, bloß "kontextsensitiv"). Ich glaube, unter Un*x gibt es sowas standardmäßig (?).
Das Programm-Skript und die Daten können in einer Datei bereitgestellt werden. Dazu gehört ein kleiner Compiler, den ich in VB/DOS realisiert habe und der die benötigten komprimierten Programmskripte aus dokumentiertem Quelltext erzeugt. Der Quelltext sieht vom Stil her etwa so aus:
IF CURSOR AT 10,3
   SENDKEY F3 #13
ELSE
   SENDVAR Startbahnhof
END IF
Und noch ein paar Befehle mehr (GOTO, GOSUB, RETURN, was einem BASIC-Programmierer halt so einfällt). Das Virtual-User-Programm samt Compiler steht für Interessierte auf meiner Download-Seite zur Verfügung.

Gut PROCESSed ist halb gewonnen

Jetzt brauchte ich nur noch ein Programm, das eingehende Mails analysiert, daraus die benötigten Variablendateien für den "Virtual User" erstellt und die Ausgabe des HAFAS-Programms (eine in eine Datei gedruckte Bahnverbindung) in eine Antwortmail umformatiert. Auch das war schnell gehackt (PROCESS1.EXE).

Das SALT in der Suppe

Ferner braucht's noch ein paar Batchprozeduren und ein paar Scripts in der TELIX-Makrosprache SALT, die automatisch bei der Uni anrufen und alle Mails von meinem Account übertragen bzw. die von PROCESS1 generierten Antwortmails uploaden und per SENDMAIL ins Netz schicken. Bei der Gelegenheit: SALT ist eine der umfangreichsten und genialsten Makrosprachen. Was man damit alles machen kann - und das, obwohl die Version auch schon ihre 5 Jahre auf dem Buckel hat! Und das alles als Shareware :-)...

Relais und Zeitschalter

So ungefähr funktioniert also der Mailserver. Im Routinebetrieb wird mein PC von einer Zeitschaltuhr nachts automatisch eingeschaltet, um die Mailserver-Prozeduren abzuarbeiten; nach getaner Arbeit schaltet er sich selbst wieder ab (dafür habe ich eine kleine Relaiskarte gelötet, ich fand das schon damals bei den Macs so toll, daß sie sich selbst abschalten konnten...)

Zur RailServer-Hauptseite