Advertisement
Passer un paramètre avec plusieurs valeurs possibles dans une commande ?
 

Comment passer un paramètre avec plusieurs valeurs possibles dans une commande ?

Dans notre exemple nous voulons traiter 10 objets .

Voici la commande

Attention :

Paramètre MAX(10)

CMD PROMPT('Traitement de 10 objets')

PARM KWD(NOM) TYPE(*NAME) LEN(10) MIN(1) MAX(10) + PROMPT('Nom des objets')

Voici le programme de gestion associé

PGM PARM(&OBJL) /* VARIABLE GLOBALE N FOIS LE PARAMÈTRE + 2 */

DCL VAR(&OBJL) TYPE(*CHAR) LEN(102) /* VARIABLE GLOBALE 2 + (10*10) */

DCL VAR(&NBRA) TYPE(*CHAR) LEN(2) /* VARIABLE DE TRAVAIL */

DCL VAR(&NBR) TYPE(*DEC) LEN(4) /* NOMBRE DE PARAMÈTRES SAISIES*/

DCL VAR(&POS) TYPE(*DEC) LEN(4) VALUE(3) /* POSITIONNEMENT */

DCL VAR(&DEP) TYPE(*DEC) LEN(4) VALUE(10) /* LONGUEUR D'UN PARAMÈTRE */

CHGVAR &NBRA (%SST(&OBJL 1 2)) /* EXTRACTION DES 2 PREMIERS OCTETS */

CHGVAR &NBR %BIN(&NBRA) /* CONVERSION EN BINAIRE POUR NOMBRE DE PARAMÈTRES */

/*-------------------------------------------------------------------------------------------*/

BOUCLE: /* BOUCLE DE TRAITEMENT SUR LES PARAMETRES SAISIES */

/*-------------------------------------------------------------------------------------------*/

/* SYNTAXE DU PARAMÈTRE A UTILISER %SST(&OBJL &POS &DEP) */

/* EX: SAVOBJ OBJ(%SST(&OBJL &POS &DEP)) .... */

IF COND(&POS *LE (((&NBR-1) * &DEP)+2)) THEN(DO)

CHGVAR &POS (&POS + &DEP)

GOTO BOUCLE

....

ENDPGM