Introduzione
Il Sistema iSeries, precedentemente chiamato AS/400, è una macchina IBM molto diffusa, per cui è abbastanza facile avere la necessità di attivare una sessione di lavoro. Il protocollo utilizzato nativamente dall'iSeries è chiamato 5250, e permette di collegare terminali "stupidi", che non devono eseguire elaborazioni particolari. Sebbene si possa utilizzare il classico comando telnet, oppure il tn5250 che si trova nei repository, esiste la possibilità di usare il prodotto iSeries Access, che viene fornito dalla stessa IBM. E' un programma molto valido, a mio avviso addirittura migliore di quello fornito per Microsoft, sebbene manchi di alcune funzioni come l'emulazione stampante. Il pacchetto è stato sviluppato per Suse e per Red Hat, ma con qualche accorgimento possiamo farlo funzionare anche sulla nostra distro preferita.
Installazione
Download
La prima cosa da fare è scaricare il file contenente il pacchetto.
Attualmente si può trovare in versione 6.1, ma anche le versioni precedenti funzionano correttamente. Ed è retro-compatibile, nel senso che la 6.1 dell'emulatore va bene anche su iSeries con installati OS precedenti.
Per scaricarlo è necessario iscriversi: è gratuito e porta via pochi minuti.
http://www-03.ibm.com/servers/eserver/iseries/access/linux/downloads.html (in inglese)
Viene scaricato un file di tipo .rpm, che può essere salvato in una qualsiasi cartella.
Scegliere la versione
E' possibile scegliere se scaricare la versione a 32 bit oppure quella a 64. Ovviamente la seconda va solo su macchine con questa architettura, ma non contiene l'emulatore 5250, per cui è poco utile ai nostri scopi. Una piccola soluzione che ho sperimentato consiste nello scaricare entrambe le versioni, poi installarle entrambe, prima la 32 bit e poi la 64 bit: in questo modo funziona sia l'emulatore 5250, sia l'ODBC che nella versione a 32 bit, su una macchina a 64 può dare dei problemi.
Altri pacchetti necessari
Per far funzionare il programma servono alcuni requisiti indispensabili.
- GNU C Library (glibc 2.2)
- Open Motif (libmotif2)
- xfs
- msttcorefonts
- UnixODBC driver
- ia32lib (se usate la versione per AMD64)
Controllare la versione. Se ce ne sono di più recenti dovrebbero andare bene.
Aggiustamenti manuali
Attenzione: la parte che segue pare non essere più necessaria nelle versioni più recenti di Ubuntu. Provare a installare senza fare queste modifiche: se poi non funziona è sempre possibile modificare. Il programma ibm5250 utilizza font a 100 o a 75 dpi. Ubuntu ne ha diverse, e di due tipi, scaled e unscaled. Per default utilizza le seconde, che però non sono molto amate dal programma ibm. Per questo motivo è necessario andare nel file installato con il pacchetto xfs, e modificarlo per fare in modo che vengano prese prima quelle scaled.
Aprire con un editor di testo e con i privilegi di amministrazione il file /etc/X11/fs/conf. Notare che uno dei "capitoli" del file contiene le "path" per raggiungere i vari font. Eliminare i collegamenti ai due che terminano con ":unscaled". Oppure togliere la parola ":unscaled" ed eliminate gli ultimi due path, che diventano una ripetizione.
Installazione con alien
Installare il pacchetto con il comando alien (ovviamente il nome del file può cambiare).
sudo alien -i iSeriesAccess-x.x.0-1.10.i386.rpm
Il pacchetto si installa nella directory /opt/ibm/iSeriesAccess che non è nel path di sistema. O lo aggiungiamo, ma lo sconsiglio, oppure provvediamo a creare alcuni link
sudo ln -s /usr/X11R6/lib/libcwbcore.so /usr/lib/libcwbcore.so
sudo ln -s /opt/ibm/iSeriesAccess/lib/libcwbcore.so /usr/lib/libcwbodbc.so
sudo ln -s /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so /usr/lib/libcwbodbcs.so
sudo ln -s /opt/ibm/iSeriesAccess/lib/libcwbrc.so /usr/lib/libcwbrc.so
sudo ln -s /usr/X11R6/lib/libXm.so.3 /usr/lib/libXm.so.3
sudo ln -s /opt/ibm/iSeriesAccess/lib/libcwbcore.so /usr/lib/libcwbcore.so
Questo sistema per funzionare richiede che TUTTE le dipendenze siano rispettate. Poiché il pacchetto nasce per altre distribuzioni, è facile che non ci siano tutti i pacchetti necessari, per cui consiglio di utilizzare il sistema del paragrafo seguente, che è anche più semplice.
Installazione con rpm (consigliato)
Il pacchetto rpm si trova nei repository. Lanciare il comando
sudo rpm -i --nodeps iSeriesAccess-x.x.x.0-1.10.i386.rpm
Questo comando si occupa anche di aggiungere eventuali link, in modo da poter richiamare i programmi che interessano senza farli precedere dal ./
Utilizzo
Il comando ibm5250 esegue il collegamento al sistema iSeries, e accetta numerosi parametri che consentono di stabilire come eseguire il collegamento. Per semplificare la gestione dei collegamenti è possibile utilizzare setup5250, che permette di creare dei profili di collegamento ai quali assegnare un nome mnemonico, e stabilire i parametri di collegamento. Tutti i parametri che possono essere assegnati a ibm5250, possono anche essere memorizzati qui, permettendo di creare profili anche piuttosto complessi.
ibm5250 nome-o-indirizzo-del-sistema
Questa è la forma più semplice per eseguire il collegamento. Consiglio di impostare il parametro -LANGID per indicare al programma la lingua da utilizzare. In questo modo si risolvono alcuni problemi di compatibilità e di caratteri non riconosciuti, come la "a accentata" convertita in "chiusa graffa".
ibm5250 nome-o-indirizzo-del-sistema LANGID it_IT
Possibili Problemi
Ci sono alcuni problemi minori, ma molto fastidiosi, che impediscono l'emissione del pannello del sistema.
Font
A volte possono venire emessi degli errori che indicano la mancanza del font "lucida sans-serif": questo è un falso messaggio! In realtà l'errore è altrove, ma l'ultimo messaggio che viene emesso è quello, per cui è inutile perdere tempo a cercare il perché e il percome. Il problema può nascere per due motivi: controllare di avere installato il pacchetto xfs e di NON avere la codifica caratteri UTF-8; invece di questa utilizzate la ISO-8859-1 oppure la ISO-8859-15 che fornisce anche il simbolo dell'Euro.
libXm.so.3
Usando la versione di Ubuntu per sistemi a 64bit potreste avere qualche problema di compatibilità con questa libreria, che appartiene al pacchetto OpenMotif. Infatti l'oggetto è presente come link, ma punta ad un file a versione 64bit, che il programma IBM non "vede". La soluzione non è complessa: scaricare un pacchetto qualsiasi che contenga la libreria libXm.so.3.x.x, basta fare una ricerca con Google. Aprirlo ed estrarre il file che ci interessa. Metteterlo nella cartella /usr/lib32 e creare un link nella stessa cartella che si chiami liibXm.so.3 con il comando
sudo ln -s /usr/lib32/libXm.so.3.x.x /usr/lib32/libXm.so.3
Ora il programma IBM può vedere correttamente la libreria.
GNOME e KDE
In KDE ci sono molti meno problemi nell'esecuzione del programma.
Emulazione stampante
Questo pacchetto non contiene un emulatore per la stampante, ma è possibile comunque utilizzare un altro programma per stampare da iSeries.
Esiste un comando molto potente, l'lp5250d che consente di reindirizzare quello che viene ricevuto dall'iSeries a una coda di stampa a nostra scelta tra quelle presenti sul nostro PC. Il file si trova nel pacchetto tn5250 che si trova nei repository, e che consiglio di installare in aggiunta all'iSeries Access, anche se non usato, perché contiene delle bellissime icone con lo schermo di logon dell'AS/400.
Quindi dare
sudo apt-get install tn5250
in un terminale.
Ora è possibile lanciare, automaticamente in una sessione, dentro un file appositamente costruito oppure manualmente il seguente comando:
lp5250d env.DEVNAME=PRTLINUX outputcommand="scs2ascii | lpr -Pcoda-sul-pc" 111.111.111.111
Il comando scritto così permette di creare automaticamente una stampante su iSeries con indirizzo 111.111.111.111, se attivata l'autoconfigurazione, che si chiamerà PRTLINUX, il cui output viene convertito da scs a ascii e inviato alla coda "coda-del-pc".
La cosa interessante è che è possibile aggiungere altre opzioni tra il nome del comando e prima dell'indirizzo, seguendo questa sintassi
env.IBMparametro
Il parametro può essere qualunque tra quelli presenti nel comando CRTDEVPRT su iSeries. Tanto per fare un esempio sicuramente non esaustivo, un parametro piuttosto importante è MFRTYPMDL, che permette di indicare il tipo e modello di stampante. Nel nostro caso il comando diventerebbe
lp5250d env.DEVNAME=PRTLINUX env.IBMMFRTYPMDL="*HP5" outputcommand="scs2ascii | lpr -Pcoda-sul-pc" 111.111.111.111
per creare una stampante con lo stesso nome, che il sistema vede come una HP5. Naturalmente ci si può sbizzarrire con i vari parametri, fino a trovare il valore giusto, e dove non si arriva con i parametri diretti, si può arrivare con il WSCST, ma questa è una trattazione che esula dagli interessi di questa guida.
Un altra cosa piuttosto interessante che si può fare con questo comando, è di utilizzare il valore scs2pdf, che trasforma l'input, in formato scs, in un pdf, del quale dovremo ovviamente dare il nome. Naturalmente possiamo creare un comando che riceva il flusso pdf e crei un file con un nome specifico.
(Nota: ho fatto delle prove e ho visto che i doppi apici funzionano. Non so se questo vale per qualsiasi tipo di code page.)
