www.qtsoftware.de |
ForDBC |
Zugriff auf Datenbanken und Tabellen
in Fortran unter Windows |
Mit ForDBC kann der Fortran Programmierer unter
Windows mittels herkömmlicher SQL Kommandos aus Tabellen in Datenbanken
gezielt lesen und in sie schreiben.
Fast alle gängigen Datenbanken (wie bspw. von Oracle,
Microsoft, Sybase, MySQL) und Tabellenkalkulationen (bspw. Excel oder
Lotus) bieten den Zugriff über den Open Database Connectivity Standard
(ODBC) an, der die Grundlage von ForDBC darstellt.
Unter Windows ist eine ODBC Schnittstelle mit entsprechenden Funktionen
bereits implementiert. Allerdings ist sie für Fortran Programmierer
nur mit erheblicher Mühe und ausführlichen Kenntnissen der gemischtsprachlichen
Programmierung zu verwenden.
ForDBC bietet hier Abhilfe. Es stellt Fortran spezifische INTERFACEs zu
den ODBC Funktionen der Version 3.5 zur Verfügung, so daß sämtliche
ODBC Funktionen als SUBROUTINE oder FUNCTION in Fortran aufzurufen sind.
Des weiteren enthält ForDBC hunderte von ODBC bzw. SQL spezifischen
Konstanten sowie Beispielprogramme, die die Nutzung der grundlegenden
Funktionen zeigen (Beispiel s.u.).
Die Beschreibung der ODBC API selbst findet bzw. befand sich beim Compaq/Digital/Intel
Visual Fortran in der Online-Hilfe. Ansonsten ist sie im Microsoft Windows
Platform Software Development Kit (SDK) zu finden, daß mit vielen Microsoft
Entwicklungswerkzeugen mitgeliefert wird (bspw. MS
Visual Studio). Oder man findet sie auf Microsofts
Developer WebSite.
Um den Einstieg in die Programmierung mit ODBC zu erleichtern, ist ForDBC
mit einem deutschen
Handbuch ausgestattet, daß anhand mehrerer Beispiele den
grundsätzlichen Aufbau einer ODBC Applikation in Fortran beschreibt.
Diverse grundlegende, ablauffähige Beispiele, vollständig in
Fortran programmiert, zeigen wie man auf Microsoft Access-und Excel-Tabellen
lesend und schreibend zugreift (mittels Verwendung von SQL SELECT und
INSERT Befehlen).
Für Benutzer von Compaq und Intel Visual Fortran steht ein Workspace
(.dsw) bzw. eine Solution (.sln) bereit, die alle Beispielprojekte und
Quellcodedateien enthält. Im Debugger kann damit der Ablauf der Beispielprogramme
leicht nachvollzogen werden. Für Intel Visual Fortran Besitzer (ab
v11.1) sind sowohl eine 32-Bit als auch eine 64-Bit Version von ForDBC
erhältlich.
Demo-Version
Ein ForDBC Demo steht hier zum Download
(ForDBC_326.zip, ca. 11 MB) zur Verfügung. Das Paßwort zum
Entpacken ist auf Anfrage
erhältlich.
Das Demo enthält die komplette ForDBC Installation für Intel
Visual Fortran, die durch Bezug einer Lizenzdatei (wird beim Kauf per
email geliefert) freigeschaltet. Die Demolizenz ist hinsichtlich der Laufzeit
und der Zugriffsanzahl beschränkt.
Zum schnellen Einstieg sind unten
einige Video-Tutorials aufgeführt.
Beispiel
ForDBC wird mit einfachen Beispieldatenbanken - u.a. eine
Excel-Tabelle (ODBCTest.xls) und eine MS/Access-Datenbank (test-db.mdb)
- geliefert. Die MS/Access-Datenbank enthält eine Tabelle namens
"Tabelle1", deren Aufbau und Inhalt wie folgt aussieht:
Sie enthält also 4 Spalten mit Namen "ID",
"I4", "DP" und "STR". Das Beispiel soll
dazu dienen, den Umgang mit den typischen Fortran Variablentypen INTEGER,
REAL bzw. DOUBLE PRECISION und CHARACTER zu zeigen.
Um alle Werte der Tabelle abzufragen, würde man in SQL (SQL = Structured
Query Language) bspw. wie folgt formulieren:
SELECT id, i4, dp, str FROM tabelle1
Will man den SQL Befehl in einem Fortran-Programm ausführen,
so ist dies mit einer ODBC Funktion, die viaForDBC bereitgestellt wird,
möglich:
iRet = SQLExecDirect( hStmt, &
"SELECT id,i4,dp,str FROM tabelle1"//CHAR(0), &
SQL_NTSL )
Damit wird zwar der SELECT-Befehl ausgeführt, aber
um den Tabelleninhalt in einem Fortran-Programm zu erhalten, sind noch
die Werte der Tabellenzeilen in korrespondierende Fortran Variablen zu
transferieren. Wir deklarieren hierzu die Fortran-Variablen (hier in Fortran
77 Notation)
INTEGER*2 Id
INTEGER*4 I4
DOUBLE PRECISION DP
CHARACTER Str*30
denen wir sinnvollerweise Namen gegeben haben, die denen
der Spalten entsprechen. Durch sogenanntes Column- bzw. Parameter-Binding
werden die Fortran-Variablen an die Spaltenangaben im SQL-Befehl gebunden.
Z.B. bindet der Aufruf
iRet = SQLBindColI2( hStmt, 1, &
SQL_C_SSHORT, Id, 0, cbFixedId )
den ersten Parameter ("id") des obigen SELECT-Befehls
an die Fortran-Variable "Id", die wir oben als INTEGER*2 deklariert
haben. Wird anschließend der SQL-Befehl
iRet = SQLFetch( hStmt )
ausgeführt, so wird der Fortran-Variablen "Id"
der Wert zugewiesen, der sich in der mit "id" bezeichneten Spalte
der Tabelle "tabelle1" in der gerade "aktuellen" Zeile
befindet. Intern wird von SQLFetch ein Zeilen-Cursor geführt, der
beim Aufruf von SQLFetch intern um 1 erhöht wird. D.h. um alle Ergebnisse
des SELECT-Befehls zu erhalten (d.h alle Zeilen der Tabelle), ist der
SQLFetch-Aufruf zu wiederholen.
Ein vollständiges Beispielprogramm in Fortran, das
zeigt, wie man obigen SELECT-Befehl mittels ODBC bzw. ForDBC umsetzt,
finden Sie hier
(noch unter Verwendung der etwas älteren ForDBC Version 2.2).
Video-Tutorials
Für Intel Visual Fortran Benutzer haben wir diverse
Videos erstellt, die einen schnellen Einstieg in die Benutzung von ForDBC
ermöglichen.
Die .mp4 Videos können Sie durch Klick mit der rechten Maustaste
auf den Videotitel bzw. den Link lokal auf Ihrem Computer speichern (ansonsten
Links-Maus-Klick und das Video sollte in Ihrem Browser starten). Unter
Windows sind die Videos im Windows Media Player lauffähig
ForDBC Videos |
Größe / Dauer
|
ForDBC
Installation
Das Video zeigt den Download von ForDBC, die anschließende Installation
und erklärt dann den Aufbau und die wesentlichen Elemente. Es
folgt der Start der MS/Visual Studio Solution in VS2013 inkl. automatischer
Konvertierung der VS2008 Projekte.
|
27,9 MB
10:34 min
|
Einführung
in die Benutzung von ForDBC
Anhand der Beispielprogramme wird der Aufbau der Intel Visual Fortran
Projekte sowie deren wesentlichen Compiler- und Linker-Einstellungen
(properties) gezeigt. Nach dem Erstellen (Build) eines ForDBC Beispielprogramms
wird der Ablauf des Programms im Debugger demonstriert und dabei die
wesentlichen Elemente eines ODBC Programms erklärt.
|
147 MB
55:40 min |
Anlegen
einer ODBC Datenquelle (DSN)
Einige der ForDBC Beispiele verwenden ODBC Datenquellennamen (data
source names). Das Video zeigt wie man einen DSN anlegt.
|
39,5 MB
11:46 |
Installation
of Microsoft ODBC Drivers
Für diejenigen, die kein MS/Excel oder MS/Access besitzen, die
ForDBC Beispiele aber dennoch ausprobieren oder in Fortran auf Exceldateien
(.xls, .xlsx) bzw. Accessdateien (.mdb, .accdb) zugreifen wollen,
wird gezeigt wie die kostenlosen Microsoft Data Access Components
(MDAC für 32-Bit) und die MS/Access Runtime Distributables (64-Bit)
geladen und installiert werden. |
16,7 MB
6:10 min |
SQL
Error [ODBC Microsoft Access Driver]: Unable to open registry key
...
Wenn beim Verbinden (connect) mit einer MS/Accessdatenbank ein Zugriffsfehler
aufgrund unzureichender Berechtigungen (ACE) auftritt, wird hier gezeigt,
wie man die ODBC Zugriffsberechtigungen im Windows Betriebssystem
ändert. |
8 MB
2:39 min |
Abb.: ForDBC Beispielprogramm (T_ODBCAccessRd)
in Visual Studio mit Solution- & Server-Explorer
Support, Schulung, Programmierung etc.
Wenn Sie Fragen zu ForDBC haben, steht Ihnen der Entwickler
gerne mit Rat und Tat zur Seite. Wir bieten sowohl Schulungen
zu ForDBC an oder übernehmen auch Programmieraufträge,
wenn Sie die Anbindung eines Fortran Programms an eine Datenbank extern
erledigen lassen wollen.
Referenzen - was Kunden sagen:
John Nichols (Texas A&M University): "I
very rarely spend hard won research dollars on a Fortran Commercial Product,
except for Intel compiler, I bought the NAG library a long time ago, but
after trying two other ODBC connection Fortran methods, I can actually
say the FORDBC is solid and I am now enjoying it." (siehe
auch IVF
Forum).
Dr. A. M. (Siemens AG, Energy Sector, Nürnberg), 2007: "Wir
haben vor einiger Zeit ForDBC bei Ihnen erworben und haben damit auch
sehr gute Erfahrungen. ... Nochmals vielen Dank - wir empfehlen Sie immer
gern weiter und Sie können uns auch jederzeit als Referenz angeben."
Mike G, Australia 13.1.2015): "I think
ForDBC is a first-rate system – easy to use, intuitive, and very much
better than Canaima’s F90SQL. Thanks."
|