Bonjour,
Je dois définir si un fichier est au format Binaire ou ASCII (Sur ZOS).
Est-ce qu'il existe un moyen de le savoir sans utiliser une ruse de sciou ?
Bonjour,
Je dois définir si un fichier est au format Binaire ou ASCII (Sur ZOS).
Est-ce qu'il existe un moyen de le savoir sans utiliser une ruse de sciou ?
Par programme ou à la mano ? ASCII! euh... EBCDIC ?
.
Bonjour
Il n'y a pas de moyen.
A la base, tous les fichiers sont "binaires".
Ascii ou Ebcdic n'est qu'une norme pour interpréter des informations "binaires".
Sans connaitre le programme qui a créé le fichier (et le besoin exact), la tâche sera ardue.
B
Bonjour,
ASCII souS MVS ne veut rien dire. Je pense que tu veux dire texte ou binaire. Texte correspond à un fichier qui, édité sous TSO par exemple, peut se lire facilement. Binaire correspond à un source qui a été transformé en langage machine par une procédure de compilation (load module par exemple). C'est donc parfaitement illisible quand on l'édite sous TSO.
A l'affichage, sous MVS, c'est toujours de l'EBCDIC. Par contre, il est possible d'utiliser un logiciel (basé sur IND$FILE, la procédure de transfert) qui va convertir de l'EBCDIC en ASCII pour pouvoir lire le fichier sur un autre système (windows par exemple). Cet utilitaire est en général compris dans l'émulateur qui sert à accéder au MVS à partir du PC. Ainsi, un fichier texte sous TSO (donc en EBCDIC) sera converti en en mode texte sous windows (donc en ASCII). On peut évidemment faire la même chose avec les fichiers binaires. Ainsi, si on envoie un fichier binaire du MVS vers le PC par exemple en mode binaire, le fichier ne sera pas converti. par contre, si on l'envoie en mode texte, le fichier sera converti, mais c'est idiot, parce que si c'est un load par exemple, il ne fonctionnera pas de toute façon.
En fait, mon problème ne vient pas d'un changement de format.
dsl pour la confusion entre EBCDIC et ASCII, je travaille actuellement sur un echange entre ZOS et AIX et je fais une conversion
Mais mon soucis se situe à un autre endroit.
Je dois pouvoir déterminé sir un fichier est de type BINAIRE ou TEXTE.
Ma question est donc...comment faire...je n'ai à ce jour pas de solution fiable pour le faire.
Dois-tu faire cette opération avant ou après le transfert ? As-tu un grand nombre de types de sources différents à traiter ?
Je suppose que tu as déjà dû y penser, mais ne peux-tu pas déterminer une chaîne de caractère particulière dans tes sources qui indiquerait le type de source ? Chez nous, par exemple, tous les load contiennent un 'tag' particulier.
Sous MVS, ne peux-tu pas déterminer les types de fichier suivant les PDS dans lesquels ils sont ? ou suivant la structure du fichier ?
Les caractères ont un code ASCII ou EBCDIC associé qui est bien précis et répertorié. Tu peux faire un REXX ou un script qui lit chaque fichier en hexa, et repère les caractères qui ne sont pas dans les codes répertoriés. Dans ce cas, ton fichier est binaire.
En fait, le fichier dont je dois determiné le type (BINAIRE OU TEXTE) doit se faire avant l'envoi.
Son nom, format, longueur, et contenu sont complètement inconnus et aussi variable que l'on puisse imaginer.
Je peux avoir, des fichiers simple ou GDG, des PDS.
Des fichiers de données, des fichiers de load et suremment des choses que je ne connais pas.
J'ai pensé à regarder vi aun REXX dans le fichier mais quel chaine de caractère...impossible à définir...j'espérais qu'il existerait un tag quelque part...
Je pense que la réponse est.. NON ...
A part la méthode de lire en hexa caractère par caractère comme je te le disais, je ne vois pas. remarque, les caractères TEXTE ne sont pas si nombreux que cela, il suffit d'en faire un fichier et tu n'es pas obligé de lire tout ton fichier à déterminer. je pense que si tu n'as pas repéré de caractère non texte sur une centaine de caractères lus, tu peux considérer que ton fichier est un fichier texte, non ?
Comment vont être traitées les données que tu transmets à AIX?
Si tu ne sais pas ce que tu envois (Load, fichiers de longueur fixe, variable ou à génération) comment fera la ME sur AIX pour les traiter ?
Si c'est une migration de données z/OS vers AIX il y aura forcément des transformations techniques en fonction de la nature des données transmises afin qu'elles puissent être utilisées, et les transferts seront sensément lotis.
.
+1, Il devrait y avoir nécessairement une couche de traitement contextuel.
En MVS, les catalogues recencent une toute petite partie des informations fichiers (nom, type d'unité, VOLSER, + pour les fichiers concernés les classes SMS (sur un VVDS). Le gros des infos disponibles d'un fichier sur disque est en VTOC. Organisation, allocations et accès (DSORG, LRECL, BLKSIZE, format, et infos statistiques, creation, accés ...).
En gros, les informations que l'on retrouve via un LISTDSI en REXX.
Rien quant au contenu logique, on n'a même pas le nombre d'enregistrements.
Même une analyse syntaxique des enregistrements ne semble pas une bonne idée. On pourrait par exemple détecter une séquence continue de caractères EBCDIC, mais tout fichier peut contenir du binaire ou du décimal packé !
Attention, s'il est facile de faire un REXX pour exploiter un résultat LISDSI, EXECIO ne sait pas lire des PDS ni des fichiers indéfinis. Il faudra passer par Library Management pour ça (LMINIT -> LMOPEN -> LMFIND -> LMGET ...)
Sans parler des VSAM et autres TS DB2.
Mouais c'est bien ce que je pensais...ca sent la bonne grosse usine à gaz.
En prime de l'envoi du fichier vers AIX, un message est envoyé vers MQ contenant différentes données tel que type_fichier (fichier Binaire ou texte), nom du fichier sur zos, nom sur AIX, mode de transfert (Binaire ou normal) etc.
Le traitement sur AIX est une boite noir pour moi.
Et c'est ce traitement qui me demande de lui spécifier est le fichier est en mode texte ou binaire.
Je récupére ensuite un message via MQ et je transfère le fichier sur ZOS depuis AIX en me basant sur les infos du message contenu dans MQ.
Je ne souhaite pas faire de recherche de chaine de char dans le fichier car ca ne me parait pas fiable...et comme j'ai toujours detesté les proba...je préfère ne pas prendre de risque avec elle
Je pense que je vais regler le problème par un..."Techniquement pas possible"
@ Homer : J'ai effectivement des fichiers en U et des PDS, et je te remercie pour les différents bout de REXX que tu m'as déja donné sur ce sujet, car cela m'a bien aidé.
Mais il y a bien un processus quelque part qui le produit ce fichier non ?
Moi je pense que c'est à ce niveau qu'il faut collecter les informations demandées ... Après c'est trop tard ...
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