Binaere Format ISAM-Files (IBM) mit C
-
Hallo Zusammen,
also nach gut 8 Stunden Suche bei Tante Google hoffe ich vielleicht auf einen Tipp.
Mein Problem : Ich muss mit C auf ISAM-Files zugreifen, hab aber nirgendwo binäre Bauanleitung für ISAM-Files gefunden. Ja ich weiß es heißt nur IndexSequenzell ...,
aber es mußte doch irgendeine Grundstuktur geben, die IBM mal entwickelt hat ?? oder ?? Der Rest wäre dann nur noch Fleißarbeit.
Oder gibt es vielleicht eine wirklich freie Bibliothek ? für Linux/Unix ! Windows wäre als Zugabe auch nicht schlecht !
-
so wie ich das verstehe (hab davon keine ahnung) ist ISAM ein konzept, eine idee, ein muster.
du musst also wissen, von wem die isam dateien erstellt wurden, also welchem dbms.
-
Klingt irgendwie, als sollst du von nem ibm mainframe auf unix-kisten portieren? Schonmal einfach im texteditor ansgeschaut?
Diese ISAM-Dateien sind wahrscheinlich in der Doku des Betriebssystems zu finden.Im BS2000 siehts glaub ich so aus, dass du einen Schlüssel von 8 Byte hast und anschließend den Datensatz bis zum Ende der Zeile. Vielleicht machen die das ähnlich..
solltest du einfach COBOL portieren wollen, hilft dir alternativ auch das Hanbuch zum Compiler
-
Das mit der MainFrame Portierung ist gut geraten
Prinzipell geht es darum ein Assembler-Prog der MainFrame kompatibel für alle Plattformen zu machen. Um nicht seitenweise Assembler-Prog zu übersetzen (lernen) suche ich halt den Aufbau und wie ISAM die Zeiger wirklich verwaltet.
(wo befinden sich z.B LOCK für Satzspeeren usw.)
Eigentlich sollte man das Ganze in ein DBMS klemmen, aber nunja soll nicht so sein.
Ein Wort zu Cobol .. Ich mag kein Cobol und außerdem ist es echt zu langsam dafür. Ich rede da über eine Unmenge Zugriffe in kurzer ZeitAlso ich bin immernoch auf der Suche ! Vielleicht hat jemand eine Idee für mich !
Danke an alle die mal drauf geschaut haben !!
-
Mal bei ibm angefragt?
hab von MVS leider auch keinen Plan, bin froh, dass ich die 4 Mal im Jahr die ich aufs BS2000 gehe, damit zurecht komme.
-
rasi schrieb:
Hallo Zusammen,
also nach gut 8 Stunden Suche bei Tante Google hoffe ich vielleicht auf einen Tipp.
Mein Problem : Ich muss mit C auf ISAM-Files zugreifen, hab aber nirgendwo binäre Bauanleitung für ISAM-Files gefunden. Ja ich weiß es heißt nur IndexSequenzell ...,
aber es mußte doch irgendeine Grundstuktur geben, die IBM mal entwickelt hat ?? oder ?? Der Rest wäre dann nur noch Fleißarbeit.
Oder gibt es vielleicht eine wirklich freie Bibliothek ? für Linux/Unix ! Windows wäre als Zugabe auch nicht schlecht !Es gibt nicht "die" ISAM-Spezifikation. Da gibt es verschiedenste Umsetzungen.
Die meisten ISAM-Dateien, die mir über den Weg gelaufen sind, waren nach einem einfachen Prinzip aufgebaut (Schlüssel, Datensatz, Schlüssel, Datensatz, ... - bis in alle Ewigkeit).
Manchmal hast du auch zusätzlich oder alternativ noch eine Indexdatei, in der einfach alle Schlüssel und Offsets im Datenfile vermerkt sind (die Datei ist kleiner, das Suchen damit meist schneller).
Was du brauchst ist also die Angabe über die binäre Größe des Schlüssels und über die binäre Größe des Datensatzes, sowie über die Typen, um Schlüssel und Datensätze laden zu können. Wenn die Datensätze komprimiert sind, brauchst du zusätzliche Angaben (nämlich, wo die gespeicherte Größe steht und wie die Daten komprimiert wurden).
Die Informationen müßtest du eigentlich der Spezifikation der ursprünglichen Software entnehmen können.
Eventuell musst du noch Konvertierungen LittleEndian <-> BigEndian durchführen, wenn die Daten auf dem Großrechner geschrieben wurden. Das kommt dann auf die Architektur an.
-
naja, mit den endians seh ich da nicht sooo die Probleme, da er wahrscheinlich eh von EBCDIC nach ASCII konvertieren muss..
-
Hmm wahrscheinlich habt ihr alle Recht. Das mit dem Umsetzen der Zeichensätze ist nicht das Problem. Schlüsselaufbau, Länge oder so kann man schon aus den Daten auslesen. Was ich immer gesucht habe, ist wie verwaltet eigentlich das File paralle Zugriffe, ohne eine DBMS . Da lag ich in meinen Überlegungen wohl falsch. Das File macht´s nicht und ein DBMS in dem Sinn gibt´s nicht weil das System der MAINFRAIM das DBMS eingebaut hat. => Ergo Mist => entweder ich baue selbst ein Handle nach, oder ich benutze existierende Bibliothken.
Letzteres ist wohl einfacher, aber gibt´s auch eine Bibliothken die sowohl unter Unix/Linux als auch unter Win32/64 läuft(Also natürlich nur einheitlicher Syntax
)
Unix/Linux würde mir ja reichen. Vorzugsweise frei !!
Hat jemand eine Idee ?