Code opération RPG III / RPG/400 · IBM i (AS/400) · Écrans (5250)
READC
Lire les lignes modifiées d'un sous-fichier
Lit le prochain enregistrement d'un sous-fichier que l'utilisateur a modifié, pour ne traiter que les lignes sur lesquelles il a saisi quelque chose.
Syntaxe
FECRAN CF E WORKSTN
F RANG KSFILE SFLCLI
C READCSFLCLI ER FIN
- Facteur 2 (33-42)
- Le nom du format sous-fichier (celui qui porte le mot-clé
SFLdans le DSPF). Il est déclaré sur une ligne de continuation de la spécification F : zone de rang relatif en colonnes 47-52,Ken colonne 53,SFILEen colonnes 54-59 et nom du format en colonnes 60-67. - Indicateurs (56-57)
- Facultatif : s'allume en cas d'erreur.
- Indicateurs (58-59)
- Obligatoire : s'allume quand il ne reste plus d'enregistrement modifié à lire.
- Effet
- Charge les zones du format sous-fichier avec la prochaine ligne modifiée et place son rang dans la zone de rang relatif déclarée par
SFILE. Quand il n'en reste plus, l'indicateur 58-59 s'allume.
À quoi ça sert
Après l'affichage d'un sous-fichier par EXFMT du format de contrôle, l'utilisateur a pu saisir une option (2 = modifier, 4 = supprimer…) sur quelques lignes. READC évite de relire toutes les lignes : il ne rend que celles qui ont été modifiées.
Après traitement, on réécrit souvent la ligne par UPDAT du format sous-fichier, par exemple pour effacer l'option saisie.
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* READC : traiter les options saisies (illustration, non executee)
FECRCLI CF E WORKSTN
F RANG KSFILE SFLCLI
C Z-ADD0 RANG 40
C EXFMTCTLCLI
C READCSFLCLI 90
C *IN90 DOWEQ'0'
C OPTION IFEQ '4'
C EXSR SUPPRI
C END
C READCSFLCLI 90
C END
C SETON LR
C*
C SUPPRI BEGSR
C* ... suppression du client de la ligne RANG ...
C ENDSR
Le piège
Une ligne n'est rendue que si elle a été modifiée. Une ligne que l'utilisateur n'a pas touchée n'est pas lue, même si le programme y a écrit une option. Pour qu'une ligne soit relue au tour suivant (une erreur à corriger, par exemple), réécrivez-la par UPDAT avec le mot-clé SFLNXTCHG du DSPF actif.
Comme EXFMT, READC demande un écran : cette page n'a pas d'exemple exécuté en batch.
En RPG ILE full free
En RPG ILE full free, l'indicateur de fin est remplacé par %EOF.
dcl-f ecrcli workstn sfile(sflcli : rang);
exfmt ctlcli;
readc sflcli;
dow not %eof(ecrcli);
if option = '4';
exsr suppri;
endif;
readc sflcli;
enddo;