FPC Crosscompiler für MSDOS

Für Fragen von Einsteigern und Programmieranfängern...
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6859
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FPC Crosscompiler für MSDOS

Beitrag von af0815 »

Meiner Erfahrung nach, ist dIe Anbindung an MariaDB unter das Problem. Ich kenne keine Treiber die mit reinen MsDos funktionieren würden. Unter Dos gibt es auch keinen ODBC.

Was ist das genau für ein Gerät das mit einem 8086 MsDos läuft ? Oder ist es eine Installation ohne GUI das nur eine Konsole zeigt ? Weil 8086 Dos Maschinen kenne ich nur als alte CNC Drehbänke oder Fräsen.

Und alleine unter einen echten MsDos ein Share zu einem Server zu machen ist nicht so einfach. Ganz zu schweigen von einer DB Anbindung. Irgendwie klingt die Aufgabenstellung komisch.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: FPC Crosscompiler für MSDOS

Beitrag von braunbär »

Der Kunde verwendet eine umfangreiche, unter MS-Dos laufende Warenwirtschaft, an der meine Firma seit den frühen 80er Jahren gearbeitet hat. Damals hat es noch keine brauchbaren Datenbanksysteme gegeben, und wir haben als Grundlage für eine ganze Reihe von Programmen ein Datenbanksystem selbst entwickelt, das auf dem Netzwerkmodell basiert (wesentlich kompakter, effizienter und ressourcenschonender als eine relationale Datenbank, aber aus heutiger Sicht natürlich hoffnungslos veraltet). Er hat derzeit 4 Windows Arbeitsplätze mit VDOS und in der Produktion ganz minimalistisch etliche Rasberry PI Arbeitsplätze, auf denen sich die Mitarbeiter ihre Produktionsaufträge holen und den Produktionsfortschritt dokumentieren.
Nach langem hin- und her möchte der Kunde jetzt doch diese Anwendung beibehalten, weil er kein Programm gefunden hat, das seinen Bedürfnissen auch nur halbwegs entspricht (es stecken sicher mehr als 20 Mannjahre Entwicklung drin), würde aber seine Daten gerne in einer SQL-Datenbank gespeichert haben - erstens, weil er da hinsichtlich der Auswertungen flexibler ist, zweitens, weil ich inzwischen die einzige Person bin, die dieses Programm noch warten kann, und er Sorge hat, ich könnte irgendwann ausfallen, bevor er in Pension geht und seine Firma schließt :D

Ein komplettes Umschreiben der Anwendung kommt für ihn unmittelbar nicht in Frage, das wären sicher nicht unter 10 Mannjahren Arbeit. Die Idee war jetzt, ein Interface zu schreiben, das die Daten von einer SQL Datenbank abholt und für sein Warenwirtschaftprogramm eine Netzwerkdatenbank emuliert. Dieses Interface-Programm muss IRGENDWIE mit seiner Anwendung und mit einer SQL Datenbank, vorzugsweise Maria DB, kommunizieren, und er könnte dann schrittweise über mehrere Jahre verteilt Teile des Programms in ein Windows Programm überführen und dann in ein paar Jahren das DOS Programm ausmustern.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6859
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FPC Crosscompiler für MSDOS

Beitrag von af0815 »

Du wirst aus dem Netzwerkmodell nicht herauskommen, solange DOS auf dem Rechner ist, der die Daten transportieren soll.

Wenn ein modernes BS auf die Emulation zugreift, dann hast du die Datenbanktreiber zur Verfügung. Welche Datenbank verwendet wird ist letztlich egal. Nur noch eine Schicht einziehen verschlimmbessert die Situation. Vor allen wie soll die Emulation erfolgen und zwar so das sie funktioniert. Da hätte ich das meiste Bauchweh.

Was ist, wenn man die NetzwerkDB so lässt, aber die Programme einmal portiert und für die Auswertungen die Daten aus der NW-DB einfach im Batch exportiert. Allerding bin ich mir sicher, die Arbeit würde ich mir nicht unbedingt antun wollen.

Aber ich kenne selbst ein solchen Fall in Wien. Alte stabile Programme sind nicht tot zu kriegen, bis der letzte Wissende stirbt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Stevie
Beiträge: 175
Registriert: Di 27. Feb 2024, 22:40

