cs_brvno
Messages postés2Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention 5 avril 2006
-
31 mars 2006 à 14:35
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
28 mars 2011 à 18:56
Bonjour,
Nous essayons de lire un fichier provenant d'un vax vms.
Ce fichier comporte une valeur numérique au format double, et nous n'arrivons absolument pas à lire ce format.
D'abord comment transférer par FTP les fichiers d'un Vax vers un serveur Microsoft, en binary en ascii etc ... ?
Quelqu'un a t il déjà eu l'occasion de récupérer un fichier d'un Vax, avec en plus du numérique double, et comment a til procédé ?
exemple d'enregistrements provevant du Vax :
0129032006pMpS ==> partie numérique en Ascii pMpS ==> en Héxa 704D705300000000 ==> en Décimale 63
0129032006 M 7 ==> partie numérique en Ascii M 7 ==> ==> en Décimale 84
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 31 mars 2006 à 16:31
Salut
Ah, un adepte des antiquités : Vax : Quelles belles machines (je développe sous VMS pour configurer des systèmes Envox)
Pour ce qui est du FTP :
VMS autorise la gestion en temps que serveur FTP sans problème (c'est un serveur avant tout)
Il suffit de se connecter avec un client FTP sur le port 21, classique.
Il faut absolument faire des transferts sous forme ASCII s'il s'agit de fichier texte.
Pour VB6, voir cette source de client FTP que j'ai créée pour attaquer un Vax : clique ici
Je précaunise de créer un compte dédié à ces transactions de fichiers :
- Créer un répertoire où vous stockerez tous les fichiers à récupérer :
Create /Dir DKA0:[000000.MonRepertoire]
(DKA0 étant le nom du disque dur)
Supprimer la protection des fichiers afin de permettre au FTP client de supprimer les fichiers après lecture :
Set File DKA0:[000000]MonRepertoire.Dir /prot=w:RWE
- Créer un compte d'accès spécifique aux clients FTP qui attériront sur ce répertoire :
Se loguer sous le compte System
Changer de répertoire : Set Def SYS$COMMON:[SYS$EXE]
Lancer le gestionnaire de comptes : Run Authorise
Sous le prompt UAF> recopier un compte de type DCL existant : Copy CompteActuel NouveauCompte
Sortir : Exit
- Modifier le script de login lié au compte :
Dans le fichier LOGIN.COM :
$ user f$edit(f$getjpi("","username"), "TRIM,COMPRESS")<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" />
$ If user .eqs. "NouveauCompte"
$ then
set default DKA0:[000000.MonRepertoire]
$ Exit
$ EndIf
Pour la transformation des données :
Il suffira de relire, ligne après ligne le fichier.
A part la date que l'on repère facilement, je ne comprends pas trop comment vous faites pour déduire que "pMpS" donne 63 en décimal
Transformer "pMpS" en hexa :
Dim Temp As String, Result As String, r As Integer
Temp = "pMpS"
Result = ""
For r = 1 To Len(Temp)
Result = Result & Hex(Asc(Mid$(Temp, r, 1)))
Next r
MsgBox "Valeur Hexa = " & Result ' --> 704D7053 hexa
MsgBox "Valeur décimale = " & CStr(Val("&h" & Result)) ' --> 1884123219 décimal
Pour la 2ème valeur " M 7", si on considère les espaces comme des espaces, cela donnerait :
204D2037 Hexa 541925431 décimal
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accro
cs_brvno
Messages postés2Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention 5 avril 2006 5 avril 2006 à 13:26
Bonjour, merci de votre réponse,
Concernant la transformation des données, la formulation de mon problème n'est semble t il pas bonne.
voilà pourquoi je la reformule,
Dans un premier temps, des fichiers sont créés sur le VAX via un développement BASIC.
Ci dessous le contenu de ces fichiers récupérés sur un environnement Microsoft :
0129032006 M 7 200600325 tJ $ ==> valeurs numériques 'double' 42 et 1
0129032006 M 7 200600529 ôJ $ ==> valeurs numériques 'double' 42 et 2
01290320064N> 200541063 7K ==> valeurs numériques 'double' 189 et 3
En fait dans le traitement BASIC sur le VAX, la structure de enregistrements BASIC est la suivantes :
10 premiers caractères = chaine de caractère,
8 suivants = une zone numérique de format double en Basic,
11 suivants = une chaine de caractère,
8 derniers caractères = une zone numérique de type double en Basic.
Le problème est l'impossibilité de lire cet enregistrement en Visual Basic, je ne trouve pas de solution pour relire ce format 'Double'.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 5 avril 2006 à 18:45
Salut Bruno
Donc, si je prends un exemple, la ligne suivante
0129032006 M 7 200600325 tJ $
se décompose en (j'ai ajouté les > et <) :
>0129032006<
> M 7 < -----> Ceci devrait représenter 42
>200600325 <
>tJ $ < -----> Ceci devrait représenter 1
Je crains que lors de l'import du fichier sur le PC, il ait converti des caractères de contrôle en ascii, ce qui donne des ou des inexploitables : Il faut récupérer les données pures et non leur représentation ascii.
Je vous passe mon email dans un message privé --> Merci de m'envoyer le fichier pur (transmis en mode Binary, et le même transmis en mode ASCII pour test): je regarderai à quoi il ressemble.
Honnètement, je pense pas que ce soit compliqué à transformer.
A priori, les Double sous VMS seraient sur 8 octets, donc la même définition qu'en Windows 32 bits
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accro
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 28 mars 2011 à 18:56
Salut
Poser une question à la suite d'une autre question vieille de plusieurs années n'est pas top pour trouver de l'aide.
Repose ta question en postant une nouvelle question dans le forum.
Profites-en pour détailler ce que tu as déjà essayé et testé, car dire que ça ne marche pas ne suffit pas.
Perso, je regarderai ce problème d'ici quelques jours, si j'ai le temps (en vacances).
Sache qu'il importe peu que le serveur soit un Vax ou un PC, du moment qu'il répond au standard du langage FTP.
Lis bien les docs.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)