With ForDBC the Fortran programmer can read and write tables of databases using common SQL commands.
ForDBC is based on the ODBC API (ODBC=Open Database Connectivity Standard) which is part of the Microsoft Windows System. And so, any database, which comes with an ODBC driver becomes accessible in your Fortran program. This is the case for databases of manufactures such as Oracle, Microsoft, IBM, Sybase, MySQL. And this is also true for spreadsheets created with Excel or Lotus.
On Windows an ODBC interface is ready for usage by C/C++ programmers. However the ODBC functions are not easy to access by a Fortran programmer because the documentation and the tools supplied by Microsoft are designed for C/C++ or VB programmers. ForDBC offers help. The Fortran interface provided by ForDBC is complete with respect to the ODBC v3.5 specification. This means that with ForDBC you can call all of these ODBC functions as if they were programmed in Fortran. Furthermore hundredths of ODBC and SQL specific constants are supplied. Simply include in your Fortran program the source line
and you are ready to use the ODBC functions and constants as you find them documented in the Windows ODBC API. This documentation either comes with your compiler (e.g., Intel Visual Fortran, or Compaq Visual Fortran, or Microsoft Visual Studio) or it can be found in the Microsoft Windows Platform Software Development Kit (SDK) which is supplied with most software development tools offered by Microsoft. Or you find it on Microsoft's Developer WebSite. Because getting started with ODBC can be time-consuming, ForDBC is equipped with several example programs (completely in Fortran) which show you how to use ODBC. They demonstrate how to read from or write to database tables. They provide a common Microsoft Access database (.mdb) or an Excel spreadsheet (.xls) for demonstration, so you don't have to worry about setting up a SQL database in the beginning.
ForDBC comes with a compact documentation
(PDF) which provides you with the essential information that you need
for a quick start into ODBC programming.
Users of Compaq Visual Fortran and Intel Visual Fortran
are supplied with a complete workspace (.dsw) and solution (.sln), respectively,
which contains several sample projects which show how to access a database
in several ways. So, a simple "Build" creates all the examples
from scratch. And you are ready to debug them to understand how they work.
If you want to test ForDBC, download
the ForDBC demo (ForDBC_325.zip, approx. 9 MB) and send
us an email to obtain the password for unpacking the .zip-file.
Prices & Licensing
For the other compilers, we deliver a single user licence
and the software including the documentation by email. You can use ForDBC
in your programs (.exe) and distribute them without any royalty payments
or runtime fees.
ForDBC provides you two simple data bases - an MS/Excel sheet (ODBCTest.xls) and an MS/Access database (test-db.mdb). The MS/Access database contains a table named "Tabelle1". Its structure and contents:
This table contains 4 columns named "ID", "I4",
"DP" and "STR". This example shall demonstrate how
to use the common Fortran variable types INTEGER, REAL. DOUBLE PRECISION
((SQL = Structured Query Language). If you want to execute this command in a Fortran program, then you can do so calling an ODBC function which is made availabe via ForDBC:
iRet = SQLExecDirect( hStmt, & "SELECT id, i4, dp, str FROM tabelle1"//CHAR(0), & SQL_NTSL ) ! the command string must be zero-terminated
This executes the SELECT command, but it does not deliver the table's contents. To get this in a Fortran program, the values in the table's rows have to be transferrred into associated Fortran variables ("bound variables"). We declare these Fortran variables (here in Fortran 77 notation)
whose names are simply identical with those of the table's columns (for better understandance). These Fortran variables are bound to column specifications in the SQL command by calling the ODBC function SQLBindCol or SQLBindParameter, respectively. For example:
iRet = SQLBindColI2( hStmt, 1, & SQL_C_SSHORT, Id, 0, cbFixedId ) ! SQLBindCol variant for INTEGER*2 argument (Id)
binds the first parameter ("id") of the SELECT command to the Fortran variable "Id" (INTEGER*2). If then the ODBC function
is executed, the Fortran variable "Id" will hold the value which is found in the current row of the column labeled "id" in table "tabelle1". Internally SQLFetch uses a row cursor which is incremented each time SQLFetch is executed. This means, to get the whole result set of the SELECT command, SQLFetch is to be called repeatedly (in a loop).
A complete example program which demonstrates how the SELECT command above is programmed in Fortran can be found here (note: this still uses ForDBC v2, a previous version of ForDBC).
Support, Training etc.
If you have questions regarding ForDBC, we would be happy to assist you. We also offer ForDBC trainings or develop ODBC based software, if you prefer to have the database access being programmed in Fortran by some external expert.
References - what customers say
J.N.: "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." (quote from IVF Forum)
Delivery, Licensing, Requirements
QT software GmbH 2015. All rights of the owners of those registered names
listed in this document are accepted without any restriction. Excel and
Windows are registered trademarks of the Microsoft Corporation, U.S.A..
Notes regarding liability and copyrights, trademarks used on this page.