Un UUID (Universally Unique Identifier), également appelé GUID (Globally Unique Identifier), est un identifiant conçu pour être unique à l’échelle mondiale. Il est couramment utilisé dans les échanges de données via des webservices pour identifier de manière fiable des ressources.
Voici trois méthodes permettant de générer des UUID sur votre système IBM i.
1) En SQL
Depuis peu, la génération d’UUID est possible directement en SQL via la fonction scalaire GENERATE_UUID.

Nécessite :
IBM i 7.5 : SF99950 niveau 8
IBM i 7.4 : SF99704 niveau 29
2) En RPG
Il est également possible de générer un UUID en RPG en utilisant la procédure _GENUUID. Pour obtenir le résultat au format hexadécimal, il convient de l’associer à la procédure cvthc.
**free
ctl-opt dftactgrp(*no);
dcl-s uuidHexa char(32) inz ;
dcl-c UUID_VERSION 4;
// DS d'un UUID
dcl-ds DSUUID qualified template;
bytesProv uns(10) inz(%size(DSUUID));
bytesAvail uns(10) inz(0);
version uns(3) inz(0);
*n char(7) inz(*allx'00');
uuid char(16) inz(*allx'00');
End-ds;
dcl-ds UUID likeds(DSUUID) inz(*LIKEDS);
// Prototype récupération UUID
dcl-pr generUUID extProc('_GENUUID');
dsuuid likeds(DSUUID);
End-pr;
// Conversion caractère -> hexa
dcl-pr CharToHex ExtProc('cvthc');
hexResult Char(65534) Options(*VarSize);
charInput Char(32767) Options(*VarSize);
charNibbles Int(10) Value;
End-Pr;
dcl-pi *n ;
end-pi ;
UUID.version = UUID_VERSION;
// génération de l'UUID
generUUID(UUID);
// Conversion en hexa
CharToHex ( uuidHexa : UUID.uuid : %Size(UUID.uuid) * 2 );
dsply %concat('-':%subst(uuidHexa:1:8):%subst(uuidHexa:9:4):
%subst(uuidHexa:13:4):%subst(uuidHexa:17:4):
%subst(uuidHexa:21:12)) ;
*inlr = *on;

3) Opensource
Dernière proposition, utiliser la commande uuidgen.

Nécessite libuuid1
