Essai sur CHOISEPGM PGM de choix

BoTTom |
 /*--------------------------------------------------------------*/
 /*  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




©AF400