Fil d’Ariane du forum – Vous êtes ici :ForumForums techniques: AS/400Trouver le nom LONG d'un IBMi
Vous devez vous identifier pour créer des messages et des sujets.

Trouver le nom LONG d'un IBMi

12

Bonjour,

Le nom Système est un "nom court" et le "nom long" est défini chez nous dans la table de host mais non identifiable parmi toutes les entrées.

Ce nom "long" est potentiellement aussi indiqué chez nous en RDB pour identifier la base de données *Local.

J'aurais besoin d'extraire l'une ou l'autre, voire les 2 informations.

Après quelques recherches, je ne trouve aucune piste, ni commande, ni API.

Avez-vous déjà eu ce besoin ?

Sinon, quelqu'un aurait-il une idée ?

Merci d'avance
FRED

gethostname permet de récupérer le nom d'hôte du système défini dans CHGTCPDMN
Est-ce que ça répond à la question ?

Bonjour,

Sinon, il y a aussi dasn un SQLRPGLE:

D systemName S 10

exec sql values current server into :systemName;

Larry57

Bonjour Larry,

Je viens de faire le micro-programme et cela me restitue exactement ce dont j'ai besoin.

Merci.
FRED

Citation de vazymimil

gethostname permet de récupérer le nom d'hôte du système défini dans CHGTCPDMN
Est-ce que ça répond à la question ?

C'est une commande Unix alors que je cherche une solution OS/400.

Comment intégrer cette commande ? En utilisant QSH ?

Merci de ta réponse
FRED

C'est une api "unix-like", mais on peut l'appeler depuis un rpgle comme ça par exemple


**free
ctl-opt bnddir('QUSAPIBD');

dcl-pr gethostname int(10) extproc(*dclcase);
name pointer value;
length int(10) value;
end-pr;

dcl-s hostNameStr char(253);
dcl-s hostNameVarying varchar(253);

if gethostname(%addr(hostNameStr):%size(hostNameStr)) = 0;
hostNameVarying = %str(%addr(hostNameStr));
else;
*inh1 = *on;
endif;

*inlr = *on;

Citation de vazymimil

C'est une api "unix-like", mais on peut l'appeler depuis un rpgle comme ça par exemple


**free
ctl-opt bnddir('QUSAPIBD');

dcl-pr gethostname int(10) extproc(*dclcase);
name pointer value;
length int(10) value;
end-pr;

dcl-s hostNameStr char(253);
dcl-s hostNameVarying varchar(253);

if gethostname(%addr(hostNameStr):%size(hostNameStr)) = 0;
hostNameVarying = %str(%addr(hostNameStr));
else;
*inh1 = *on;
endif;

*inlr = *on;

Merci pour ton explication technique.
FRED

Il y a aussi la commande hostname de Qshell. Par exemple dans un CL :


QSH CMD('hostname>/temp/hostname.txt')
DLTF FILE(UNE_BIB/HOSTNAME)
MONMSG MSGID(CPF0000)
CRTPF FILE(UNE_BIB/HOSTNAME) RCDLEN(50)
CPYFRMIMPF FROMSTMF('/temp/hostname.txt') +
TOFILE(UNE_BIB/HOSTNAME) RCDDLM(*CRLF)
RMVLNK OBJLNK('/temp/hostnam.txt')

Le nom est dans UNE_BIB/HOSTNAME.

. . . ou encore :

SELECT HOST_NAME FROM QSYS2/SYSTEM_STATUS_INFO

Bonjour,

J'ai fini par faire un petit programme  :

h dftactgrp( *no ) actgrp( *caller )
D systemName S 10
c *entry plist
c parm systemName
/FREE
exec sql values current server into :systemName;
*inlr = *on;
/END-FREE

La commande SELECT HOST_NAME FROM QSYS2/SYSTEM_STATUS_INFO  n'est pas disponible en V7R1.

Merci de ton aide
FRED

12