IBM a commencé à publier dans la nuit les annonces concernant les fonctionnalités livrées dans la TR3 (7.3) / TR7 (7.2) :

http://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/8/877/ENUSZP17-0628/index.html&lang=en&request_locale=en
https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM%20i%20Technology%20Updates

Parmi ces fonctionnalités, ce sont principalement les capacités de production de données au format JSON qui sont attendues !

En attendant la disponibilité la TR3, voici un exemple de ce que l’on peut réaliser aujourd’hui avec YAJL (Yet Another JSON Library), proposé par Scott Klement. C’est actuellement l’outil de référence pour produire et lire du JSON depuis un programme RPG.

Ci-dessous, un exemple avec un petit programme RPG qui permet de parcourir un flux JSON sans connaitre préalablement sa structure :

Compilation :

ADDLIBLE LIB(YAJL)

CRTBNDRPG PGM(NB/YAJL_GEN) SRCSTMF(‘/home/NB/yajl/generic parser.rpgle’)

Exemple d’appel avec un flux JSON récupéré sur le site http://json.org/example.html

CALL YAJL_GEN ‘/home/nb/yajl/json1.json’

Produit :

4 > CALL PGM(YAJL_GEN) PARM(‘/home/nb/yajl/json1.json’)
DSPLY . (object)
DSPLY .. glossary (object)
DSPLY .. title (string)
DSPLY example glossary
DSPLY … GlossDiv (object)
DSPLY … title (string)
DSPLY S
DSPLY …. GlossList (object)
DSPLY ….. GlossEntry (object)
DSPLY ….. ID (string)
DSPLY SGML
DSPLY ….. SortAs (string)
DSPLY SGML
DSPLY ….. GlossTerm (string)
DSPLY Standard Generalized Markup Language
DSPLY ….. Acronym (string)
DSPLY SGML
DSPLY ….. Abbrev (string)
DSPLY ISO 8879:1986
DSPLY …… GlossDef (object)
DSPLY …… para (string)
DSPLY A meta-markup language, used to create markup langua
DSPLY ……. GlossSeeAlso (array)
DSPLY ……. (string)
DSPLY GML
DSPLY ……. (string)
DSPLY XML
DSPLY ….. GlossSee (string)
DSPLY markup