Fil d’Ariane du forum – Vous êtes ici :ForumForums techniques: AS/400Afficher le sous-fichier de messa …
Vous devez vous identifier pour créer des messages et des sujets.

Afficher le sous-fichier de message en ligne 24 avec une fenêtre

Bonjour,

J'ai un DSPF avec un RECORD, 1 fenêtre et un sous-fichier de message.

Du record principal, une touche de fonction nous amène sur la fenêtre.

Le sous-fichier de message est utilisé pour afficher les messages avec le RECORD.

Mais je souhaite aussi l'utiliser pour afficher les messages quand l'utilisateur est sur la fenêtre.

Pour l'instant, les messages en question s'affiche qu'au retour sur le RECORD.

Cordialement,

 

Les bouts de codes en question:

     A          R RECAP                     WINDOW(7 11 10 50 *NOMSGLIN +
     A                                      *NORSTCSR)
     A                                      OVERLAY
     A N26                                  CF10
     A                                      CF12
     A            ACTION        96   B  1  1CNTFLD(48)
     A                                      COLOR(WHT)
     A                                      CHGINPDFT
     A                                      DSPATR(PR)
     A            ZCODUEX1  R        B  4  2REFFLD(EREPF/CODUEX EREPP)
     A                                      COLOR(WHT)
     A                                      EDTCDE(Z)
     A            ZAADRUE1  R        O  4 12REFFLD(EREPF/AADRUE EREPP)
     A                                  6  3'Avec'
     A                                      COLOR(WHT)
     A            ZCODUEX2  R        B  7  2REFFLD(EREPF/CODUEX EREPP)
     A                                      COLOR(WHT)
     A                                      EDTCDE(Z)
     A            ZAADRUE2  R        O  7 12REFFLD(EREPF/AADRUE EREPP)
     A                                  9  1'F1=Aide'
     A                                      COLOR(BLU)
     A                                  9 18'F10=Validation'
     A                                      COLOR(BLU)
     A  26                                  DSPATR(ND)
     A                                  9 34'F12=Annuler'
     A                                      COLOR(BLU)
     A            ZCBASE1        1   B  5  2COLOR(WHT)
     A            ZCBASE2        1   B  8  2COLOR(WHT)
     A            ZLIBBASE1      9   O  5  4
     A            ZLIBBASE2      9   O  8  4
     A                                  9 10'F3=Exit'
     A                                      COLOR(BLU)    
     A          R MSGSFL                    SFL
     A                                      SFLMSGRCD(24)
     A            WMGKEY                    SFLMSGKEY
     A            WPGMQ                     SFLPGMQ
     A          R MSGSFLCTL                 SFLCTL(MSGSFL)
     A                                      SFLDSPCTL
     A                                      SFLDSP
     A                                      SFLPAG(1)
     A                                      SFLSIZ(1)
     A                                      OVERLAY
     A  10                                  SFLINZ
     A  09                                  SFLEND(*PLUS)
     A                                      FRCDTA
     A            WPGMQ                     SFLPGMQ 
// --------------------------------------------------
// Procedure name: Attachement
// Purpose: Affiche une fenêtre où est demandée qui sont les UE
//          que l'on souhaite liées ensemble
// Returns:
// --------------------------------------------------
DCL-PROC Attachement ;
  Dcl-s l_Anomalie Ind;
  Dcl-c c_lien_demande 'Quelles affaires voulez-vous liées ensemble';
  Dcl-s l_Ind_non_liee_1 Ind;
  Dcl-s l_Ind_non_liee_2 Ind;
  Dcl-s l_Uuid1 Like(r_Uuid);
  Dcl-s l_Uuid2 Like(r_Uuid);
  Dcl-s Validation_OK Ind;

  Dcl-ds Ds_Bnuexp Extname('BNUEXP') END-DS;

  Ndvalidation = *On;

  // Effacement des sous-fichiers de messages
  Msg_clrq();

  Dow not Annuler
   And not Validation_OK;
    Action = c_lien_demande;
    Write CTL1;
    Write Msgsflctl;
    Exfmt Recap;
    l_anomalie=*Off;
    // Effacement des sous-fichiers de messages
    Msg_clrq();

    l_anomalie = Control_attachement( Zcoduex1
                                     :Zcbase1
                                     :l_Ind_non_liee_1
                                     :Zcoduex2
                                     :Zcbase2
                                     :l_Ind_non_liee_2 );

    IF l_anomalie;
      // anomalie
      l_anomalie = *OFF;
    ELSE;
      If Not Valider;
        If Ndvalidation = *On;
          Ndvalidation = *Off;
          Msg_dsp('IOD0003');
          Iter;
        Endif;
      Else;
        // confirmation  pour Création
        Validation_OK=VALID( l_Ind_non_liee_1
                            :l_Uuid1
                            :l_Ind_non_liee_2
                            :l_Uuid2);

      ENDIF;
    Endif;
  Enddo;

  return ;
