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 :