Depuis la V 7R2, il est possible de lire des données système directement depuis une instruction SQL.
Il est aussi possible de lire le contenu d’une DTAARA grâce à une fonction SQL. Voici comment …. ** Update V7R4
Dans un premier temps, il faut créer un PGM pour lire la dtaara :
PGM PARM(&VERSION)
DCL &VERSION *CHAR LEN(8)
RTVDTAARA DTAARA(ARVERSION) RTNVAR(&VERSION)
ENDPGM
Compiler le module :
CRTCLMOD MODULE(MYLIB/GETDTA) SRCFILE(MYLIB/QCLLESRC)
Compiler le programme de service
CRTSRVPGM SRVPGM(MYLIB/GETDTA) MODULE(MYLIB/GETDTA) EXPORT(*ALL)
Puis, définir la fonction SQL dans le membre source GETVERSION dans MYLIB/QSQLSRC
Create Function
GetVersion ()
Returns CHAR(8)
Language CL
Specific GetVersion
Deterministic
No SQL
Returns Null on Null Input
No External Action
Not Fenced
External Name ‘MYLIB/ GETDTA(GETDTA)’
Parameter Style SQL;
Lancer la compilation de la fonction :
RUNSQLSTM SRCFILE(MYLIB/QSQLSRC) SRCMBR(GETVERSION)
À partir de n’importe qu’elle session SQL connectée à votre IBMi lancer la requête:
SELECT GetVersion() FROM SYSIBM/SYSDUMMY1
Depuis la V7R4, il est possible de lire le contenu d’une DATAARA sans avoir à créer une fonction.
Il suffit de passer la requète SQL suivante :
SELECT DATA_AREA_VALUE FROM TABLE(QSYS.2.DATA_AREA8INFO(
DATA_AREA8NAME => ‘ARCVERSION’,
DATA_AREA_LIBRARY => ‘MYLIB’))
(Merci Yvain pour l’upgrade)