Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité régulier
    Inscrit en
    octobre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 28
    Points : 7
    Points
    7

    Par défaut Zone en binaire dans un fichier

    Bonjour,

    je tente ma chance ici, peut-être allez-vous me dépanner !

    J'ai un fichier à produire avec une zone binaire*, de 6 de long (6 x 8 bits) :

    - je dois alimenter certains bits bien précis (les mettre à 1 donc), mais je ne sais pas comment faire en RPG ...

    - je dois envoyer :
    0100 0000 dans le 1er octet
    (ce qui me semble correspondre à 40 hexa, donc un blanc, si c'est cela, tout va bien je peux faire !)

    mais là où ça se corse c'est que je dois envoyer :

    0001 0000 dans le 2ème octet
    1000 0000 dans le 3ème octet

    Si je définis une zone de type B dans mon fichier, comment l'alimenter ?

    Merci beaucoup d'avance !


    * Inutile de me conseiller de mettre un autre type dans la zone, je n'ai pas le choix, j'ai un gros groupe en face de moi, c'est à eux que j'envoie le fichier, ils ne vont pas changer cette zone juste pour moi !

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    septembre 2008
    Messages
    735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : septembre 2008
    Messages : 735
    Points : 1 077
    Points
    1 077

    Par défaut

    Le mieux est de définir une data structure avec 6 zones alpha ou binaires.
    Ensuite, tu utilises un simple eval :
    eval octet2=x'00010000'; (zone alpha) ou
    eval octet2=16; (zone binaire)
    Il y a aussi les instructions testb, biton et bitoff (pour des zones alpha)

  3. #3
    Membre éclairé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    octobre 2006
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : octobre 2006
    Messages : 320
    Points : 395
    Points
    395

    Par défaut

    Bonjour,

    Elle est bizarre ta zone.
    Mais la solution la plus simple à mon avis, est de la découper en 6 zones de 1 caractère avec lesquelles tu pourras jouer comme tu le désires, grâce aux commandes BITOFF et BITON. Purée çà faisait longtemps que je ne les avaient pas utilisées celles là !
    Code :
    1
    2
    C                   BitOff    '01234567'    MaZone
    C                   BitOn     '3'           MaZone
    Après çà ta zone sera codée '00010000'. On a mis tous les bits à '0' par la 1ère commande, puis le bit numéroté 3 à '1' dans a 2ème commande.

    Edit : grillé.

  4. #4
    Invité régulier
    Inscrit en
    octobre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 28
    Points : 7
    Points
    7

    Par défaut

    Bonjour et merci !

    Je sais qu'elle est bizarre, et ce n'est pas "ma" zone, c'est un fichier que je dois produire pour envoyer à un organisme externe, et c'est eux de l'autre côté qui me demandent çà !
    C'est eux qui sont "bizarres", je trouve aussi !

    Je vais donc creuser vos solutions, même si au premier abord, c'est du chinois pour moi ... je vous tiens au courant !

    Merci encore !

  5. #5
    Invité régulier
    Inscrit en
    octobre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 28
    Points : 7
    Points
    7

    Par défaut

    Re-bonjour,


    ça me semble super !

    Je vous remercie infiniment, j'aurai l'air moins bête, ça m'évite de dire que je ne sais pas gérer !

    Merci merci merci !

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •