| 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 |