Tous les articles par Mr COBOL

CICS – EIB

EIB – Executive Interface Block
(Bloc d’interface exécutif)

CICS fournit des informations relatives au système pour chaque tâche sous la forme d’un bloc d’interface Exec. Comme les informations sont automatiquement fournies par CICS, le programme d’application peut les utiliser immédiatement.

Lorsque le traducteur CICS traduit votre programme, il ajoute le copybook DFHEIBLK comme première entrée dans votre section de liaison. Chaque fois qu’une tâche est lancée, les informations relatives à la tâche peuvent être consultées à l’aide des champs du cahier. EIB est l’acronyme de Executive Interface Block.

DFHEIBLK est similaire à SQLCA. mais contrairement à SQLCA, Execute Interface Block (EIB) est chargé automatiquement par le CICS pour chaque programme lors de la compilation.

Certaines des informations de la BEI les plus couramment utilisées sont :

Champ BEIClause PICLa description
EIBAIDX(1)Valeur de la dernière touche d’identification d’attention enfoncée
EIBCALENS9(4) COMPLongueur de la ZONE DFHCOMM
EIBDATES9(4) COMP-3Date à laquelle cette tâche a été lancée
EIBFNX(2)Code de fonction de la dernière commande CICS en HEX
EIBRCODEX(6)Code de la dernière fonction
EIBTASKS9(7) COMP-3Numéro de tâche de la tâche en cours
EIBTIMES9(7) COMP-3Heure de démarrage de la tâche en cours
EIBTRMIDX(4)Terminal-ID à partir duquel la tâche a été lancée
EIBTRNIDX(4)ID de transaction de la tâche en cours

CICS – AID & HANDLE AID

Il existe certains identificateurs d’attention (AID) associés à chaque écran. Les écrans d’entrée ont des touches ENTER et PF1 (Aide). Les écrans de requête ont PF7 (Page vers le haut), PF8 (Page vers le bas), PF1 (Aide) et ainsi de suite. En fonction de la touche enfoncée par l’utilisateur, le traitement doit se produire dans le programme. EIBAID de DFHEIBLK a la dernière touche appuyée par l’utilisateur. Il peut être vérifié dans le programme après la commande RECEIVE.

DFHAID :

La liste d’identifiants d’attention standard est DFHAID. Il simplifie le test du contenu du champ EIBAID après une opération de prise en charge cartographique de base (BMS) ou d’entrée de contrôle de terminal.

Le contenu suivant est présent dans le copybook DFHAID :