END-PROC ;   
// --------------------------------------------------
// Procedure name: Control_attachement
// Purpose:        Vérification que les saisis d'attachement sont corr...
//                          ecte
// Returns:
// --------------------------------------------------
DCL-PROC Control_attachement ;
  DCL-PI *N IND;
    p_coduex_1 Like(r_Code_Unite_Exploit);
    p_cbase_1 Like(r_Code_base);
    p_Ind_non_liee_1 Ind;
    p_coduex_2 Like(r_Code_Unite_Exploit);
    p_cbase_2 Like(r_Code_base);
    p_Ind_non_liee_2 Ind;
  END-PI ;

  Dcl-s C_Application Char(10) Inz('APPLI');
  Dcl-s l_Uuid1 Like(r_Uuid);
  Dcl-s l_Uuid2 Like(r_Uuid);
  Dcl-s l_Anomalie Ind;

  EXEC SQL
    SELECT Aadrue
      INTO :Zaadrue1
      FROM Bnuexp
      WHERE Coduex = :P_Coduex_1;
  If Sqlcode = 100;
    l_anomalie=*On;
    G_MGDT = %Editc(p_coduex_1:'X');
    Msg_dsp('IOD0001':G_MGDT);
  ENDIF;

  EXEC SQL
    SELECT Aadrue
      INTO :Zaadrue2
      FROM Bnuexp
      WHERE Coduex = :P_Coduex_2;
  If Sqlcode = 100;
    l_anomalie=*On;
    G_MGDT = %Editc(p_coduex_2:'X');
    Msg_dsp('IOD0001':G_MGDT);
  ENDIF;

  EXEC SQL
    SELECT Csclib
      INTO :Zlibbase1
      FROM Bntabp
      WHERE Cscprm = :C_Application
            AND Csccod = :P_Cbase_1;
  If Sqlcode = 100;
    l_anomalie=*On;
    G_MGDT = Zcbase1;
    Msg_dsp('IOD0002':G_MGDT);
  ENDIF;

  EXEC SQL
    SELECT Csclib
      INTO :Zlibbase2
      FROM Bntabp
      WHERE Cscprm = :C_Application
            AND Csccod = :P_Cbase_2;
  If Sqlcode = 100;
    l_anomalie=*On;
    G_MGDT = Zcbase2;
    Msg_dsp('IOD0002':G_MGDT);
  ENDIF;

  EXEC SQL
    SELECT Cidmcu
      INTO :L_Uuid1
      FROM Bnxuep
      WHERE Coduex = :P_Coduex_1
            AND Cbaseu = :P_Cbase_1;;
  p_Ind_non_liee_1=(Sqlcode=100);

  EXEC SQL
    SELECT Cidmcu
      INTO :L_Uuid2
      FROM Bnxuep
      WHERE Coduex = :P_Coduex_2
            AND Cbaseu = :P_Cbase_2;
  p_Ind_non_liee_2=(Sqlcode=100);

  If not p_Ind_non_liee_1
    and not p_Ind_non_liee_2;
    l_anomalie=*On;
    G_MGDT = %Editc(p_coduex_1:'X') + %Editc(p_coduex_2:'X');
    Msg_dsp('IOD0004':G_MGDT);
  Endif;

  return l_anomalie ;
END-PROC;    

Bonjour ,

Pour que ton message s'affiche sur l'écran "RECORD" alors qu'une fenêtre est affichée par dessus, il va falloir faire un write du format de contrôle du sous fichier de message associé au format "RECORD", puis un write du format "RECORD", et enfin un EXFMT de la fenêtre. Mais je ne suis pas sûr que cela fonctionne si "RECORD" est dans un programme et la fenêtre dans un autre.

Mais ne serai-t’il pas plus simple d'afficher ton message dans un sous fichier de message dans la fenêtre ?

Voici un exemple de fenêtre avec sous fichier de messages :