Re: FPC Crosscompiler für MSDOS

Beitrag von Stevie »

... wäre es nicht am sinnvollsten, ein Tool zu schreiben, das regelmäßig die Datenbank ausliest und deren Inhalt in einen Satz an SQL-Statements überführt oder gleich in eine SQL-Datenbank pumpt? Da ihr das Datenbankmodell selbst entworfen und programmiert habt, sollte das eine zu stemmende Aufgabe sein. Kommt eventuell ein bisschen darauf an, wie groß die Datenbank ist, aber vielleicht sieht das Datenbankmodell ja Timestamps vor. Dann kann man inkrementell vorgehen und muss jeweils nur Deltas verarbeiten, was die Sache wieder flott macht...

braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: FPC Crosscompiler für MSDOS

Beitrag von braunbär »

af0815 hat geschrieben: Do 31. Okt 2024, 20:38 Du wirst aus dem Netzwerkmodell nicht herauskommen, solange DOS auf dem Rechner ist, der die Daten transportieren soll.
Hmmm, ich hatte nicht erwartet, dass sich ein Zugriff von DOS auf die Maria-DB so problematisch sein würde und gehofft, dass es hier jemand gibt, der das schon gemacht hat. Die einzige Alternative, die mir jetzt auf die Schnelle einfällt, ist, die Kommunikation zwischen der DOS Anwendung und einem Schnittstellenprogramm, das unter Windows läuft, über eine Ramdisk zu organisieren. Die Rasberry Pi, auf die er so stolz ist (hat er sich ausgedacht und mit wenig Hilfe von mir selbst umgesetzt :D ), kann er dann allerdings vergessen...

Aber auch bei der Variante wäre ein funktionierender Crosscompiler, der mir ermöglichen würde, den DOS-Teil der Schnittstelle unter Windows mit der Lazarus IDE zu programmieren, angenehm.
Stevie hat geschrieben: Do 31. Okt 2024, 23:06 ... wäre es nicht am sinnvollsten, ein Tool zu schreiben, das regelmäßig die Datenbank ausliest und deren Inhalt in einen Satz an SQL-Statements überführt oder gleich in eine SQL-Datenbank pumpt? Da ihr das Datenbankmodell selbst entworfen und programmiert habt, sollte das eine zu stemmende Aufgabe sein. Kommt eventuell ein bisschen darauf an, wie groß die Datenbank ist, aber vielleicht sieht das Datenbankmodell ja Timestamps vor. Dann kann man inkrementell vorgehen und muss jeweils nur Deltas verarbeiten, was die Sache wieder flott macht...
Die Idee hinter dem Ganzen ist ja auch, dass er dann in den nächsten Jahren Schritt für Schritt Teile vom DOS Programm durch ein neues Windows Programm ersetzen kann, bis irgendwann vom DOS Programm nichts mehr übrig ist..

Mathias
Beiträge: 6971
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: FPC Crosscompiler für MSDOS

Beitrag von Mathias »

@braunbär
Ist dein DOS-Programm zufällig mit Turbo-Vision programmiert ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Stevie
Beiträge: 175
Registriert: Di 27. Feb 2024, 22:40

Re: FPC Crosscompiler für MSDOS

Beitrag von Stevie »

Die Idee hinter dem Ganzen ist ja auch, dass er dann in den nächsten Jahren Schritt für Schritt Teile vom DOS Programm durch ein neues Windows Programm ersetzen kann, bis irgendwann vom DOS Programm nichts mehr übrig ist..
Aber wäre das damit nicht genau gegeben? Du hast stets (mit geringem Nachlauf) eine aktuelle SQL-Kopie, auf der die neuen Programmteile aufsetzen können.

Je nachdem, wie gut Deine Datenbank-Zugriffe bislang gekapselt sind, könntest Du sie auch durch REST-Calls ersetzen (oder parallel doppeln), die Du auf der 'modernen' Seite auffängst und direkt in eine MariaDB schreibst. Dann bekommst Du deine SQL-Variante in Echtzeit für alle neuen Programmmodule. Wenn Du bereits heute eine halbwegs gute Abstraktionsebene in Deinem DB-Backend-Code hast, kannst Du den REST-Server dann direkt weiterverwenden, wenn Du auf eine Web-basierte Client-Server-Architektur umstellen willst.

