Précédent   Forum du club des développeurs et IT Pro > Systèmes > Autres systèmes > AS/400
AS/400 Le Forum d'entraide sur IBM AS/400 - iSeries. RPG.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/09/2012, 11h10   #1
Carambar
Invité régulier
 
Inscription : octobre 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 25
Points : 5
Points : 5
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 !
Carambar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2012, 08h24   #2
FORMULARY
Membre chevronné
 
Homme
Inscription : septembre 2008
Messages : 494
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 494
Points : 677
Points : 677
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)
FORMULARY est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2012, 08h31   #3
m4k-Hurrican
Membre confirmé
 
Inscription : octobre 2006
Messages : 224
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 224
Points : 222
Points : 222
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é.
m4k-Hurrican est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2012, 09h33   #4
Carambar
Invité régulier
 
Inscription : octobre 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 25
Points : 5
Points : 5
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 !
Carambar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2012, 10h53   #5
Carambar
Invité régulier
 
Inscription : octobre 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 25
Points : 5
Points : 5
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 !
Carambar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h49.


 
 
 
 
Partenaires

Hébergement Web