PUTDDREC : Attribuer une chaîne de caractères en tant qu'enregistrement dans un fichier séquentiel

Comment :

La fonction PUTDDREC inscrit une chaîne de caractères comme enregistrement d'un fichier séquentiel. Le fichier doit être identifié avec une commande FILEDEF (DYNAM sous z/OS). si le fichier est défini en tant que fichier existant (avec l'option APPEND), le nouvel enregistrement est ajouté. Si le fichier est défini en tant que NEW mais qu'il existe déjà, le nouvel enregistrement remplace le fichier existant.

Pour en savoir plus sur la commande FILDEDEF, consultez le manuel Développement d'applications de reporting .

PUTDDREC ouvre le fichier s'il n'est pas déjà ouvert. Chaque appel à PUTDDREC peut utiliser le même fichier ou un nouveau. Tous les fichiers ouverts par PUTDDREC reste ouvert jusqu'à la fin de la requête ou la connexion. À la fin de la requête ou de connexion, tous les fichiers ouverts par PUTDDREC sont fermés automatiquement. Pour les informations sur la fermeture de fichiers ouverts par PUTDDREC dans le but de libérer de la mémoire, consultez CLSDDREC : Fermer tous les fichiers ouverts par la fonction PUTDDREC.

Si PUTDDREC est appelé dans une commande -SET du gestionnaire de dialogue, les fichiers ouverts par PUTDDREC ne sont pas fermés automatiquement jusqu'à la fin d'une requête ou d'une connexion. Dans ce cas, vous pouvez fermer les fichiers et libérer la mémoire utilisée pour stocker l'information relative au fichier ouvert en invoquant la fonction CLSDDREC.


Haut de page

x
Syntaxe : Inscrire une chaîne de caractères comme enregistrement dans un fichier séquentiel
PUTDDREC(ddname, dd_len, record_string, record_len, output) 

où :

ddname

Alphanumérique

est le nom logique affecté au fichier séquentiel dans la commande FILEDEF.

dd_len

Numérique

est le nombre de caractères du nom logique.

record_string

Alphanumérique

est la chaîne de caractères à ajouter comme nouvel enregistrement du fichier séquentiel.

record_len

Numérique

est le nombre de caractères ajoutés au nouvel enregistrement.

Il ne peut pas être plus grand que le nombre de caractères dans record_string. Pour écrire tout record_string dans le fichier, record_len doit être égal au nombre de caractères dans record_string et ne doit pas excéder la longueur d'enregistrements déclarée dans la commande FILEDEF command. Si record_len est plus courte que la longueur déclarée, le fichier résultant pourra contenir des caractères superflus à la fin de chaque enregistrement. Si record_string est plus grande que la longueur déclarée, record_string pourra être tronqué dans le fichier résultant.

output

Entier

est le code renvoyé, qui peut avoir l'une des valeurs suivant :

0- Enregistrement est ajouté.
-1 - Instruction FILEDEF introuvable.
-2 - Erreur lors de l'ouverture du fichier.
-3 - Erreur lors de l'ajout de l'enregistrement au fichier.



Exemple : Invoquer PUTDDREC dans une requête TABLE

L'exemple suivant définit un nouveau fichier dont le nom logique est PUTDD1. La requête TABLE invoque alors PUTDDREC pour chaque employé de la source de données EMPLOYEE et écrit un enregistrement dans le fichier composé par les informations suivantes sur les employés : nom, prénom, ID employé, code de fonction en cours, et salaire en cours (convertis en caractères alphanumériques avec la fonction EDIT). Le code de retour zéro (dans OUT1) indique que l'appel à la fonction PUTDDREC a réussi :

FILEDEF PUTDD1 DISK putdd1.datTABLE FILE EMPLOYEE
PRINT EMP_ID CURR_JOBCODE AS 'JOB' CURR_SAL
COMPUTE SALA/A12 = EDIT(CURR_SAL); NOPRINT
COMPUTE EMP1/A50= LAST_NAME|FIRST_NAME|EMP_ID|CURR_JOBCODE|SALA;
NOPRINT
COMPUTE OUT1/I1 = PUTDDREC('PUTDD1',6, EMP1, 50, OUT1);
BY LAST_NAME BY FIRST_NAME
END

La sortie est :

LAST_NAME        FIRST_NAME  EMP_ID     JOB         CURR_SAL  OUT1
---------        ----------  ---------  ---         --------  ----
BANNING          JOHN        119329144  A17       $29,700.00     0
BLACKWOOD        ROSEMARIE   326179357  B04       $21,780.00     0
CROSS            BARBARA     818692173  A17       $27,062.00     0
GREENSPAN        MARY        543729165  A07        $9,000.00     0
IRVING           JOAN        123764317  A15       $26,862.00     0
JONES            DIANE       117593129  B03       $18,480.00     0
MCCOY            JOHN        219984371  B02       $18,480.00     0
MCKNIGHT         ROGER       451123478  B02       $16,100.00     0
ROMANS           ANTHONY     126724188  B04       $21,120.00     0
SMITH            MARY        112847612  B14       $13,200.00     0
                 RICHARD     119265415  A01        $9,500.00     0
STEVENS          ALFRED      071382660  A07       $11,000.00     0

Après l'exécution de la requête, le fichier séquentiel contient les enregistrements suivants :

BANNING        JOHN      119329144A17000000029700
BLACKWOOD      ROSEMARIE 326179357B04000000021780
CROSS          BARBARA   818692173A17000000027062
GREENSPAN      MARY      543729165A07000000009000
IRVING         JOAN      123764317A15000000026862
JONES          DIANE     117593129B03000000018480
MCCOY          JOHN      219984371B02000000018480
MCKNIGHT       ROGER     451123478B02000000016100
ROMANS         ANTHONY   126724188B04000000021120
SMITH          MARY      112847612B14000000013200
SMITH          RICHARD   119265415A01000000009500
STEVENS        ALFRED    071382660A07000000011000


Exemple : Invoquer PUTDDREC et CLSDDREC dans les commandes -SET du gestionnaire de dialogue

L'exemple suivant définit un nouveau fichier dont le nom logique est PUTDD1. La première commande -SET crée un enregistrement à ajouter à ce fichier. La seconde commande-SET invoque PUTDDREC pour ajouter l'enregistrement. La dernière commande-SET invoque CLSDDREC pour fermer le fichier. Les codes de retour sont affichés pour assurer que les opérations ont réussi :

FILEDEF PUTDD1 DISK putdd1.dat -SET &EMP1 = 'SMITH'|'MARY'|'A07'|'27000';
-TYPE DATA = &EMP1
-SET &OUT1 = PUTDDREC('PUTDD1',6, &EMP1, 17, 'I1');
-TYPE PUT RESULT = &OUT1
-SET &OUT1 = CLSDDREC('I1');
-TYPE CLOSE RESULT = &OUT1

La sortie est :

DATA = SMITHMARYA0727000
PUT RESULT = 0
CLOSE RESULT = 0

Après l'exécution de cette procédure, le fichier séquentiel contient l'enregistrement suivant :

SMITHMARYA0727000

Information Builders