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 BEI
Clause PIC
La description
EIBAID
X(1)
Valeur de la dernière touche d’identification d’attention enfoncée
EIBCALEN
S9(4) COMP
Longueur de la ZONE DFHCOMM
EIBDATE
S9(4) COMP-3
Date à laquelle cette tâche a été lancée
EIBFN
X(2)
Code de fonction de la dernière commande CICS en HEX
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.
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 :
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.
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.
Une tentative de récupération d’un enregistrement en fonction de l’argument de recherche fourni échoue.
FILENOTFOUND
Le nom de fichier fourni dans l’option FILE n’est pas défini pour CICS.
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).
LEGERR
La longueur d’un enregistrement lu avec l’option INTO spécifiée dépasse la valeur spécifiée dans l’option LENGTH.
DUPKEY
Si plus d’un enregistrement satisfait la condition sur la clé alternative.
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 :
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.
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 :
Exception
La description
DISABLED
Un fichier est désactivé
FILENOTFOUND
Le nom de fichier fourni dans l’option FILE n’est pas défini pour CICS.
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).
PAS D’ESPACE
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.
DUPKEY
La valeur dans RIDFLD existe déjà dans le fichier.
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 :
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.
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 :
Émis après une commande READ avec l’option UPDATE pour supprimer l’enregistrement lu. Syntaxe :
EXEC CICS DELETE FILE('nomfichier') END-EXEC
É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 :
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.
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 :
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(nomfile).(c’est-à-dire que l’utilisateur n’a pas suffisamment d’autorisations pour accéder au fichier).
FILENOTFOUND
Le nom de fichier n’est pas disponible dans FCT.
INVREQ
Commande de suppression exécutée sans commande READ préalable avec l’option UPDATE.
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 :
Établissez la position à partir de laquelle commencer la récupération séquentielle.
Récupérez les enregistrements de manière séquentielle et traitez-les selon les besoins.
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.
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.
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.
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.
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.