A*%%TS SD 20140924 152807 FARGE REL-V6R1M0 5761-WDS
A*****************************************************************
A* ECRAN : DPA435FM *
A*****************************************************************
A* DESCRIPTION : CRETION/MODIFICATION D'UN MEMBRE *
A*****************************************************************
A* DATE CREATION : 3 Semptembre 2019 *
A* PAR : Ivan Farge *
A*****************************************************************
A*%%EC
A DSPSIZ(27 132 *DS4)
A MSGLOC(27)
A PRINT
A HELP
A HLPTITLE('Création / Modification d-
A ''un membre')
A HLPPNLGRP(HLP00 DPA435H)
A WDWBORDER((*COLOR YLW))
A ALTHELP
A*****************************************************************
A* Sauvegarde de l'écran précédent *
A*****************************************************************
A R DPA435F0
ASSUME
1 2' '
A*****************************************************************
A* Gestion des branches et sous branche *
A*****************************************************************
A R DPA435F1
WINDOW(DPA435F4)
02 USRRSTDSP
A TEXT('Création / Modification d''un-
A e membre')
A CF03
A CF10
A CF12
A RTNCSRLOC(*RECNAME &ZRECORD &ZFIELD)
A RTNCSRLOC(*MOUSE &ZLIGNE &ZCOLONE &-
A ZLIGNE2 &ZCOLONE2)
A OVERLAY
A MOUBTN(*ULD CF02)
A MOUBTN(*URP CF04)
A MOUBTN(*UMP HELP)
A ZPGM 10 1 1
A ZPRJTEXT 56A O 1 12COLOR(BLU)
A 3 1'Identifiant . . . . . . . . . . .-
A :'
A ZIDITEM 10Y 0O 3 38EDTCDE(3)
A 4 1'Origine du membre' DSPATR(UL)
A COLOR(YLW)
A 4 19'(Sur système de développement)'
A 5 4'Bibliothèque . . . . . . . . . :'
A COLOR(YLW)
A ZFRMSRCLIB 10A B 5 38
A COLOR(YLW)
A 01 DSPATR(PR)
A N01 DSPATR(UL)
A 20 DSPATR(RI PC)
A 6 4'Fichier . . . . . . . . . . . . :'
A COLOR(YLW)
A ZFRMSRCFIL 10A B 6 38
A COLOR(YLW)
A 01 DSPATR(PR)
A N01 DSPATR(UL)
A 21 DSPATR(RI PC)
A 7 4'Membre . . . . . . . . . . . . :'
A COLOR(YLW)
A ZFRMSRCMBR 10A B 7 38
A COLOR(YLW)
A 01 DSPATR(PR)
A N01 DSPATR(UL)
A 22 DSPATR(RI PC)
A 8 1'Type de membre . . . . . . . . . .-
A :'
A COLOR(YLW)
A ZSRCTYPE 10A B 8 38
A COLOR(YLW)
A 01 DSPATR(PR)
A N01 DSPATR(UL)
A 23 DSPATR(RI PC)
A 9 1'Bibliothèque courante (Script SQL)-
A :'
A ZCURLIB 10A B 9 38
A 01 DSPATR(PR)
A N01 DSPATR(UL)
A 27 DSPATR(RI PC)
A 10 1'Le membre est''il compilable . . -
A . :'
A 01 ZCOMPILLB 3A O 10 38
A N01 ZCOMPIL 2Y 0B 10 39SNGCHCFLD((*NUMROW 1) (*GUTTER 2))
A CHCAVAIL((*COLOR TRQ))
A CHCUNAVAIL((*DSPATR ND))
A CHOICE(1 '>Oui')
A CHOICE(2 '>Non')
A 11 1'Suspendre l''élément . . . . . . -
A . :'
A 01 ZHOLDLB 3A O 11 38
A N01 ZHOLD 2Y 0B 11 39SNGCHCFLD((*NUMROW 1) (*GUTTER 2))
A CHCAVAIL((*COLOR TRQ))
A CHCUNAVAIL((*DSPATR ND))
A CHOICE(1 '>Oui')
A CHOICE(2 '>Non')
A 12 1'Destination du membre'
A DSPATR(UL)
A COLOR(BLU)
A 12 23'(Sur système de production)'
A 13 4'Bibliothèque . . . . . . . . . :'
A COLOR(BLU)
A ZTOSRCLIB 10A B 13 38COLOR(BLU)
A 01 DSPATR(PR)
A N01 DSPATR(UL)
A 24 DSPATR(RI PC)
A 14 4'Fichier . . . . . . . . . . . . :'
A COLOR(BLU)
A ZTOSRCFIL 10A B 14 38COLOR(BLU)
A 01 DSPATR(PR)
A N01 DSPATR(UL)
A 25 DSPATR(RI PC)
A 15 4'Membre . . . . . . . . . . . . :'
A COLOR(BLU)
A ZTOSRCMBR 10A B 15 38COLOR(BLU)
A 01 DSPATR(PR)
A N01 DSPATR(UL)
A 26 DSPATR(RI PC)
A 16 1'Nouvel élément . . . . . . . . . .-
A :'
A 01 ZNEWLB 3A 16 38
A N01 ZNEW 2Y 0B 16 39SNGCHCFLD((*NUMROW 1) (*GUTTER 2))
A CHCAVAIL((*COLOR TRQ))
A CHCUNAVAIL((*DSPATR ND))
A CHOICE(1 '>Oui')
A CHOICE(2 '>Non')
A 17 1'Supprimer après déploiement . . .-
A :'
A 01 ZREMOVELB 3A 17 38
A N01 ZREMOVE 2Y 0B 17 39SNGCHCFLD((*NUMROW 1) (*GUTTER 2))
A CHCAVAIL((*COLOR TRQ))
A CHCUNAVAIL((*DSPATR ND))
A CHOICE(1 '>Oui')
A CHOICE(2 '>Non')
A 18 1'Création . . . . . . . . . . . . .-
A :'
COLOR(PNK)
A ZCRTUSER 10 18 38
COLOR(PNK)
A ZCRTDATE L 18 49DATFMT(*EUR)
MAPVAL(('01.01.0001' *BLANK))
COLOR(PNK)
A ZCRTTIME T 18 60TIMFMT(*JIS)
MAPVAL(('00:00:00' *BLANK))
COLOR(PNK)
A 19 1'Modification . . . . . . . . . . .-
A :'
COLOR(PNK)
A ZUPDUSER 10 19 38
COLOR(PNK)
A ZUPDDATE L 19 49DATFMT(*EUR)
MAPVAL(('01.01.0001' *BLANK))
COLOR(PNK)
A ZUPDTIME T 19 60TIMFMT(*JIS)
MAPVAL(('00:00:00' *BLANK))
COLOR(PNK)
A ZRECORD 10A H
A ZFIELD 10A H
A ZLIGNE 3S 0H
A ZLIGNE2 3S 0H
A ZCOLONE 3S 0H
A ZCOLONE2 3S 0H
A**********************************************************************
A* SOUS FICHIER DE MESSAGES *
A**********************************************************************
A R DPA435F3 SFL
A TEXT('Sous fichier de messages')
A SFLMSGRCD(22)
A MSGKEY SFLMSGKEY
A ZPGMQ SFLPGMQ(10)
A*****************************************************************
A* BAS D'ECRAN *
A*****************************************************************
A R DPA435F4 SFLCTL(DPA435F3)
A TEXT('SFLCTL sous fichier de messag-
A es')
A 98 SFLDSP
A 98 SFLDSPCTL
A 98 SFLINZ
A 98 SFLEND
A SFLSIZ(0050)
A SFLPAG(0001)
A WINDOW(*DFT 22 67 *NOMSGLIN)
A WDWTITLE((*TEXT &ZTITLE) (*COLOR PN-
A K) (*DSPATR RI))
A ZPGMQ SFLPGMQ(10)
A ZTITLE 65A P
A ZFONCTION 2Y 0B 21 2PSHBTNFLD
A PSHBTNCHC(1 'OK')
A PSHBTNCHC(2 'Annuler' CF12)
A PSHBTNCHC(3 'Quitter' CF03)
A PSHBTNCHC(4 'Forcer' CF10)

Désolé, je n'ai pas réussi à coller en mode texte.

Merci de ta réponse,

Nous sommes bien dans le même DSPF.

Cependant si je souhaite afficher des messages dans la fenêtre, n'est-il pas nécessaire de créer un nouveau sous-fichier de message lié à la fenêtre?

Cordialement,

Citation de Olivier Drubigny le 9 janvier 2020, 9 h 25 min

Cependant si je souhaite afficher des messages dans la fenêtre, n'est-il pas nécessaire de créer un nouveau sous-fichier de message lié à la fenêtre?

Je crois que oui, avec la ligne  A                                      WINDOW( RECAP) dans le format de contrôle du sous-fichier de message de la fenêtre.

L'inconvénient est qu'il y a alors deux sous-fichier de message à gérer dans le programme.

Bonjour,

J'ai fini par trouver. En fait, le champ WPGMQ du sous-fichier de contrôle doit contenir le nom du programme et non pas '*         ' (On ne le voit pas dans le code présenté, désolé c'est ma faute).

Cordialement,