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,Fen colonne 16, décrit en externe (Een colonne 19) et de périphériqueWORKSTN. - 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
CAxxouCFxxdu 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;