IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AS/400 Discussion :

quelques questions arithmétiques


Sujet :

AS/400

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Points : 61
    Points
    61
    Par défaut quelques questions arithmétiques
    Bonjour,

    comment calcule-t-on une puissance en RPGLE ? Je ne trouve pas l'opérateur requis. 15 ans de developpement en gestion... aie la honte

    Dans un prog RPGLE, est-il possible de savoir le nombre de décimales d'une variable issue d'un fichier physique ? afin de l'initialiser en conséquence (.1 ou .01 ou .001 etc )

    Et enfin, pourquoi l'instruction "IF mavariable - %int(mavariable) >0"
    plante a l'execution dans le seul cas ou mavariable contient 100...00.00 (1er digit a gauche renseigné) ?

    erreur : variable de destination trop petite pour contenir le resultat (désolé j'ai pas le CPF en tête)
    mavariable est en 22S 2 mais une autre def réagit identiquement.
    C'est facile à contourner mais j'aimerais comprendre pourquoi.

    Merci d'avance,

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 123
    Points : 146
    Points
    146
    Par défaut
    Bjr,


    Puissance : c'est l'operateur ** exemple 3**2 = 9
    pour la 2eme question, %DECPOS doit être ce que tu cherches

    pour la 3ème : les entiers sont créée sur la base d'un nombre d'octets :1, 2, 4 ou 8.
    avec un entier sur 8 octets (le maximum possible) du n'as droit qu'à 20 chiffres, mais cela ne veut pas dire que la valeur maximum possible soit une suite de vingt chiffres 9 ! tu es arrivé à provoquer un overflow (faudrait que tu retrouves le messages pour vérification) Avec ce que tu as donné en entrée de %Int il a du faire une varible de travail au maximum de 8 octets.
    Pour simplifier, prenons le cas d'un entier sur un octet, que l'on déclare en indiquant 3/0, donc 3 chiffres au maximum. Mais comme nous n'avons qu'un octet pour stocker la valeur, le maximum n'est pas 999, mais 255 en entier non signé et +127 en entier signé !
    Tu n'as plus qu'a faire le calcul des puissances de 2 pour 8 octets facile maintenant que tu sais que l'opérateur est **

    Edit: finalement je suis trop bon, voici les infos de la doc :

    Pour les entiers non signés (U) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Field length Range of Allowed Values
     3-digit unsigned 0 to 255
     5-digit unsigned 0 to 65535 
    10-digit unsigned 0 to 4294967295 
    20-digit unsigned 0 to 18446744073709551615
    Pour les entiers signés (I) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Field length Range of Allowed Values
     3-digit integer -128 to 127
     5-digit integer -32768 to 32767
    10-digit integer -2147483648 to 2147483647 
    20-digit integer -9223372036854775808 to 9223372036854775807

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Exponentiation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /free
        Resultat = 10 ** 2;    (10 puissance 2)
    Nombre de positions décimales :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /free
        D MaVar          s            9p 5
        Resultat = %DECPOS( MaVar );   (Resultat = 5)
    "IF mavariable - %int(mavariable) >0" plante
    Parce que, lorsque tu emploies 10 000 000 000 000 000 000,00 (Un milliard de milliards (10 ** 19), cela fait un chiffre astronomique qui dépasse la capacité des variables utilisées pour le calcul.

    Tu travailles pour Ariane-Espace ?

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Points : 61
    Points
    61
    Par défaut
    Merci bcp Mercure

    Tout est clair.
    Et ca marche sur ma V5R2.
    ** j'aurais cherché longtemps

    Non pas pour Ariane je developpe une classification décimale universelle (CDU) et je prévois une grande profondeur de classement (20) qui sera peut-être à revoir.. à la hausse

    Merci,
    Hermelin

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Il faut surtout remercier jump400 qui a apporté de nombreuses et précieuses précisions.

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Mercure Voir le message
    Il faut surtout remercier jump400 qui a apporté de nombreuses et précieuses précisions.
    oui pardon, j'avais cru voir 2 messages de Mercure. Merci Jump400

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

Discussions similaires

  1. Quelques question sur Win 32 Appli
    Par lvdnono dans le forum Windows
    Réponses: 5
    Dernier message: 15/06/2004, 12h37
  2. [Débutant]Quelques questions de principe sur l'API win32
    Par silver_dragoon dans le forum Windows
    Réponses: 4
    Dernier message: 19/03/2004, 18h38
  3. [install]Install sous windows... quelques questions
    Par omega dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 26/02/2004, 09h50
  4. [MFC] Quelques questions de débutant...
    Par Sephi dans le forum MFC
    Réponses: 4
    Dernier message: 20/02/2004, 17h25
  5. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo