La commande REWRITE permet de mettre à jour un enregistrement déjà lu. Avant d’émettre une commande REWRITE, la commande READ doit avoir été émise avec l’option UPDATE. Le champ clé de l’enregistrement ne peut pas être modifié.
Syntaxe:
Vous trouverez ci-dessous la syntaxe de la commande REWRITE :
EXEC CICS REWRITE
FILE(nomfichier)
FROM(zone-donnee)
LENGTH(valeur-donnee)
END-EXEC.
Voyons les paramètres utilisés dans la commande READ :
- FILE(nomfichier)
Spécifie le nom du fichier auquel accéder. - FROM(zone-donnee)
Spécifie la zone de données à partir de laquelle les données doivent être écrites. - LENGTH
spécifie la longueur, sous forme de valeur binaire de demi-mot, de la zone de données à partir de laquelle l’enregistrement est écrit.
Exemple:
Voyons un exemple de programme CICS pour la commande READ.
IDENTIFICATION DIVISION.
PROGRAM-ID. IBMMF.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-REC-LEN PIC S9(4) COMP.
01 WS-KEY-LEN PIC S9(4) COMP.
01 WS-REC-KEY PIC 9(6).
01 WS-REC-DATA PIC X(80).
PROCEDURE DIVISION.
MOVE +80 TO WS-REC-LEN.
MOVE ‘502258’ TO WS-REC-KEY.
MOVE 6 TO WS-KEY-LEN.
EXEC CICS READ
FILE('STDLST')
INTO(WS-REC-DATA)
LENGTH(WS-REC-LEN)
RIDFLD(WS-REC-KEY)
KEYLENGTH(WS-KEY-LEN)
UPDATE
END-EXEC.
MOVE '502258IBMMAINFRAMER TUTORIALS' TO WS-STD-REC.
EXEC CICS REWRITE
FILE('STDLST')
FROM(WS-REC-DATA)
LENGTH(WS-REC-LEN)
END-EXEC.
La description:
Cet exemple montre comment écrire un enregistrement dans le fichier ‘STDLST’ où Student-id est la clé primaire. Un nouvel enregistrement avec le numéro d’étudiant 502258 sera écrit dans le fichier ‘STDLST’.
Conditions d’exception de la commande REWRITE :
Exception | La description |
---|---|
DISABLED | Un fichier est désactivé |
NOTOPEN | Le fichier n’est pas ouvert. |
NOTAUTH | Une vérification de la sécurité des ressources a échoué sur FILE(filename).(c’est-à-dire que l’utilisateur n’a pas suffisamment d’autorisations pour accéder au fichier). |
NOSPACE | Aucun espace n’est disponible pour un nouvel enregistrement. |
LEGERR | Non-concordance entre la longueur spécifiée dans la commande et la longueur réelle de l’enregistrement. |
INVREQ | Commande de réécriture exécutée sans commande READ préalable avec l’option UPDATE. |