Bibliothèque du programme CL

16-01-2007 à 12:16:40
Bonjour et meilleurs voeux pour tout le monde.
Je voudrais récupérer dans un programme CL la bibliothèque de lancement de celui-ci.
Comment faire ?
  • Liens sponsorisés



09-01-2007 à 12:11:10
Dans le programme CL, faire :

1/ DCLF QADSPOBJ
2/ DSPOBJD OBJ( *LIBL/ProgrammeCL ) ... OUTFILE(QTEMP/QADSPOBJ)
3/ OVRDBF QADSPOBJ QTEMP/QADSPOBJ
4/ RCVF
5/ Le nom de la bibliotheque se trouve dans la variable &ODLBNM.


Il y aurait plus simple en utilisant l'API QUSROBJD. Voir:
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/info/apis/qusrobjd.htm




--Message édité par philippe le 09-01-07 à 12:18:41--
09-01-2007 à 14:34:47
Oui, merci Philippe, en fait, le programme en question peut être lancé en spécifiant la bib et qui n'est pas forcément dans la liste de bib au moment de l'appel à celui-ci. Il me faudrait donc l'équivalent de l'infds dans un programme RPG pour connaître la bib sur laquelle on est en train de travailler. Je ne crois pas que le dspobjd soit la solution?
09-01-2007 à 15:26:17
Dans ce cas, regarde du côté de l'API Retrieve Call Stack QWVRCSTK :
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=/apis/qwvrcstk.htm

Wilfrid.
09-01-2007 à 16:30:59
Tu peux déposer la joblog dans un fichier que tu lis ensuite pour récupérer la bibliotheque du programme CL concerné.

pgm
dclf QAMHJLPR
DSPJOBLOG OUTPUT(*OUTFILE) OUTFILE(QTEMP/QAMHJLPR)
ovrdbf QAMHJLPR qtemp/QAMHJLPR
lect: RCVF
monmsg cpf0000 exec( goto erreur )
if ( &QMHRPG = 'MonProgrammeCL' ) do
sndpgmmsg ( 'Nom de la biblio: ' *cat &QMHRLB )
dltovr qamhjlpr
return
enddo
goto lect
...

Tu peux en faire facilement une commande que tu insèrerais dans tes programmes.
15-01-2007 à 10:50:41
Bonne idée, merci Philippe
15-01-2007 à 20:56:39
CL VAR( &PGMI0100 ) TYPE(*CHAR) LEN( 28 )
DCL VAR( &APIERROR) TYPE(*CHAR) LEN( 290 ) VALUE( X'0000012200000000' )
DCL VAR( &BIB ) TYPE(*CHAR) LEN( 10 )
DCL VAR( &PGM ) TYPE(*CHAR) LEN( 20 )

CHGVAR VAR(%SST(&PGM 1 10)) VALUE('nom du programme')
CHGVAR VAR(%SST(&PGM 11 10)) VALUE('*LIBL')
CALL PGM(QCLRPGMI) PARM(&PGMi0100 X'0000001C' 'PGMI0100' &pgm &apierror)
CHGVAR VAR( &BIB ) VALUE(%SUBSTRING(&PGMI0100 19 10))

--Message édité par philippe le 16-01-07 à 11:45:27--
16-01-2007 à 11:58:51
Merci pour la méthode Monthi...
16-01-2007 à 12:16:40
monthi,

Rémy veut savoir avec quelle bibliothèque le programme a été lancé.
Avec l'API QCLRPGMI, tu peux effectivement récupérer la bibliothèque dans laquelle le programme se trouve. L'API récupérera le premier programme qu'il trouvera dans l'ordre de la *LIBL.

Cependant, si le programme a été qualifié par une bibliothèque dans la commande CALL, il n'est pas du tout sûr que la bibliothèque que tu as récupéré avec l'API soit la bibliothèque du programme qui est en cours d'exécution. Donc, dans le cas de Rémy, l'API QCLRPGMI ne résoud pas son problème.
21-05-2014 à 14:57:52
Merci beaucoup pour ce magnifique forum, je le trouve super bien, il y a toujours des réponses de la part des membres ou des administrateurs, je souhaite que ce forum grandira de plus en plus.

voyance par mail
voyance gratuite par mail
  • Liens sponsorisés