Utiliser un menu barre dans vos DSPF

C’est la possibilité d’avoir un menu déroulant dans vos DSPF avec plusieurs onglets et de choisir une option, exactement comme dans windows.

Ci dessous un exemple avec son programme 2 menus déroulants ici PULLA et PULLB

DSPF

     A* Exemple de menu barre 
     A                                      DSPSIZ(27 132 *DS4)
     A                                      MNUCNL(CA12)
     A                                      CA03(03 'EXIT')
     A          R MB                        MNUBAR
     A            MNUFLD         2Y 0B  1  2
     A                                      MNUBARCHC(1 PULLA    +
     A                                                '>Pulla')
     A                                      MNUBARCHC(2 PULLB    +
     A                                                '>Pullb')
     A                                      MNUBARSEP(             +
     A                                             (*CHAR '_'))
     A
     A          R RECORD
     A*%%TS  SD  20231025  122354  PLB         REL-V7R4M0  5770-WDS
     A                                      MNUBARDSP(MB &MNUCHC &PULL)
     A                                 11  2'Nom      :'
     A            ZONE1         30A  B 11 14
     A                                 12  2'Prénom   :'
     A            ZONE2         20A  B 12 14
     A            MNUCHC         2Y 0H
     A            PULL           2S 0H
     A                                 13  2'Sexe     :'
     A            F1S            2Y 0B 13 14SNGCHCFLD(*AUTOSLT (*NUMCOL 3))
     A                                      CHOICE(1 '>Homme  ')
     A                                      CHOICE(2 '>Femme  ')
     A                                      CHOICE(3 '>Inconnu')
     A                                 14  2'Langue(s):'
     A            F1M            2Y 0B 14 14MLTCHCFLD((*NUMCOL 4))
     A                                      CHOICE(1 '>Anglais')
     A                                      CHCCTL(1 &CHOIX1)
     A                                      CHOICE(2 '>Espagnol')
     A                                      CHCCTL(2 &CHOIX2)
     A                                      CHOICE(3 'Alleman>d')
     A                                      CHCCTL(3 &CHOIX3)
     A                                      CHOICE(4 '>Italien ')
     A                                      CHCCTL(4 &CHOIX4)
     A*                                     CHOICE(5 'A>utre  ')
     A*                                     CHCCTL(5 &CHOIX5)
     A            CHOIX1         1Y 0H
     A            CHOIX2         1Y 0H
     A            CHOIX3         1Y 0H
     A            CHOIX4         1Y 0H
     A*           CHOIX5         1Y 0H
     A* Bas de page
     A            F1B            2Y 0B 23  2PSHBTNFLD
     A                                      PSHBTNCHC(1 'F3=>Exit' CA03)
     A                                      PSHBTNCHC(2 'E>nter')
     A                                  9  3'Renseignements'
     A          R PULLA                     PULLDOWN
     A            F1             2Y 0B  1 02SNGCHCFLD(*AUTOENT)
     A                                      CHOICE(1 '>UN ')
     A                                      CHCCTL(1 &C1)
     A                                      CHOICE(2 '>DEUX')
     A                                      CHCCTL(2 &C2)
     A                                      CHOICE(3 '>TROIS')
     A                                      CHCCTL(3 &C3)
     A            C1             1Y 0H
     A            C2             1Y 0H
     A            C3             1Y 0H
     A          R PULLB                     PULLDOWN
     A            F1             2Y 0B  1 02SNGCHCFLD
     A                                      CHOICE(1 '>UN')
     A                                      CHCCTL(1 &C21)
     A                                      CHOICE(2 '>DEUX')
     A                                      CHCCTL(2 &C22)
     A                                      CHOICE(3 '>TROIS')
     A                                      CHCCTL(3 &C23)
     A            C21            1Y 0H
     A            C22            1Y 0H
     A            C23            1Y 0H
     A

RPGLE

**FREE
// exemple de menu barre
Dcl-F MNUBAR         WORKSTN ;
       CLEAR RECORD ;
       DoW *IN03 = '0';
          Exfmt RECORD;
          If *IN03 = '0';
             If PULL > 0;
                Select ;
                When  PULL = 1;
                   DSPLY 'Un' ;
                When  PULL = 2;
                   DSPLY 'Deux' ;
                when  PULL = 3;
                   DSPLY 'Trois' ;
                Endsl;
             // ici traitement des zones du format
             EndIf;
          EndIf;
       EndDo;
       *INLR = *On;

Remarque :

Vous devez compiler avec l’option ENHDSP(*YES)

Pour la présentation, cet exemple comporte également
Un bouton poussoir pour les touches de fonctions
un exemple de case a cocher unique
un exemple de case à cocher multiple

Pour commencer c’est un peu compliqué, pour vous aider, vous pouvez utiliser notre générateur téléchargeable ici …

https://github.com/Plberthoin/PLB/tree/master/GENMNUBAR

Génère un menu barre (Source DDS et RPGLE) ci dessus le code RPGLE généré

Vous devez « juste » remplacer les dsply par vos actions …