Anaska est le spécialiste des formations sur les technologies OpenSource en France. En partenariat avec MySQL AB, Talend, Zend et d'autres acteurs de la communauté, Anaska propose un catalogue de plus de 50 formations dédiés aux technologies du libre ainsi que des formations de préparation aux certifications Linux, MySQL, PHP et bientôt PostgreSQL.
Anaska propose aussi aux entreprises une gamme complète de services professionnels, Anaska Services, qui les accompagnent dans le projet de transformation de leur Système d'Information. Cette gamme de services s'étend du conseil à l'assistance technique en passant par l'ingénierie qui en constitue le coeur.
Le 19 Janvier 2007 suite à quelques échanges de mails et grâce à la participation de l'association guide Share j'ai (Cyril PIERRE de GEYER) rendez vous avec Christian Griere (IBM) pour faire le point sur les interactions possibles entre PHP et IBM.
Résumé rapide
Il est possible d'accéder à la base de données DB2 sans problèmes, soit via PDO soit via les connecteurs ibm_db2. La grande nouveauté c'est qu'il est également possible de faire appel à des programmes RPG, Cobol, CL, Java via l'i5 toolkit qu'a fait développer IBM (+ d'infos).
Qu'est ce que le system i ?
« AS/400, iSeries, System i » sont des dénominations commerciales pour désigner les différentes évolutions du System/38. Jusqu'en 1995 le système et les applications utilisaient une architecture CISC 48 bits. En 1995 le système et les applications sont passés sur une architecture RISC 64 bits.
Cette machine a été conçue en 1975 avec pour objectif de profiter de l'expérience des mainframes:
A la base prévue pour les grandes entreprises la machine ne leur a pas été proposée car les coûts de migration étaient trop importants. IBM a alors affecté cette machine au marché des PME.
Fonctionnement
IBM peut à tout moment changer de type de processeur car les applications utilisent un code intermédiaire (sorte de bytecode) indépendant du matériel.
On peut travailler soit en ligne de commande. +/- 2-3000 fonctions, soit en client /serveur soit en mode Web.
La base de données (DB2 for System i) est intégrée à l'OS. Elle respecte le core level de SQL 2003.
Interface 5250 : Interface texte (la plus utilisée historiquement). Interface graphique : Operation Navigator
Sur un System i on peut mettre plusieurs types d'OS (i5/OS, AIX, LINUX) sur des partitions logiques différentes. Pour chaque partition on associe des ressources processeur, mémoire et cartes d'entrée/sortie. Ces ressources peuvent être affectées dynamiquement entre les partitions. De plus l'hyperviseur est capable d'affecter en temps réel à une partition les cycles cpu non utilisés d'une autre partition.
Le nombre de processeur du serveur physique va de 1 à 64 et sa puissance de traitement applicatif peut évoluer entre 1 et 300.
Comment communiquer entre PHP et un « System i » ?
Il existe trois possibilités pour communiquer entre PHP et un « system i » :
Les deux premières méthodes sont classiques il s'agit d'une connexion directe à la base de données DB2 via ibm_db2 ou ODBC.
La troisième méthode permet un interfaçage plus poussé entre PHP et le « system i » via un connecteur développé par une société française (Aura Equipement) pour IBM via Zend.
Les informations sur les deux méthodes étant classiques et facilement trouvables nous allons détailler un peu plus la troisième.
Installation du i5 PHP Toolkit
Il faut installer sur le « System i » un programme qui s'appelle ZendCore for i5/Os. ZendCore for i5/OS fonctionne avec l'i5/OS V5R3 et V5R4. Ce produit doit être commandé à IBM. Il est gratuit ainsi qu'un support Web pendant 3 ans.
Utilisation
L'extension i5 permet de faire appel à plein de nouvelles fonctions. L'exemple suivant nous montre comment faire appel à un programme RPG.
$_GET['codefilm']);
$name_parm_out = array("CODE"=>"CODE_FILM", "TITRE"=>"TITRE_FILM");
$conn = i5_connect($system, $user, $password);
$prepare = i5_program_prepare($pgm_name, $pgm_desc);
$call = i5_program_call($prepare, $parm_in, $name_parm_out);
i5_program_close($prepare);
i5_close($conn);
?>
Quelques tests
Il est également possible de faire appel à des commandes sur le « system i » directement.
"usertest","date"=>"datetest"),$conn);
print_r($usertest);
print_r($datetest);
?>
Test de lecture des valeurs systèmes
Il est possible de modifier les valeurs systèmes. Pour accéder à ces valeurs on utilise i5_get_system_value()
Test par rapport aux DATA AREA
Il est possible de créer un object de type DATA AREA.. Cela consiste en une zone de stockage persistante de type caractère ou décimal. Souvent la DATE AREA est utilisée pour stocker des numéros de facture. Cela permet d'y accéder plus facilement.
Test par rapport aux DATA QUEUE
C'est une structure qui permet d'empiler des données. Cela permet de gérer des processus asynchrones. Ces informations sont généralement utilisées par les différentes applications pour communiquer. Pas pour les utilisateurs.
echo i5_data_area_read("DEGEYERBIB/TAB");
Test création/écriture par API et relecture d'un USER SPACE. Il est possible de faire appel à des API système qui mettent les résultats dans un USER SPACE.
Pour plus d'information : Cyril PIERRE de GEYER / Société Anaska (contact@anaska.com)