Aller au contenu

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é SFL dans le DSPF). Il est déclaré sur une ligne de continuation de la spécification F : zone de rang relatif en colonnes 47-52, K en colonne 53, SFILE en 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;