Accueil du site > Les articles > Utilisation d’un DSPF dans un CL
Version à imprimer Enregistrer au format PDF

Utilisation d’un DSPF dans un CL

mercredi 11 août 2004, par Grégory Jarrige Visites  2459 Première mise en ligne le vendredi 7 novembre 2003.

Utilisation d’un DSPF dans un CL


Comment déclarer et utiliser un DSPF dans un programme CL.

Le mieux est de voir ça tout de suite avec un exemple concret : un programme dans lequel on demande à l’utilisateur de saisir l’année à extraire et de presser la touche F6 pour lancer le traitement.

Maquette de l’écran :

15:56:23           * *  EXTRACTION EXERCICE ( N - 1 ) * *        XXXXXXXXXX
2/09/98                                                         OOOOOOOOOO
                      SAISIE DE L'ANNEE A EXTRAIRE


- Année à Extraire....: 1998


F3=Annulation    F6=Validation

Source du DSPF I400FM :

A                                      DSPSIZ(24 80 *DS3)
A                                      MSGLOC(24)
A          R F1
A                                      CA03(03 'fin de travail')
A                                      HELP(01 'aide')
A                                      CA06(06 'Validation')
A                                      BLINK
A                                  1  2TIME
A                                  1 19' * *  EXTRACTION EXERCICE ( N - 1 -
A                                      ) * * '
A                                      DSPATR(RI)
A                                      DSPATR(UL)
A                                  2  2DATE
A                                      EDTCDE(Y)
A            USER          10A  O  1 71
A            DEVNM         10A  O  2 71
A                                  3 24' SAISIE DE L''ANNEE A EXTRAIRE '
A                                      DSPATR(HI)
A                                      DSPATR(UL)
A                                 12 19' - Année ... Extraire....: '
A                                      DSPATR(UL)
A                                      DSPATR(HI)
A            EXER           4Y 0B 12 46EDTCDE(Z)
A  20
AO 21                                  DSPATR(RI)
A  20                                  ERRMSG('Saisie obligatoire')
A  21                                  ERRMSG('Valeur incorrecte')
A                                 23  2'F3=Annulation'
A                                      DSPATR(HI)
A                                 23 19'F6=Validation'
A                                      DSPATR(HI)

Source du CL C400 utilisant le DSPF I400FM :

/**************************************************/
/* EXTRACTION EXERCICE ( N -1 )   */
/*   */
/**************************************************/
PGM
DCL VAR(&AA ) TYPE(*CHAR) LEN(2)
DCL VAR(&CDST) TYPE(*CHAR) LEN(3)
DCL VAR(&ANNE) TYPE(*CHAR) LEN(4)
DCL VAR(&AN ) TYPE(*DEC) LEN(2 0)
DCL VAR(&WEXER) TYPE(*DEC) LEN(4 0)
DCL VAR(&DIF) TYPE(*DEC) LEN(4 0)
DCL VAR(&MBRAID) TYPE(*CHAR) LEN(10) VALUE(’C40001 ’)


/* DECLARATION DU DSPF I400FM ET CALCULS DIVERS */
DCLF FILE(I400FM) RCDFMT(F1)
RTVJOBA JOB(&DEVNM) USER(&USER)
RTVSYSVAL SYSVAL(QYEAR) RTNVAR(&AA)
CHGVAR VAR(&AN) VALUE(&AA)
CHGVAR VAR(&WEXER) VALUE(&AN + 1900 - 1)
CHGVAR VAR(&EXER) VALUE(&WEXER)

/* AFFICHAGE DE L’ECRAN ET CONTROLES */

AFFICH : SNDRCVF RCDFMT(F1)
 CHGVAR  VAR(&IN20) VALUE(’0’)
 CHGVAR  VAR(&IN21) VALUE(’0’)

IF COND(&IN01 *EQ ’1’) THEN(DO)

/* AFFICHAGE DE L’AIDE */
CALL PGM(CAIDE) PARM(&MBRAID)
GOTO CMDLBL(AFFICH)
ENDDO

IF COND(&IN03 *EQ ’1’) THEN(GOTO CMDLBL(FIN))

IF COND(&EXER *EQ 0) THEN(DO)
CHGVAR VAR(&IN20) VALUE(’1’)
GOTO CMDLBL(AFFICH)
ENDDO

CHGVAR VAR(&DIF) VALUE(&WEXER - &EXER)

IF COND(&DIF *NE 0) THEN(DO)
CHGVAR VAR(&IN21) VALUE(’1’)
GOTO CMDLBL(AFFICH)
ENDDO
/* On boucle jusqu’à ce que l’utilisateur presse la touche F6 */
IF COND(&IN06 *NE ’1’) THEN(GOTO CMDLBL(AFFICH))
CHGVAR VAR(&ANNE) VALUE(&EXER)
SBMJOB CMD(CALL PGM(C410A) PARM(&ANNE)) JOB(EXTRAC) JOBD(GIELIBN) +
 HOLD(*YES)
SNDMSG MSG(’L’’extraction de l’’exercice est +
 soumise à la file d’’attente de travaux.’) TOMSGQ(&DEVNM)
FIN : ENDPGM