Afin de répondre aux besoins d’interconnexion de nos applications, nous sommes de plus en plus nombreux à utiliser le client de web services (wsdl2rpg.sh).
Tout d’abord, un rappel : seules les dates > 1970-01-01 sont supportées par le client Axis !
cf http://www-03.ibm.com/systems/power/software/i/iws/faq/index.html#primary4
Pour les services SOAP, le client supporte l’ensemble des types de données utilisables en XML, y compris les valeurs temporelles (date, heure, horodatage). Or, le code généré fourni des valeurs suivant cette structure RPG :
axis-xsd_tm
Charge à vous de faire les conversions suivantes :
- depuis les types RPG Date, Time, Timestamp vers xsd_tm pour fournir des valeurs à l’appel du web service
- vers les types RPG Date, Time, Timestamp vers xsd_tm pour récupérer les valeurs en retour
Vous remarquerez des « bizarreries » sur les domaines de valeurs.
Cette structure correspond en réalité à la représentation classique d’une date (horodatage) dans le langage C, sous-jacent au produit Axis utilisé (référence: http://pubs.opengroup.org/onlinepubs/7908799/xsh/time.h.html).
Aussi, pour les conversions il est préconisé d’utiliser les fonctions de la bibliothèque standard C, comme par exemple strftime et strptime. Pour rappel, l’ensemble des fonctions C sont sensibles à la locale pour la prise en compte des fuseaux horaires et horaires d’été.
Pour vous aider, vous trouverez ci-joint un jeu de procédures permettant de réaliser ces conversions : axistools.zip
Vous trouverez un ensemble de procédures de ce type :
Exemple d’utilisation dans un client :