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.
PUTDDREC(ddname, dd_len, record_string, record_len, output)
où :
Alphanumérique
est le nom logique affecté au fichier séquentiel dans la commande FILEDEF.
Numérique
est le nombre de caractères du nom logique.
Alphanumérique
est la chaîne de caractères à ajouter comme nouvel enregistrement du fichier séquentiel.
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.
Entier
est le code renvoyé, qui peut avoir l'une des valeurs suivant :
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
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 |