QTEMP et *LIBL
Vous connaissez tous les notions de cette bibliothèque :
Elle n’est pas sauvegardée à la fin d’un travail et chaque travail a sa QTEMP.
Elle est généralement dans votre liste de bibliothèque.
Maintenant imaginez que vous utilisez un logiciel et que vous voulez être sûr que QTEMP soit la première bibliothèque de votre liste :
Vous pouvez l’enlever et la remettre en entête mais attention, l’enlever revient à la supprimer. Si vous avez des données par exemple des fichiers à l’intérieur, ils seront donc perdus, je propose donc un petit programme qui pourra réaliser ça pour vous :
PGM
/* MISE EN PLACE QTEMP EN TETE DE LISTE */
dcl &time *char 6
DCL VAR(&NBR) TYPE(*DEC) LEN(10)
dcl &libl *char 2750
dcl &req *char 512
/* Recherche si QTEMP est entete on ne fait rien */
RTVJOBA USRLIBL(&LIBL)
IF COND(%sst(&libl 1 10) = 'QTEMP') THEN(DO)
goto fin
ENDDO
/* Recherche si QTEMP est pas en tete de liste */
ELSE
DSPOBJD OBJ(QTEMP/*ALL) OBJTYPE(*ALL) +
OUTPUT(*OUTFILE) OUTFILE(QTEMP/WRESULT)
MONMSG MSGID(CPF2123) exec(do)
/* si bibliothèque vide */
RMVLIBLE LIB(QTEMP)
ADDLIBLE LIB(QTEMP) POSITION(*FIRST)
GOTO CMDLBL(FIN)
ENDDO
/* Si bibliothèque QTEMP remplie */
CRTLIB LIB('W' *TCAT &TIME) TYPE(*TEST) TEXT('Bib +
sauvegarde qtemp')
monmsg CPF2111 exec(do)
CLRLIB LIB('W' *TCAT &TIME)
ENDDO
CRTDUPOBJ OBJ(*ALL) FROMLIB(QTEMP) OBJTYPE(*FILE) +
TOLIB('W' *TCAT &TIME) DATA(*YES)
monmsg CPF2130
rmvlible qtemp
addlible qtemp *first
CRTDUPOBJ OBJ(*ALL) FROMLIB('W' *TCAT &TIME) +
OBJTYPE(*FILE) TOLIB(QTEMP) DATA(*YES)
monmsg CPF2130
DLTLIB LIB('W' *TCAT &TIME)
/* fin du programme */
fin:
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA('Bibliothèque Qtemp placée en tête +
de liste') MSGTYPE(*COMP)
ENDPGM
Voila, vous avez une exemple tout en CLP , qui permet de mettre QTEMP en tête de liste sans perdre les informations à l’intérieur.
Merci à Jean-Marie pour son aide.