Wenn der DB-Code jedoch alle Moden, Irrungen und Wirrungen der letzten 40 Jahre mitgenommen hat, könnte das ein ziemlich fundamentales Unterfangen werden...

braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: FPC Crosscompiler für MSDOS

Beitrag von braunbär »

Stevie hat geschrieben: Fr 1. Nov 2024, 17:42 Aber wäre das damit nicht genau gegeben? Du hast stets (mit geringem Nachlauf) eine aktuelle SQL-Kopie, auf der die neuen Programmteile aufsetzen können.
Nein, denn da würde die Bearbeitung der Daten ja nur in einer Richtung laufen. Das Programm, an dem zuerst vorwiegend gearbeitet wird, bleibt das DOS Programm. Veränderungen der Daten aus dieser Netzwerkdatenbank könnten nach deinem Vorschlag in die SQL Datenbank eingepflegt werden (was für sich genommen schon kompliziert genug ist), aber was ist mit der Gegenrichtung? Wenn du im Windows Programm Änderungen an den SQL Daten machst, wie kommen die in die Datenbank fürs MSDos Programm?

Eine Netzwerkdatenbank ist grundlegend anders aufgebaut als eine SQL Datenbank, die SQL Befehle können ungleich komplexer sein als die Befehle des Netzwerk-DBS und daher wäre die Übertragung von Änderungen von SQL in die Netzwerkdatenbank extrem aufwändig.
Mathias hat geschrieben: Fr 1. Nov 2024, 17:22 @braunbär
Ist dein DOS-Programm zufällig mit Turbo-Vision programmiert ?
Nein, die Anfänge des DOS Programms datieren aus 1980, da gab es auch noch kein Turbo Vision. Wir haben damals selbst eine "Screen definition" Sprache samt dazugehörigem "Compiler" entwickelt, um die Gestaltung der Dialoge zu vereinfachen. Das Programm selbst ist in Turbo Pascal 3 geschrieben, das Datendanksystem in Turbo Pascal 5.

braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: FPC Crosscompiler für MSDOS

Beitrag von braunbär »

braunbär hat geschrieben: Fr 1. Nov 2024, 22:37
Stevie hat geschrieben: Fr 1. Nov 2024, 17:42 Aber wäre das damit nicht genau gegeben? Du hast stets (mit geringem Nachlauf) eine aktuelle SQL-Kopie, auf der die neuen Programmteile aufsetzen können.
Nein, denn da würde die Bearbeitung der Daten ja nur in einer Richtung laufen. Das Programm, an dem zuerst vorwiegend gearbeitet wird, bleibt das DOS Programm. Veränderungen der Daten aus dieser Netzwerkdatenbank könnten nach deinem Vorschlag in die SQL Datenbank eingepflegt werden (was für sich genommen schon kompliziert genug ist), aber was ist mit der Gegenrichtung? Wenn du im Windows Programm Änderungen an den SQL Daten machst, wie kommen die in die Datenbank fürs MSDos Programm?

Eine Netzwerkdatenbank ist grundlegend anders aufgebaut als eine SQL Datenbank, die SQL Befehle können ungleich komplexer sein als die Befehle des Netzwerk-DBS und daher wäre die Übertragung von Änderungen von SQL in die Netzwerkdatenbank extrem aufwändig.
Mathias hat geschrieben: Fr 1. Nov 2024, 17:22 @braunbär
Ist dein DOS-Programm zufällig mit Turbo-Vision programmiert ?
Nein, die Anfänge des DOS Programms datieren aus 1980, da gab es auch noch kein Turbo Vision. Wir haben damals selbst eine "Screen definition" Sprache samt dazugehörigem "Compiler" entwickelt, um die Gestaltung der Dialoge zu vereinfachen. Das Programm ist noch in Turbo Pascal 3 geschrieben, das Datendanksystem in Turbo Pascal 5.

PascalDragon
Beiträge: 964
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: FPC Crosscompiler für MSDOS

Beitrag von PascalDragon »

