Aller au contenu

Code opération RPG III / RPG/400 · IBM i (AS/400) · Écrans (5250)

EXFMT

Afficher un écran et attendre la réponse

Envoie un format d'enregistrement d'un fichier écran au poste de travail, puis attend que l'utilisateur appuie sur Entrée ou sur une touche de fonction, et charge sa saisie.

Syntaxe

     FECRAN   CF  E                    WORKSTN
     C                     EXFMTFORMAT                 ER
Facteur 2 (33-42)
Le nom d'un format d'enregistrement du fichier écran (DSPF). Le fichier est déclaré en spécification F de type C (combiné : entrée et sortie) en colonne 15, F en colonne 16, décrit en externe (E en colonne 19) et de périphérique WORKSTN.
Indicateurs (56-57)
Facultatif : s'allume en cas d'erreur sur l'écran. Sans lui, une erreur arrête le programme.
Effet
Le format est affiché avec les valeurs courantes des zones de sortie et des indicateurs de conditionnement. Le programme est suspendu jusqu'à la réponse. Au retour, les zones d'entrée contiennent la saisie et les indicateurs associés aux touches de fonction (mots-clés CAxx ou CFxx du DSPF, ou indicateurs *INKA à *INKY) indiquent la touche utilisée.

À quoi ça sert

EXFMT est le cœur des programmes interactifs RPG III : afficher une fiche client, une grille de saisie ou un menu, puis traiter ce que l'utilisateur a tapé. Il équivaut à un WRITE du format suivi d'un READ du même format, en une seule opération.

Il ne s'emploie qu'avec un fichier écran décrit en externe. Pour un sous-fichier, on écrit les lignes par WRITE du format sous-fichier, puis on affiche le tout par EXFMT du format de contrôle.

Illustration

Opération d'écran 5250 : cet exemple a été compilé par CRTRPGPGM avec un fichier écran de test, mais pas exécuté, car les exemples du site tournent en traitement par lots, sans écran.

     H*  EXFMT : boucle classique d'un ecran (illustration, non executee)
     FECRCLI  CF  E                    WORKSTN
     C           *INKC     DOWEQ'0'
     C                     EXFMTFMTCLI
     C           *INKC     IFEQ '0'
     C                     EXSR TRAITE
     C                     END
     C                     END
     C                     SETON                     LR
     C*
     C           TRAITE    BEGSR
     C*  ... controle et mise a jour du client NUMCLI ...
     C                     ENDSR

Le piège

Une opération d'écran ne fonctionne pas en traitement par lots. Un programme qui fait EXFMT doit tourner dans un travail interactif rattaché à un poste de travail ; soumis par SBMJOB, il n'a pas d'écran où afficher. Séparez la logique de traitement, appelable en batch, de la gestion de l'écran.

C'est aussi pourquoi cette page n'a pas d'exemple exécuté : les exemples du site sont lancés en batch sur un IBM i 7.5.

En RPG ILE full free

En RPG ILE full free, l'opération garde son nom ; les touches de fonction se testent par les indicateurs de réponse ou par une structure INDDS.

dcl-f ecrcli workstn;

dow not *inkc;
  exfmt fmtcli;
  if not *inkc;
    exsr traite;
  endif;
enddo;