CICS – REWRITE

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 :

ExceptionLa description
DISABLEDUn fichier est désactivé
NOTOPENLe fichier n’est pas ouvert.
NOTAUTHUne 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).
NOSPACEAucun espace n’est disponible pour un nouvel enregistrement.
LEGERRNon-concordance entre la longueur spécifiée dans la commande et la longueur réelle de l’enregistrement.
INVREQCommande de réécriture exécutée sans commande READ préalable avec l’option UPDATE.