We're getting an install failure with REXX/SQL 2.5 with OORexx 4.0.1 and DB2 9.5 under Linux (details to follow if necessary). See the attached REXXSQL_make_Error.txt
Log of make errors
There is discussion of this in Google Groups: http://groups.google.com/group/comp.lang.rexx/msg/6478c2c8ae77bfc1?
Please download the Rexx/SQL 2.8 beta1 source from SourceForge. This version now supports ooRexx 4.x. I've built using ooRexx 4.0.0, so should work with 4.0.1. Have not tried with DB2 however.
We're presuming that 2.8 beta was a typo for 2.6 beta. We had a few problems with the install; see http://swiftys.org.uk/REXXSQL2.5beta.html
I couldn't get past "Call SQLLoadFuncs" in any program; mine or samples. Syntax error: Routine SQLLOADFUNCS not found.
The RxFuncAdd call succeeded. Didn't 4.0 add validation that the routine could be found?
The comment dated: 2010-08-24 09:49:37 GMT was from me. The "Remember me" on Sourceforge didn't. I'm having one of those days...
I've uploaded a new source distro; 2.6B2.
This should build without problems with ooRexx 4.x and DB2. (I've just built it with DB2 9.7 on SuSE 10 x64 and ooRexx 4.0.1)
I haven't been able to run it successfully as I don't know how to configure DB2 for the SAMPLE database :-(
It did get the point of connecting so the loading of Rexx/SQL was fine.
Try running the sample Rexx/SQL scripts with the rexxsql binary first; it will give you more details about missing runtime dependencies.
Running any program with the rexxsql binary works. Running any program with /usr/bin/rexx fails at the call to SQLLoadFuncs: Routine not found: "SQLLOADFUNCS".
I copied my test program back to our old server, where with IBM Object REXX and REXX/SQL 2.4 it ran perfectly (wanted to ensure that I hadn't made a typing error).
Is the directory in which librexxsql.so resides in LD_LIBRARY_PATH ?
We put a link to librexxsql.so in /usr/lib and got success... once. Subsequent uses get Segmentation Fault at the first call to any SQLxxxxx routine.
There were a plethora of build errors. See http://swiftys.org.uk/rexxsql2.6B2_make.html
The trace of the Segmentation Fault is at http://swiftys.org.uk/rexxsql2.6B2_seg_fault.html if you want a little light reading.
Sorry I can't help with runtime errors :-(
I've tried to work out how to connect to the DB2 instance I have installed, but there is so much information about how to configure the db2dsdriver.cfg file (or should it be the db2cli.ini file), that I just have no idea what should be in these files, or where they should be that I can't proceed.
I downloaded the DB2 Express C Virtual Machine and used all default usernames andthe installed the DB2 Data Server Driver for ODBC and CLI on the same VM but as a general user (virtuser).
I ran the script to create the SAMPLE database as the db2inst1 user.
I tried changing the sample db2dsdriver.cfg in the directory ownerd by virtuser (was part of DB2 Data Server Driver for ODBC and CLI) , but Rexx/SQL can't find the file or the SAMPLE database alias.
I have no idea the difference between alias, database name, instance name.
So unless you can give me some directions then trying to support DB2 is a waste of my time :-(
I'd also like to connect to the VM with DB2 on it from other machines, but don't know how to setup this configuration either.
IBM's claim that DB2 Express C is "simple" to install and use is a joke.
I've never installed a DB2 server before, but I'll install it on my PC here at home. Then I'll get a colleague to access it from their home. This will prove that (a) it works, and (b) that I've opened the right port on my router.
Once we get past this, I'll send you the *.DB2 file that my colleague used.
The byproduct of this is that I'll be able to use DB2 tables on http://swiftys.org.uk
The error we get is from a Linux system where everything is local. So we have DB2 9.7, ooRexx 4.0.1 and REXX/SQL 2.6Beta (or is that 2.8Beta?) all on the same Linux system. Our first SQLCONNECT() call works, after that we get Segmentation faults. How close to this can you come?
My first call to SQLCONNECT() fails because I can't work out what needs to go into the db2dsdriver.cfg file (or should it be the db2cli.ini file). So until I know what values need to be in these files, I can't get past SQLCONNECT()
I don't understand why you would need to touch any *.cfg or *.ini files. I installed DB2-Express on my Windows system, created the SAMPLE database (In the "Getting Started" app, which launched automatically) and I was all done, apart from having to define the SAMPLE database as an ODBC resource, as by default it does not enable ODBC).
Because I am trying to setup the client connection details on a Linux box using the DB2 CLI, not ODBC. The server is on Linux; the client is on Linux.
I have also setup a client on Windows to try and connect to the Linux server, using the DB2 CLI; NOT ODBC.
This is why I need to change these files.
I have no understanding of the difference between CLI and ODBC (nor really what ODBC is). After installing DB2 on our linux system, we used the commands:
$ db2 catalog tcpip node its remote its.uk.ibm.com server 50000
$ db2 catalog db hardware as HWLOCAL at node its
"its", "its.uk.ibm.com", "hardware" and "HWLOCAL" are local names. I think that the name "its" as a node just links the above two commands.
Then we tested this with:
$ db2 connect to HWLOCAL user hwdb2
I modified my program to do nothing but use SQLVARIABLE:
If RxFuncQuery('SqlConnect') then do
Call RXFuncAdd 'SQLLoadFuncs','rexxsql','SQLLoadFuncs'
... this works first time around, but gets a Segmentation Fault at the last like if I run it again. So, there's no need to connect to anything.
"like" as in "line"
Breaking news: If we call RxFuncAdd and SQLLoadFuncs *every* time we run the code, the Segmentation Faults go away, and the code runs (I tried SELECT * FROM SYSIBM.SYSTABLES).
Yes this is correct. SQLLoadFuncs() does some internal initialisation necessary for correct functioning. Internally SQLLoadFuncs() checks if the other functions have been loaded and only loads them if required.
The documentation has been changed to explain that SQLLoadFuncs() MUST be called by each Rexx/SQL program.
Set to pending awaiting release of new version with new documentation.
Thanks! I'm happy with this. All my programs use one subroutines to load REXX/SQL, so a simple change for me.
But, please, satisfy my curiousity: Did this behavious change since 2.4? I have hundreds of programs working perfectly with 2.4, all checking for SQLCONNECT, and skipping the SQLLOADFUNCS if it is already loaded.
Or have I just been the luckiest person in the universe. and they're working by chance? :-)