Comment et pourquoi réorganiser un fichier DB2/400.

La commande REORG :

La commande REORG a été conçue pour réorganiser tous les fichiers d’une
bibliothèque qui contiennent des enregistrements supprimés. Si vous avez pris soin de
placer cette commande en ligne (QGPL par exemple), le fait de taper la commande REORG et
de presser la touche F4 fait apparaître un écran dans lequel il vous suffit de saisir le
nom de la bibliothèque à  réorganiser, avant de presser la touche ENTREE. Attention : la
réorganisation est suspendue en file d’attente de travaux, de façon à  ce que vous
puissiez la libérer au moment opportun.

Enchaînements des programmes :

Commande REORG –> CL CREORGSBMJOB–>
CL CREORG1CALL–> CL CREORG2

Emplacement des sources (les objets peuvent être placés dans QGPL) :

  • Commande DESCFIC : fichier source QGPL/QCMDSRC
  • CL CREORG, CREORG1 et CREORG2 : fichier source QGPL/QCLSRC

Source de la commande REORG :

CMD PROMPT('REORGANISATION DE BIBLIOTHEQUE')
PARM KWD(NOMBIB) TYPE(*CHAR) LEN(10) MIN(1) +
PROMPT('Nom de bibliothèque :')

Source du CL CREORG rattaché à  la commande REORG :

PGM PARM(&NOMBIB)

DCL VAR(&NOMBIB) TYPE(*CHAR) LEN(10)

SBMJOB CMD(CALL PGM(CREORG1) PARM(&NOMBIB)) +
JOB(REORG) HOLD(*YES)

FIN: ENDPGM

Source du CL CREORG1 lancé en batch par CREORG :

/* CE CL EXTRAIT LA LISTE DES FICHIERS D’UNE BIB. AU MOYEN */
/* D’UN DSPFD ET APPELLE LE CL CREORG2 QUI EFFECTUE LE */
/* RGZPFM DES FICHIERS QUI EN ONT BESOIN

*/

PGM PARM(&NOMBIB)

DCL VAR(&NOMBIB) TYPE(*CHAR) LEN(10)

/* CONTROLE EXISTENCE DE LA BIBLIOTHEQUE */

CHKOBJ OBJ(&NOMBIB) OBJTYPE(*LIB)
MONMSG MSGID(CPF0000) EXEC(DO)
SNDPGMMSG MSGID(CPF9897) MSGF(QSYS/QCPFMSG) +
MSGDTA(‘Erreur sur bib.
‘ *CAT &NOMBIB) +
TOPGMQ(*PRV)
MSGTYPE(*INFO)
GOTO CMDLBL(FIN)
ENDDO

/* EXTRACTION DES DONNEES DE LA BIB &NOMBIB */

DSPFD FILE(&NOMBIB/*ALL) TYPE(*MBR) +
OUTPUT(*OUTFILE) FILEATR(*PF) +
OUTFILE(QTEMP/RGZFIC)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(SAUT))

/* LANCEMENT REORGANISATION */

CALL PGM(CREORG2)

FIN: ENDPGM

Source du CL CREORG2 :

/* CE CL LIT LE FICHIER RGZFIC CRà‰à‰ PAR LE CL CREORG AFIN
*/
/* DE Dà‰TECTER LES FICHIERS QUI Nà‰CESSITENT UNE Rà‰ORGANISATION */
/* (TOUT FICHIER DONT LE NOMBRE D’ENREGISTREMENTS SUPPRIMà‰S */
/* EST SUPà‰RIEUR à€ Zà‰RO)

*/
/*

*/
/* ATTENTION : Pour pouvoir être compilé ce CL nécessite de */
/* créer temporairement un fichier "RGZFIC" au

*/
/* moyen de la commande DSPFD dans une bib. en

*/
/* ligne (se reporter au CL CREORG pour les

*/
/* paramètres à  utiliser).

*/

PGM

DCLF FILE(RGZFIC)

LIRE: RCVF RCDFMT(QWHFDMBR)
MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(FIN))
IF COND(&MBNDTR *NE 0) THEN(DO)
RGZPFM FILE(&MBLIB/&MBFILE) MBR(&MBNAME)
MONMSG MSGID(CPF0000)
ENDDO
GOTO CMDLBL(LIRE)

FIN: ENDPGM

Print Friendly, PDF & Email