
|
/*--------------------------------------------------------------*/
/* PGM POUR CHOIX PAR LISTE */
/*--------------------------------------------------------------*/
PGM PARM(&PARM1 &PARM2)
DCL VAR(&PARM1) TYPE(*CHAR) LEN(21)
DCL VAR(&PARM2) TYPE(*CHAR) LEN(2000)
/* */
/* PARM1 : PREMIER PARAMETRE */
/* 1 A 10 NOM DE COMMANDE */
/* 11 A 20 NOM DU PARAMETRE DE LA COMMANDE */
/* 21 A 21 TYPE (P) LISTE DE VALEURS ? */
/* (C) TEXTE D'INVITE CDE-11 */
/* */
/* PARM2 : DEUXIEME PARAMETRE */
/* ------>si liste */
/* 1 A 2 NOMBRE DE PARAMETRES TRANSMIS EN BINAIRE */
/* 3 A 4 TAILLE DE LA PREMIERE VALEUR EN BINAIRE */
/* 5 A N PREMIERE VALEUR */
/* N+1 A N+2 TAILLE DE LA DEUXIEME VALEUR EN BINAIRE */
/* N+3 A M DEUXIEME VALEUR */
/* ETC... 2000 */
/* */
/* ------>si texte */
/* 1 A 30 TEXTE A AFFICHER */
/* 31 A 2000 INUTILISER */
/* */
/****************************************************************/
/* */
/* Déclaration des zones de travail */
/* */
DCL VAR(&BIN) TYPE(*CHAR) LEN(2)
DCL VAR(&DEC) TYPE(*DEC) LEN(5 0)
DCL VAR(&SIGN) TYPE(*CHAR) LEN(1)
/* */
/* Initialisation de la zone paramètre à retourner */
/* attention elle peut contenir n'importe quoi a l'arrivée */
/* */
CHGVAR VAR(&PARM2) VALUE(' ')
/* */
/* Test de la demande P = liste de paramètres */
/* */
IF COND(%SST(&PARM1 21 1) *EQ 'P') THEN(DO)
/*--------------------------------------------------------------*/
/* */
|
/* 1er cas pos 21 = P demande d'une liste de valeurs */
/* */
/*--------------------------------------------------------------*/
/* */
/* Formatage de la variable à retourner */
/* Position 1 à 2 en binaire nombre de paramètres de retours */
CHGVAR VAR(&DEC) VALUE(2)
CALL PGM(A002P2) PARM(&DEC &BIN)
CHGVAR VAR(%SST(&PARM2 1 2)) VALUE(&BIN)
/* conversion longueur du parametre en binaire */
CHGVAR VAR(&DEC) VALUE(10)
/* V2R20 */ CHGVAR VAR(%BIN(&BIN)) VALUE(&DEC)
/* Position 3 à 4 en binaire longueur de la première valeur */
/* Position 5 à 11 premiére Valeur à afficher */
/* Position 12 à 16 en binaire longueur de la deuxième valeur */
/* Position 17 à 11 Deuxième Valeur à afficher */
CHGVAR VAR(%SST(&PARM2 3 2)) VALUE(&BIN)
CHGVAR VAR(%SST(&PARM2 5 10)) VALUE('VAL - 1')
CHGVAR VAR(%SST(&PARM2 15 2)) VALUE(&BIN)
CHGVAR VAR(%SST(&PARM2 17 10)) VALUE('VAL - 2')
ENDDO
/*--------------------------------------------------------------*/
/* */
/* 2ème cas pos 21 = C demande d'un texte */
/* */
/*--------------------------------------------------------------*/
IF COND(%SST(&PARM1 21 1) *EQ 'C') THEN(DO)
CHGVAR VAR(&PARM2) VALUE('ENTRER UN NOM VALIDE ...')
ENDDO
ENDPGM
|