Bonjour,
dans la clause ENVIRONMENT DIVISION FILE CONTROL
j'aimerais faire SELECT nom-fichier ASSIGN TO nom-externe.
Je voulais savoir s'il était possible que nom-externe soit une variable ?Comment fait on ?
merci
Bonjour,
dans la clause ENVIRONMENT DIVISION FILE CONTROL
j'aimerais faire SELECT nom-fichier ASSIGN TO nom-externe.
Je voulais savoir s'il était possible que nom-externe soit une variable ?Comment fait on ?
merci
Bonjour,
A ma connaissance ce n'est pas possible. D'ailleurs quel en serait l'intérêt.
Pour faire des traitements identiques sur des fichiers de même structure il suffit de dupliquer la chaîne non ? Ou alors je n'ai pas totalement compris le besoin initial
En fait voilà la problematique car je n'est pas accès à autre chose que du COBOL:
Les serveurs de messagerie sont gérés par une équipe de l’administration informatique. Le
serveur d’envoi génère des informations qui sont récupérées par des fichiers de log chaque
jour. L’équipe s’intéresse à un type de fichier pour pouvoir faire une assistance plus aisée
pour les utilisateurs.
Tous les jours à minuit un nouveau fichier de log est crée. Il est nommé
LogMail_JJ_MM_AA.log
Ce fichier reprend l’activité des envois de mails. Chaque ligne contient date et l’heure d’envoi
du mail l’adresse de l’expéditeur, l’adresse du destinataire et si l’envoi est OK ou KO.
Ce fichier sera exploité pour faire les recherches.
1) Décrivez la création du fichier journalier qui a lieu à minuit.
a) Définir en quelques mots la méthodologie permettant la création des fichiers
b) Donner l'algorithme associé.
c) traduire l’algorithme dans le langage de votre choix
En fait dans ta problématique de nommage de fichier ne confonds-tu pas le DDNAME et le nommage physique du fichier (le DSN) ?
Non en fait je veux faire un traitement sur le fichier LogMail_JJ_MM_AA.log.
Donc le nommage physique sera LogMail_JJ_MM_AA.log et variera tous les jours : SELECT fic ASSIGN TO LogMail_04_12_14.Log , SELECT fic ASSIGN TO LogMail_05_12_14.Log
mais mon problème est donc d'avoir un pg COBOL identique qui va traiter des fichiers physiques dont le nom varie : c'est pourquoi je voulait mettre le nom_externe en variable.
Comment faire mais qu'avec le COBOL?
C'est bien ce que je dis, tu confonds nom physique et logique. Tu peux très bien passer ta chaîne tous les jours (omme c'est le cas partout dans les chaînes BATCH) avec un DSN qui varie. Il n'y a aucune raison de modifier un programme COBOL pour un changement de DSN en entrée du programme, c'est une problématique JCL.
Tu n'as peut-être aucune formation JCL pour te poser ce genre de question ?
Ben un programme COBOL pour tourner a besoin d'un "exécuteur" (JCL) où les fichiers sont déclarés. Et c'est ici que ton fichier peut par exemple être horodaté. Dans le programme en lui-même il n'y a pas cette notion. Il tourne avec une strcuture type de fichier et effectue ses traitements.
Darkzinus, je suppose que jTyvelines travaille en cobol sur une autre plateforme que le mainframe.
Si tu veux variabiliser le nom de ton fichier, tu fais :
SELECT nom-fichier ASSIGN TO <une variable niveau 01 dans ta working>
et dans ta variable Working, tu MOVE le nom de ton fichier.
Dans un programme Cobol, le nom externe correspondant au DDNAME du job ne peut pas être variabilisé.
Par contre il est possible d'utiliser l'instruction SET dans le JCL pour variabiliser les DSN (si on ne veut pas multiplier les jobs)
ou utiliser des variables du scheduler (OPC ou CA7 par exemple) pour valoriser des noms construits sur l'horodatage
Si seuls les champs date / heure des noms de fichiers varient, c'est assez simple à mettre en oeuvre dans la plupart des robots d'exploitation
Bien sûr que c'est possible (encore faut-il savoir dans quel système on est; à ce sujet, ce serait bien de le préciser dans la question ! Oui ?)
Il suffit de mettre une variable dans une section (WS ou linkage,...) et d'y stocker le nom (sur le support adéquat) du fichier; ne pas oublier d'y inclure le chemin complet si le fichier ne se trouve pas dans le répertoire de travail.
Bonne chance .
on est dans le forum Z/OS, section cobol
Donc non ce n'est pas possible
Voici la solution definitive :
Dynamic Filename Assignment
With dynamic filename assignment, the filename is specified in the SELECT clause as a COBOL data item:
select filename
assign to dynamic data-item
where the parameters are:
filename The filename of the file that is to be assigned.
data-item The name of a COBOL data item. If the data item is not explicitly declared in your program, the Compiler creates one for you, with a picture of PIC X(255). Before the OPEN statement for the file is executed, the program must give a value to the data item.
Example 1
In the following example, the file input.dat is created in the current directory:
...
select fd-in-name
assign to dynamic ws-in-file.
...
working-storage section.
01 ws-in-file pic x(30).
...
move "input.dat" to ws-in-file.
...
open output fd-in-name.
Note: If you use the ASSIGN"DYNAMIC" Compiler directive, you can omit the word DYNAMIC from the ASSIGN clause.
Ca m'en bouche un coin (coin), pan sur le bec comme ils disent au canard enchainé !
Je n'ai encore jamais vu ce code depuis que je traine mes guêtres dans le monde du mainframe (quasiment le paléozoïque)
Voici un lien sur une page du support IBM sur ce sujet : http://="http://http://www-01.ibm.co...id=swg21046577
.. et pour cause, parce qu'en z/OS ce n'est tout simplement pas possible ...
... je pense que la question est posée dans un monde micro ... mais bon à vérifier ...assignment-name-1
Identifies the external data file. It can be specified as a name or as an
alphanumeric literal.
assignment-name-1 is not the name of a data item, and assignment-name-1
cannot be contained in a data item. It is just a character string. It cannot
contain an underscore character.
Any assignment-name after the first is syntax checked, but has no effect on
the execution of the program.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager