Da quando, per lavoro, ho a che fare con un IBM System i (l’AS/400, per intenderci), mi è capitato di avere la necessità di estrarre dati per elaborarli con programmi esterni, scritti da me. La maggior parte di questi programmi sono script PHP che girano sotto Linux, una Debian Lenny. La connessione all’AS/400 avviene via ODBC, attraverso il driver fornito dalla stessa IBM, dopodichè è sufficiente utilizzare le normali funzioni ODBC fornite da PHP5.

Nella prima parte della guida, vedremo come configurare la connessione ODBC fra la nostra macchina Linux (nel caso specifico Debian Lenny, che sarà il prossimo rilascio stabile) e il database DB2 dell’AS/400, un iSeries V5R4:
Installare i pacchetti necessari:
Per prima cosa, è necessario installare alcuni pacchetti che saranno utili in seguito. Alien servirà a convertire il client IBM da rpm a deb mentre UnixODBC sarà il nostro gestore delle connessioni ODBC. Lanciamo quindi, da root, il seguente comando:
apt-get install alien unixodbc
Scaricare iSeries Access:
A questo punto, bisognerà scaricare il Client Access (oggi chiamato iSeries Access): non è altro che il software fornito da IBM per collegarsi all’AS/400 da un PC, e viene rilasciato anche per Linux nelle versioni x86, x64 e PPC. Il pacchetto contiene sia l’emulazione di terminale (che non ci servirà) che il driver ODBC. Per scaricare il software, è necessario registrarsi gratuitamente sul sito IBM; una volta ottenute le credenziali, lì’indirizzo per scaricare iSeries Access (attualmente l’ultima versione per Linux è la 1.4) è questo:
Convertire iSeries Access in .DEB:
Una volta scaricato il pacchetto, è necessario convertirlo da RPM a DEB per poterlo installare comodamente sulla nostra Debian Lenny. Utilizziamo quindi, come root, il programma Alien (pacchetto.rpm è il file che abbiamo scaricato):
alien -d --scripts pacchetto.rpm
Installare iSeries Access:
Dopo la conversione in DEB, il pacchetto va installato con DPKG (pacchetto.deb è il pacchetto appena creato con Alien):
dpkg -i pacchetto.deb
Configurare UnixODBC:
Dopo aver installato tutti i pacchetti necessari e il client fornito da IBM, bisogna impostare UnixODBC in modo che renda disponibile un DSN alle applicazioni che intendano collegarsi all’AS/400. Il file di configurazione interessato è /etc/odbc.ini, a cui aggiungeremo queste righe:
[AS400]
Description = iSeries Access ODBC Driver
Driver = iSeries Access ODBC Driver
System = AAA.BBB.CCC.DDD
Naming = 0
DefaultLibraries = QGPL
Database =
ConnectionType = 0
CommitMode = 2
ExtendedDynamic = 1
DefaultPkgLibrary = QGPL
DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression = 1
LibraryView = 0
AllowUnsupportedChar = 0
ForceTranslation = 0
Trace = 0
La prima riga, tra parentesi quadre, contiene il nome della connessione che dovremo poi utilizzare. Il parametro “System“, invece, è l’indirizzo IP dell’AS/400 sulla nostra rete.
Conclusioni:
A questo punto, il collegamento ODBC verso l’AS/400 è configurato: appuntamento a domani per la seconda parte della guida, in cui vedremo come collegarci all’AS/400 con PHP, attraverso le funzioni ODBC e qualche piccolo accorgimento.




Pingback: ZicZac.it, clicca qui e vota questo articolo!
Pingback: upnews.it
Pingback: PHP5 e AS400: utilizzare DB2 via ODBC con PHP (2/2) - Matteo Moro
Pingback: PHP e AS400 via ODBC: problemi con alcuni caratteri - Matteo Moro
Grazie sei stato di un’utilità estrema
@ermes:
Ne sono felice! Se ti serve (ma probabilmente l’hai già vista) c’è anche la seconda parte della guida: http://www.matteomoro.net/2008/03/12/php5-e-as400-utilizzare-db2-via-odbc-con-php-22/
Gli anni passano ma il problema resta.
Una sola aggiunta: installando oggi l’iSeries Access “a mano” su una Gentoo, mi e’ toccato configurare anche il file odbcinst.ini:
[iSeries Access ODBC Driver]
Description = iSeries Access for Linux ODBC Driver
Driver = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
Driver64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so
Setup64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so
Threading = 2
DontDLClose = 1
UsageCount = 1
Grazie per le imprecazioni che mi hai fatto evitare!
velocissimamente,
Cthulhu
Felice di esserti stato utile e grazie per l’integrazione
Ottima guida.
Solo che io continuov ad avere questo errore:
[01000][unixODBC][Driver Manager]Can’t open lib ‘/opt/ibm/iSeriesAccess/lib/libcwbodbc.so’ : file not found
[ISQL]ERROR: Could not SQLConnect
Ho seguito la tua guida alla perfezione e posso dirti che sono su debian 5, i driver sono a 32bit.
Ciao, ho lo stesso problema:
[01000][unixODBC][Driver Manager]Can't open lib '/opt/ibm/iSeriesAccess/lib/libcwbodbc.so' : file not found
ma il file esiste:
$ ls -l /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
-r-xr-xr-x 1 root root 729284 May 23 2007 /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Tu sei riuscito a risolverlo?
Sono su Debian e ho risolto installato questi pacchetti:
libmotif4 libstdc++5