01    DFHAID.
   02  DFHNULL   PIC  X  VALUE IS ' '.
   02  DFHENTER  PIC  X  VALUE IS ''''.
   02  DFHCLEAR  PIC  X  VALUE IS '_'.
   02  DFHCLRP   PIC  X  VALUE IS '¦'.
   02  DFHPEN    PIC  X  VALUE IS '='.
   02  DFHOPID   PIC  X  VALUE IS 'W'.
   02  DFHMSRE   PIC  X  VALUE IS 'X'.
   02  DFHSTRF   PIC  X  VALUE IS 'h'.
   02  DFHTRIG   PIC  X  VALUE IS '"'.
   02  DFHPA1    PIC  X  VALUE IS '%'.
   02  DFHPA2    PIC  X  VALUE IS '>'.
   02  DFHPA3    PIC  X  VALUE IS ','.
   02  DFHPF1    PIC  X  VALUE IS '1'.
   02  DFHPF2    PIC  X  VALUE IS '2'.
   02  DFHPF3    PIC  X  VALUE IS '3'.
   02  DFHPF4    PIC  X  VALUE IS '4'.
   02  DFHPF5    PIC  X  VALUE IS '5'.
   02  DFHPF6    PIC  X  VALUE IS '6'.
   02  DFHPF7    PIC  X  VALUE IS '7'.
   02  DFHPF8    PIC  X  VALUE IS '8'.
   02  DFHPF9    PIC  X  VALUE IS '9'.
   02  DFHPF10   PIC  X  VALUE IS ':'.
   02  DFHPF11   PIC  X  VALUE IS '#'.
   02  DFHPF12   PIC  X  VALUE IS '@'.
   02  DFHPF13   PIC  X  VALUE IS 'A'.
   02  DFHPF14   PIC  X  VALUE IS 'B'.
   02  DFHPF15   PIC  X  VALUE IS 'C'.
   02  DFHPF16   PIC  X  VALUE IS 'D'.
   02  DFHPF17   PIC  X  VALUE IS 'E'.
   02  DFHPF18   PIC  X  VALUE IS 'F'.
   02  DFHPF19   PIC  X  VALUE IS 'G'.
   02  DFHPF20   PIC  X  VALUE IS 'H'.
   02  DFHPF21   PIC  X  VALUE IS 'I'.
   02  DFHPF22   PIC  X  VALUE IS '¢'.
   02  DFHPF23   PIC  X  VALUE IS '.'.
   02  DFHPF24   PIC  X  VALUE IS '<'.

Pour la vérification des valeurs dans EIBAID, copiez le cahier de copie de la liste AID standard fourni par CICS dans votre programme (COPY DFHAID). Maintenant, vous pouvez facilement vérifier la touche enfoncée comme suit.

EVALUATE EIBAID
    WHEN DFHENTER
          PERFORM PARA-1
    WHEN DFHPF1
          PERFORM PARA-2
    WHEN OTHER
          PERFORM PARA-3
END-EVALUATE.

La vérification ci-dessus est effectuée en COBOL et ce type de vérification doit être effectué après chaque commande RECEIVE pour acheminer correctement le flux. CICS fournit son propre traitement de routage basé sur la touche enfoncée par la commande HANDLE AID. Cela sera efficace tout au long du programme et réduira la redondance du code. Le routage sera automatiquement appelé à chaque RECEIVE.

EXEC CICS HANDLE AID
    DFHENTER(PARA-1)
    DFHPF1(PARA-2)
    ANYKEY(PARA-3)
END-EXEC.

CICS – READ

La commande READ lit un enregistrement à partir d’un fichier à l’aide de la clé primaire. La commande READ est utilisée pour le traitement aléatoire.

Syntaxe:

Vous trouverez ci-dessous la syntaxe de la commande READ :

EXEC CICS READ
   FILE('nomfichier')
   INTO(zone-donnee)
   RIDFLD(zone-donnee) [RBA|RRN]
   LENGTH(valeur-donnee)
   KEYLENGTH(valeur-donnee)
END-EXEC.

Pour les commandes UPDATE et non-UPDATE, vous devez identifier l’enregistrement à récupérer par le champ d’identification d’enregistrement spécifié dans l’option RIDFLD. Immédiatement après l’exécution d’une commande READ UPDATE, la zone de données RIDFLD est disponible pour être réutilisée par le programme d’application.


Voyons les paramètres utilisés dans la commande READ :

  • FILE(nomfichier)
    Spécifie le nom du fichier auquel accéder.
  • INTO(zone-donnee)
    Spécifie la zone de données dans laquelle l’enregistrement extrait de l’ensemble de données doit être écrit.Lorsque INTO est spécifié, LENGTH doit être spécifié explicitement ou doit pouvoir être défini par défaut à partir de l’option INTO à l’aide de la référence d’attribut de longueur dans le langage assembleur
  • LENGTH
    Il spécifie le nombre maximum de caractères pouvant être lus dans la zone de données spécifiée. Il doit s’agir d’une valeur binaire demi-mot (PIC S9(4) COMP). Une fois la commande READ terminée, CICS remplace la valeur maximale que nous spécifions par la longueur réelle de l’enregistrement. Pour cette raison, nous devons spécifier LENGTH comme nom d’une zone de données plutôt qu’un littéral et devons réinitialiser cette zone de données si nous l’utilisons pour LENGTH plus d’une fois dans le programme. Un enregistrement plus long déclenchera une condition d’erreur.
  • RIDFLD(zone-donnee)
    Spécifie le champ d’identification de l’enregistrement.Il porte le nom de la zone de données contenant la clé de l’enregistrement que l’on veut lire.
  • KEYLENGTH(valeur-donnee)
    spécifie la longueur (demi-mot binaire) de la clé qui a été spécifiée dans l’option RIDFLD, sauf lorsque RBA ou RRN est spécifié, auquel cas la valeur KEYLENGTH n’est pas valide. Cette option doit être spécifiée si GENERIC est spécifié, et elle peut être spécifiée chaque fois qu’une clé est spécifiée. Cependant, si la longueur spécifiée est différente de la longueur définie pour l’ensemble de données et que l’opération n’est pas générique, la condition INVREQ se produit. La condition INVREQ se produit également si GENERIC est spécifié et que la valeur KEYLENGTH n’est pas inférieure à celle spécifiée dans la définition VSAM.

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)
        END-EXEC.

La description:

Ce programme a lu l’enregistrement dans le fichier ‘STDLST’ pour la valeur de clé ‘502258’ et a écrit les données dans WS-REC-DATA.

Nom de fichier-‘STDLST’ est le nom du fichier que nous voulons lire. Il s’agit du nom de fichier symbolique CICS qui identifie l’entrée FCT (table de contrôle des fichiers) pour le fichier. Les noms de fichiers peuvent comporter jusqu’à 8 caractères et doivent être placés entre guillemets s’ils sont littéraux.

Après l’exécution, WS-REC-DATA fera lire l’enregistrement de données à partir de ‘STDLST’ dont la valeur de clé est ‘502258’.


Options de commande de lecture :

Voyons quelques-unes des options fréquemment utilisées avec la commande READ.

  • GENERIC
    Pour les demandes de clé partielles, l’option GENERIC peut être utilisée. La longueur de la clé partielle doit être spécifiée dans l’option KEYLENGTH.Il est utilisé lorsque nous ne connaissons pas la valeur complète de la clé. Par exemple, nous voulons un enregistrement dont la clé primaire commence par ‘999’ et le reste de la clé peut être n’importe quoi. Bien que la longueur de la clé soit de 6 caractères, nous n’en mentionnons que 3. Il est important de mentionner la longueur de la clé qui donne la longueur pour laquelle elle doit faire la correspondance. Le premier enregistrement qui répond aux critères sera sélectionné.
  • UPDATE
    Spécifie que l’enregistrement doit être obtenu pour la mise à jour ou la suppression. Si cette option est omise, une opération en lecture seule est supposée. UPDATE garantit l’intégrité en lecture.Spécifier UPDATE donne à votre transaction le contrôle exclusif de l’enregistrement demandé.
  • EQUAL
    Il précise que nous ne voulons que l’enregistrement dont la clé correspond exactement à ce qui est spécifié par RIDFLD.
  • GTEQ
    Si la recherche d’un enregistrement qui a la même clé (complète ou générique) que celle spécifiée dans l’option RIDFLD échoue, le premier enregistrement qui a une clé supérieure est récupéré. En d’autres termes, il spécifie que nous voulons le premier enregistrement dont la clé est supérieure ou égale à la clé spécifiée dans le RIDFLD.
  • RBA
    Spécifie que le fichier est ESDS et que l’option RIDFLD doit être interprétée comme l’adresse d’octet relative.
  • RRN
    Spécifie que le fichier est RRDS.

Exemples:

L’exemple suivant vous montre comment lire un enregistrement d’un fichier nommé STDFL dans une zone de données spécifiée.

    EXEC CICS READ
         INTO(WS-RECORD)
         FILE('STDFL')
         RIDFLD(WS-ACCTNO)
    END-EXEC

L’exemple suivant vous montre comment lire un enregistrement à mettre à jour à partir d’un fichier VSAM à l’aide d’une clé générique et en spécifiant une recherche de clé supérieure ou égale.

    EXEC CICS READ
         INTO(RECORD)
         LENGTH(RECLEN)
         FILE('STDFL')
         RIDFLD(ACCTNO)
         KEYLENGTH(4)
         GENERIC
         GTEQ
         UPDATE
    END-EXEC


Lire les conditions d’exception de commande :

ExceptionLa description
DISABLEDUn fichier est désactivé
NOTFNDUne tentative de récupération d’un enregistrement en fonction de l’argument de recherche fourni échoue.
FILENOTFOUNDLe nom de fichier fourni dans l’option FILE n’est pas défini pour CICS.
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).
LEGERRLa longueur d’un enregistrement lu avec l’option INTO spécifiée dépasse la valeur spécifiée dans l’option LENGTH.
DUPKEYSi plus d’un enregistrement satisfait la condition sur la clé alternative.

CICS – WRITE

La commande WRITE écrit un nouvel enregistrement dans un fichier. Les paramètres utilisés dans la commande WRITE sont les mêmes que ceux de la commande READ.

Syntaxe:

Vous trouverez ci-dessous la syntaxe de la commande WRITE :

EXEC CICS WRITE
   FILE(nomfichier)
   FROM(zone-donnee)
   RIDFLD(zone-donnee) [RBA|RRN]
   LENGTH(valeur-donnee)
   KEYLENGTH(valeur-donnee)
END-EXEC.

Voyons les paramètres utilisés dans la commande WRITE :

  • FICHIER(nomfichier)
    Spécifie le nom du fichier auquel accéder.
  • FROM(zone-donnee)
    Spécifie l’enregistrement qui doit être écrit dans l’ensemble de données auquel ce fichier fait référence.
  • LENGTH
    Spécifie la longueur, en tant que valeur binaire demi-mot (PIC S9(4) COMP), de la zone de données à partir de laquelle l’enregistrement est écrit.
  • RIDFLD(zone-donnee)
    Spécifie la clé de l’enregistrement à écrire. Si RBA ou RRN est spécifié, ce champ est interprété respectivement comme une adresse d’octet relative ou un numéro d’enregistrement relatif.
  • RBA
    Spécifie que le fichier est ESDS et que l’option RIDFLD doit être interprétée comme l’adresse d’octet relative.
  • RRN
    Spécifie que le fichier est RRDS et que l’option RIDFLD doit être interprétée comme le numéro d’enregistrement relatif.
  • KEYLENGTH(valeur-donnee)
    spécifie la longueur (demi-mot binaire) de la clé qui a été spécifiée dans l’option RIDFLD.

Exemple:

Voyons un exemple de programme CICS pour la commande WRITE.

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(3).
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.
      MOVE '502258IBMMAINFRAMER TUTORIALS' TO WS-REC-DATA.
      EXEC CICS WRITE
        FILE('STDLST')
        FROM(WS-REC-DATA)
        LENGTH(WS-REC-LEN)
        RIDFLD(WS-REC-KEY)
        KEYLENGTH(WS-KEY-LEN)
      END-EXEC.

La description:

Ce programme écrit les données de WS-REC-DATA dans le fichier ‘STDLST’.

Nom de fichier-‘STDLST’ est le nom du fichier que nous voulons écrire. Il s’agit du nom de fichier symbolique CICS qui identifie l’entrée FCT (table de contrôle des fichiers) pour le fichier. Les noms de fichiers peuvent comporter jusqu’à 8 caractères et doivent être placés entre guillemets s’ils sont littéraux.

Après exécution, WS-REC-DATA sera écrit dans le fichier ‘STDLST’.


Conditions d’exception de la commande WRITE :

ExceptionLa description
DISABLEDUn fichier est désactivé
FILENOTFOUNDLe nom de fichier fourni dans l’option FILE n’est pas défini pour CICS.
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).
PAS D’ESPACEAucun 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.
DUPKEYLa valeur dans RIDFLD existe déjà dans le fichier.

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.

CICS – DELETE

La commande DELETE est utilisée pour supprimer un enregistrement d’un fichier VSAM – KSDS et RRDS.

Syntaxe:

Vous trouverez ci-dessous la syntaxe de la commande DELETE.

EXEC CICS DELETE
   FILE('filename')
   RIDFLD(data-area) [RBA|RRN]
   KEYLENGTH(data-value)
   [GENERIC|NUMERIC(rec-number)]
END-EXEC.

Les enregistrements des fichiers VSAM KSDS et RRDS peuvent être supprimés, mais pas des fichiers VSAM ESDS.

L’option NUMREC renverra le nombre d’enregistrements supprimés lors d’une suppression GENERIC.

KEYLENGTH doit être spécifié pour une suppression GENERIC.


La commande DELETE peut être émise pour supprimer des enregistrements d’un ensemble de données de deux manières :

  1. Émis après une commande READ avec l’option UPDATE pour supprimer l’enregistrement lu.
    Syntaxe :
    EXEC CICS DELETE
    FILE('nomfichier')
    END-EXEC
  2. Émis avec l’option RIDFLD lorsqu’il n’y a pas d’option READ avec UPDATE préalable. Cela supprimera l’enregistrement dont la clé correspond au RIDFLD.
    Syntaxe :
    EXEC CICS DELETE
    FILE('nomfichier')
    RIDFLD(zone-donnee)
    KEYLENGTH(valeur-donnee)
    END-EXEC

Voyons les paramètres utilisés dans la commande DELETE.

  • FILE(nomfichier)
    Spécifie le nom du fichier auquel accéder.
  • RIDFLD(zone-donnee)
    Spécifie le champ d’identification de l’enregistrement. Il porte le nom de la zone de données contenant la clé de l’enregistrement que l’on souhaite supprimer.
  • KEYLENGTH(valeur-donnee)
    Spécifie la longueur (demi-mot binaire) de la clé qui a été spécifiée dans l’option RIDFLD


Exemple:

Voyons un exemple de programme CICS pour la commande DELETE.

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).
01 WS-DEL-REC         PIC S9(4).
PROCEDURE DIVISION.
        MOVE '502258'       TO WS-REC-KEY.
        MOVE 6              TO WS-KEY-LEN.

        EXEC CICS DELETE
           FILE('STDLST')
           RIDFLD(WS-REC-KEY)
           KEYLENGTH(WS-KEY-LEN)
           GENERIC
           NUMREC(WS-DEL-REC)
        END-EXEC.

La description:

Cet exemple pour supprimer plus d’un enregistrement. Cela peut être fait en utilisant l’option Générique dans la commande Supprimer, où tous les enregistrements qui satisfont aux critères génériques seront supprimés. NUMREC contiendra le nombre d’enregistrements supprimés. Le champ mentionné ici doit être un demi-mot binaire (S9(4) comp).


Supprimer les conditions d’exception de la commande :

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(nomfile).(c’est-à-dire que l’utilisateur n’a pas suffisamment d’autorisations pour accéder au fichier).
FILENOTFOUNDLe nom de fichier n’est pas disponible dans FCT.
INVREQCommande de suppression exécutée sans commande READ préalable avec l’option UPDATE.

CICS – VSAM : Opération et Commande BROWSE

VSAM – Opération BROWSE

L’opération BROWSE est utilisée pour extraire séquentiellement les enregistrements du fichier VSAM sous-jacent en fonction de critères de sélection.

L’accès séquentiel au fichier VSAM sous CICS est appelé navigation. Il a CINQ commandes qui lui sont associées.

Opération READ/BROWSE dans VSAM :

L’opération BROWSE se compose de trois étapes :

  1. Établissez la position à partir de laquelle commencer la récupération séquentielle.
  2. Récupérez les enregistrements de manière séquentielle et traitez-les selon les besoins.
  3. Terminez la navigation lorsqu’aucune autre extraction séquentielle n’est requise.

La position de départ pour le BROWSE peut être rétablie à tout moment pendant l’opération BROWSE.

Un enregistrement qui a été récupéré dans le cadre d’un parcours ne peut pas être mis à jour pendant le parcours. Pour cela, l’opération de navigation doit être terminée et l’enregistrement doit être relu avec l’option de mise à jour.


Commande BROWSE VSAM :

  • STARTBR – Établit la position de départ dans le fichier.
  • READNEXT – Récupérer les enregistrements dans l’ordre croissant de manière séquentielle tel que défini par STARTBR.
  • READPREV – Récupérer les enregistrements dans l’ordre décroissant (inverse) défini par STARTBR.
  • RESETBR – Réinitialise la navigation en repositionnant le pointeur.
  • ENDBR – Terminer la navigation

UPDATE  pendant le BROWSE :

Update et Browse sont des fonctions mutuellement exclusives. Donc, si vous souhaitez mettre à jour un enregistrement pendant l’opération de Browse, émettez d’abord ENDBR. Ensuite, donnez une lecture aléatoire en utilisant la clé en main avec l’option UPDATE. REWRITE  (RÉÉCRIVEZ) l’enregistrement. Lancez ensuite STARTBR avec la clé en main et continuez la navigation.

CICS – STARTBR

La commande STARTBR établit la position dans le fichier, mais ne récupère pas d’enregistrement.

Syntaxe:

Vous trouverez ci-dessous la syntaxe de la commande STARTBR.

EXEC CICS STARTBR
   FILE('nom-fichier')
   RIDFLD(zone-donnee) [GENERIC]
   KEYLENGTH(valeur-donnee)
   REQID(valeur-donnee)
   SYSID(nom-systeme)
   GTEQ/EQUAL
END-EXEC.

L’option UPDATE n’est pas autorisée et la commande de navigation dans les fichiers est strictement réservée aux opérations en lecture seule.

La signification des paramètres est identique à l’explication de l’opération READ. Lorsque vous souhaitez effectuer plusieurs navigations simultanément sur le même fichier, utilisez REQID. Le premier STARTBR peut être codé avec REQID(1) et le second STARTBR peut être codé avec REQID(2).

Une opération de navigation occupe une chaîne de VSAM. Si toutes les chaînes VSAM sont épuisées pour un fichier VSAM, les autres transactions devront attendre que l’une des chaînes se libère. Il n’est donc pas recommandé d’utiliser la navigation multiple. Au lieu de cela, une fois la navigation terminée, utilisez RESETBR pour définir la position à un autre endroit et commencer à naviguer. La syntaxe de RESETBR est la même que STARTBR.


Voyons les paramètres utilisés dans la commande STARTBR.

  • FILE(nom-fichier)
    Spécifie le nom du fichier auquel accéder.
  • RIDFLD(zone-donnee)
    Spécifie le champ d’identification de l’enregistrement.Il porte le nom de la zone de données contenant la clé de l’enregistrement que l’on veut lire.
  • KEYLENGTH(valeur-donnee)
    Spécifie la longueur (demi-mot binaire) de la clé qui a été spécifiée dans l’option RIDFLD, sauf lorsque RBA ou RRN est spécifié, auquel cas KEYLENGTH n’est pas valide.Cette option doit être spécifiée si GENERIC est spécifié, et elle peut être spécifiée chaque fois qu’une clé est spécifiée. Si la longueur spécifiée est différente de la longueur définie pour l’ensemble de données et que l’opération n’est pas générique, la condition INVREQ se produit.
  • EQUAL
    Spécifie que la recherche n’est satisfaite que par un enregistrement ayant la même clé (complète ou générique) que celle spécifiée dans l’option RIDFLD.Cette option est le champ par défaut pour une navigation ESDS directe.
  • REQID(valeur-donnee)
    Spécifie en tant que valeur binaire demi-mot un identificateur de requête unique pour un parcours, utilisé pour contrôler plusieurs opérations de parcours sur un fichier. Si cette option n’est pas spécifiée, une valeur par défaut de zéro est supposée.
  • SYSID(nom-systeme)
    Spécifie le nom du système vers lequel la demande est dirigée.
  • GENERIC
    Spécifie que la clé de recherche est une clé générique dont la longueur est spécifiée dans l’option KEYLENGTH. La recherche d’un enregistrement est satisfaite lorsqu’un enregistrement est trouvé qui a les mêmes caractères de début (clé générique) que ceux spécifiés.
  • GTEQ
    Spécifie que, si la recherche d’un enregistrement qui a la même clé (complète ou générique) que celle spécifiée dans l’option RIDFLD échoue, le premier enregistrement qui a une clé plus grande satisfait la recherche. Cette option est la valeur par défaut pour parcourir directement un KSDS ou un RRDS. Il n’est pas valable pour parcourir directement une ESDS, bien qu’il soit valable pour parcourir une ESDS à l’aide d’un chemin.

CICS – READNEXT

La commande READNEXT récupère les enregistrements séquentiellement dans l’ordre défini par la commande STARTBR. Le RIDFLD est automatiquement mis à jour par CICS pour le prochain READ ; les programmes d’application N’ONT PAS BESOIN de le mettre à jour. RIDFLD peut être défini sur une valeur supérieure au RIDFLD actuel extrait. Si un READNEXT est effectué de cette manière, il s’appelle “ignorer le traitement séquentiel”.

Syntaxe:

Vous trouverez ci-dessous la syntaxe de la commande READNEXT.

EXEC CICS READNEXT
          FILE(nom-fichier)
          RIDFLD(zone-donnee)
          INTO(zone-donnee)
          LENGTH(WS-LENGTH)
          KEYLENGTH(valeur-donnee)
          REQID(valeur-donnee)
          SYSID(nom-systeme)
END-EXEC.

READNEXT est utilisé pour lire les enregistrements dans le sens aller à partir de la position établie par STARTBR. READPREV est utilisé pour lire les enregistrements dans le sens inverse. READPREV suivi de READNEXT récupère à nouveau le même enregistrement.

Pendant la navigation, si vous souhaitez ignorer un ensemble d’enregistrements, déplacez la clé du prochain enregistrement que vous souhaitez lire vers RIDFLD, puis émettez READNEXT. C’est ce qu’on appelle sauter la lecture séquentielle. Ainsi, RIDFLD peut être utilisé à la fois comme champ d’entrée et comme champ de sortie.

Comme les fichiers VSAM sont de longueur variable dans la plupart des cas, WS-LENGTH doit être rempli avec la longueur d’enregistrement maximale avant d’émettre la commande READ. KEYLENGTH(0) placera le curseur au début du fichier.


Voyons les paramètres utilisés dans la commande READNEXT.

  • FILE(nom-fichier)
    Spécifie le nom du fichier auquel accéder.
  • RIDFLD(zone-donnee)
    Spécifie le champ d’identification de l’enregistrement.Il porte le nom de la zone de données contenant la clé de l’enregistrement que l’on veut lire.
  • INTO(zone-donnee)
    Spécifie la zone de données dans laquelle l’enregistrement extrait de l’ensemble de données doit être écrit.Lorsque INTO est spécifié, LENGTH doit être spécifié explicitement ou doit pouvoir être défini par défaut à partir de l’option INTO à l’aide de la référence d’attribut de longueur dans le langage assembleur
  • LENGTH(WS-LENGTH)
    Il spécifie le nombre maximum de caractères pouvant être lus dans la zone de données spécifiée. Il doit s’agir d’une valeur binaire demi-mot (PIC S9(4) COMP). Une fois la commande READ terminée, CICS remplace la valeur maximale que nous spécifions par la longueur réelle de l’enregistrement. Pour cette raison, nous devons spécifier LENGTH comme nom d’une zone de données plutôt qu’un littéral et devons réinitialiser cette zone de données si nous l’utilisons pour LENGTH plus d’une fois dans le programme. Un enregistrement plus long déclenchera une condition d’erreur.
  • KEYLENGTH(valeur-donnee)
    Spécifie la longueur (demi-mot binaire) de la clé qui a été spécifiée dans l’option RIDFLD, sauf lorsque RBA ou RRN est spécifié, auquel cas KEYLENGTH n’est pas valide.Cette option doit être spécifiée si GENERIC est spécifié, et elle peut être spécifiée chaque fois qu’une clé est spécifiée. Si la longueur spécifiée est différente de la longueur définie pour l’ensemble de données et que l’opération n’est pas générique, la condition INVREQ se produit.
  • REQID(valeur-donnee)
    Spécifie en tant que valeur binaire demi-mot un identificateur de requête unique pour un parcours, utilisé pour contrôler plusieurs opérations de parcours sur un fichier. Si cette option n’est pas spécifiée, une valeur par défaut de zéro est supposée.
  • SYSID(nom-systeme)
    Spécifie le nom du système vers lequel la demande est dirigée.

CICS – READPREV

La commande READPREV récupère les enregistrements dans l’ordre inverse défini par la commande STARTBR.

La position du fichier peut être modifiée en déplaçant la nouvelle valeur de clé vers le contenu de RIDFLD avant la commande READNEXT ou READPREV.

Syntaxe:

Vous trouverez ci-dessous la syntaxe de la commande READPREV.

EXEC CICS READPREV
          FILE(nom-fichier)
          RIDFLD(zone-donnee)
          INTO(zone-donnee)
          LENGTH(WS-LENGTH)
          KEYLENGTH(valeur-donnee)
          REQID(valeur-donnee)
          SYSID(nom-systeme)
END-EXEC.

READNEXT est utilisé pour lire les enregistrements dans le sens aller à partir de la position établie par STARTBR. READPREV est utilisé pour lire les enregistrements dans le sens inverse. READPREV suivi de READNEXT récupère à nouveau le même enregistrement.

Pendant la navigation, si vous souhaitez ignorer un ensemble d’enregistrements, déplacez la clé du prochain enregistrement que vous souhaitez lire vers RIDFLD, puis émettez READNEXT. C’est ce qu’on appelle sauter la lecture séquentielle. Ainsi, RIDFLD peut être utilisé à la fois comme champ d’entrée et comme champ de sortie.

Comme les fichiers VSAM sont de longueur variable dans la plupart des cas, WS-LENGTH doit être rempli avec la longueur d’enregistrement maximale avant d’émettre la commande READ. KEYLENGTH(0) placera le curseur au début du fichier.

Si vous spécifiez READPREV immédiatement après STARTBR, vous devez alors coder la clé d’un enregistrement qui existe sur l’ensemble de données. Sinon, la condition NOTFND se produit sur READPREV.


Voyons les paramètres utilisés dans la commande READPREV.

  • FILE(nom-fichier)
    Spécifie le nom du fichier auquel accéder.
  • RIDFLD(zone-donnee)
    Spécifie le champ d’identification de l’enregistrement. Il porte le nom de la zone de données contenant la clé de l’enregistrement que l’on veut lire.
  • INTO(zone-donnee)
    Spécifie la zone de données dans laquelle l’enregistrement extrait de l’ensemble de données doit être écrit. Lorsque INTO est spécifié, LENGTH doit être spécifié explicitement ou doit pouvoir être défini par défaut à partir de l’option INTO à l’aide de la référence d’attribut de longueur dans le langage assembleur
  • LENGTH(WS-LENGTH)
    Il spécifie le nombre maximum de caractères pouvant être lus dans la zone de données spécifiée. Il doit s’agir d’une valeur binaire demi-mot (PIC S9(4) COMP). Une fois la commande READ terminée, CICS remplace la valeur maximale que nous spécifions par la longueur réelle de l’enregistrement. Pour cette raison, nous devons spécifier LENGTH comme nom d’une zone de données plutôt qu’un littéral et devons réinitialiser cette zone de données si nous l’utilisons pour LENGTH plus d’une fois dans le programme. Un enregistrement plus long déclenchera une condition d’erreur.
  • KEYLENGTH(valeur-donnee)
    Spécifie la longueur (demi-mot binaire) de la clé qui a été spécifiée dans l’option RIDFLD, sauf lorsque RBA ou RRN est spécifié, auquel cas KEYLENGTH n’est pas valide. Cette option doit être spécifiée si GENERIC est spécifié, et elle peut être spécifiée chaque fois qu’une clé est spécifiée. Si la longueur spécifiée est différente de la longueur définie pour l’ensemble de données et que l’opération n’est pas générique, la condition INVREQ se produit.
  • REQID(valeur-donnee)
    Spécifie en tant que valeur binaire demi-mot un identificateur de requête unique pour un parcours, utilisé pour contrôler plusieurs opérations de parcours sur un fichier. Si cette option n’est pas spécifiée, une valeur par défaut de zéro est supposée.
  • SYSID(nom-systeme)
    Spécifie le nom du système vers lequel la demande est dirigée.