braunbär hat geschrieben: Fr 1. Nov 2024, 16:19
af0815 hat geschrieben: Do 31. Okt 2024, 20:38 Du wirst aus dem Netzwerkmodell nicht herauskommen, solange DOS auf dem Rechner ist, der die Daten transportieren soll.
Hmmm, ich hatte nicht erwartet, dass sich ein Zugriff von DOS auf die Maria-DB so problematisch sein würde und gehofft, dass es hier jemand gibt, der das schon gemacht hat.
MariaDB/MySQL ist eben jünger als die aktive Nutzung von DOS. Da es keine offizielle Unterstützung gibt, müsstest du wenn überhaupt das Netzwerkprotokoll der Datenbank selbst implementieren, was nicht trivial ist.
FPC Compiler Entwickler

Sieben
Beiträge: 292
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Re: FPC Crosscompiler für MSDOS

Beitrag von Sieben »

Wäre das hier vielleicht eine Möglichkeit? Dann könnte das Programm mit sqlcmd auf den MS-SQL Server zugreifen. Das mag zwar nicht die Wunschdatenbank sein, öffnet aber zumindest den Pfad.

Mathias
Beiträge: 6971
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: FPC Crosscompiler für MSDOS

Beitrag von Mathias »

Noch eine Warnung zum DOS Crosscompiler.
Es lassen sich nicht alle Turbo-Pascal Programme damit kompilieren.
Dies ist meine Erfahrung.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: FPC Crosscompiler für MSDOS

Beitrag von braunbär »

Sieben hat geschrieben: Mo 4. Nov 2024, 23:45 Wäre das hier vielleicht eine Möglichkeit? Dann könnte das Programm mit sqlcmd auf den MS-SQL Server zugreifen. Das mag zwar nicht die Wunschdatenbank sein, öffnet aber zumindest den Pfad.
Danke für den Hinweis, schau ich mir an.
Aber ich denke, am einfachsten wir es sein, wenn ich das Schnittstellenprogramm auf Windows entwickle und für die Kommunikation zwischen dem DOS Programm und dem Schnittstellenprogramm eine RAM-Disk nutze. Vor allem, weil sich der Kunde die MariaDB schon in anderen Bereichen im Einsatz hat und wahrscheinlich keine zwei Datenbankserver haben wollen wird.
Oder ich lasse das Free-Pascal Schnittstellenprogramm direkt auf dem Rechner laufen, auf dem der SQL Server steht, und verwende dort ein File auf einer RAMDisk für die Kommunikation. Dann brauche ich die Daten ja auch nur einmal über das Netzwerk jagen.
Mathias hat geschrieben: Di 5. Nov 2024, 08:25 Noch eine Warnung zum DOS Crosscompiler.
Es lassen sich nicht alle Turbo-Pascal Programme damit kompilieren.
Dies ist meine Erfahrung.
Danke! Nachdem in dem Fall der Teil der Schnittstelle, der unter Dos laufen muss, sehr klein ist (der schaufelt ja dann nur die Anfragen und Antworten zwischen der RAMDisk und dem Arbeitsspeicher des Dos Programms hin und her, die Übersetzung der Netzwerkdatenbank-Befehle auf SQL Befehle muss ja dann ohnehin unter Windows erfolgen) werde ich mir den ganzen Aufwand mit dem Cross Compiler sparen und für den Teil das gute alte Turbo Pascal 6 verwenden. Die Inkompatibilität selbst wäre dabei nicht das Problem, weil ich dieses Schnittstellenprogramm ohnehin komplett neu schreiben muss.

braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: FPC Crosscompiler für MSDOS

Beitrag von braunbär »

Sieben hat geschrieben: Mo 4. Nov 2024, 23:45 Wäre das hier vielleicht eine Möglichkeit? Dann könnte das Programm mit sqlcmd auf den MS-SQL Server zugreifen. Das mag zwar nicht die Wunschdatenbank sein, öffnet aber zumindest den Pfad.
Also "SQLCMD" finde ich auf den verlinkten Seiten nicht. Wo muss ich da suchen?

Sieben
Beiträge: 292
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Re: FPC Crosscompiler für MSDOS

Beitrag von Sieben »

Guter Einstieg wäre wohl hier, mehr am Ende des Artikels:

https://learn.microsoft.com/de-de/sql/t ... s=cs1-bash

Die andere Verlinkung diente in erster Linie der Frage, ob euer Programm überhaupt in der Konsole läuft.

Antworten