(sujet non précisé)

RPG (3 et 4, free), CL, SQL, etc...
Répondre
Le Manach
Messages : 14
Enregistré le : jeu. 20 janv. 2011, 11:30:39
Localisation : lorient

(sujet non précisé)

Message par Le Manach »

Bonjour,

j'aimerais savoir si on peut dans un fm saisir un décimal négatif de façon "normal" c'est à dire -1,2.

Saisi de cette manière, le signe moins n'est pas interprété. Je peux mettre le signe que derrière le nombre pour qu'il soit interprété (ou alors gérer le signe avec un autre champ devant le champ décimal).

merci pour vos réponses.

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

EDTCDE

Message par cmasse »

Les EDTCDE J,K,L,M prévoient le signe - à droite, N,O,P,Q à gauche.
Christian Massé (Volubis.fr)

Le Manach
Messages : 14
Enregistré le : jeu. 20 janv. 2011, 11:30:39
Localisation : lorient

(sujet non précisé)

Message par Le Manach »

je suis d'accord sur le rendu visuel avec l'application de l'edit code. Mon souci est au niveau de la saisi : le signe - n'est pas interprété lorsque je le mets à gauche du nombre.

Philippe S
Messages : 11
Enregistré le : lun. 02 févr. 2015, 19:46:00

(sujet non précisé)

Message par Philippe S »

Les EDTCDE J,K,L,M fonctionnent bien si on veut le signe à droite, les EDTCDE N,O,P,Q qui sont sensés définir le signe à gauche de la valeur ne fonctionnent pas sur les écrans mais semblent toutefois fonctionner sur les spécifs O de RPG ( sic ). Il y a comme qui dirait un petit bug ici de la part de Rochester et il est loin d'être nouveau. Il semble qu'il ne sera désormais pas corrigé compte tenu des évolutions peu probables des DDS écran.

L'astuce que j'ai utilisée pour résoudre ce cas, c'est de définir la zone de saisie de la valeur en alphanumérique avec 2 caractères de plus que la zone numérique d'origine pour y placer le signe moins, ou plus le cas échéant et la virgule ou le point.
Ensuite dans le programme, je convertis cette zone alphanumérique en numérique condensé ou étendu par la fonction intégrée %DEC().

Exemple:
Soit ma DDS écran qui comporte la zone de saisie définie en 7 dont 2 décimales. Je la supprime et définis à la place une zone de saisie en alphanumérique de longueur 9, soit 2 caractères de plus que la zone numérique d'origine pour pouvoir y mettre le signe et la virgule.
Ensuite, dans mon programme RPG, je convertis cette zone en numérique avec la fonction intégrée %DEC() et place le résultat dans une zone dont le définition correspond à la zone numérique d'origine (7 dont 2 décimales).

Ma DDS écran

Code : Tout sélectionner

A            VALEUR         9   B 15 45 
Mon programme RPG IV

Code : Tout sélectionner

D NumVal           s              7p 2 inz  
   
    /free                               
   monitor;                         
    NumVal = %dec(VALEUR : 5 : 2); // conversion en numérique
    on-error;                       
      // Ecrire ici le traitement d'erreur;                    
   endmon;     


Remarques
La fonction %DEC() offre beaucoup de souplesse pour la saisie des zones numériques:
  • Le signe est optionnel et peut être '+' ou '-'. Il peut précéder ou suivre la donnée.
    Le point ou la virgule décimale est optionnel.
    Des blancs sont permis n'importe où dans la donnée.
    S'il y a erreur, on peut récupérer l'exception code statut 105
Ainsi, '-1.2' ou '-1,2' est correct.
'- 1. 2' ou '- 1 . 2 ' ou ' + 1 . 2 ' l'est également.

C'est le prix à payer si on tient absolument à avoir le signe à gauche.

il faudra en retour utiliser la fonction %CHAR() pour afficher la donnée numérique sur l'écran :

Code : Tout sélectionner

VALEUR = %CHAR(NumVal);   // signe à gauche dans tous les cas
Modifié en dernier par Philippe S le ven. 13 févr. 2015, 15:17:06, modifié 1 fois.

Le Manach
Messages : 14
Enregistré le : jeu. 20 janv. 2011, 11:30:39
Localisation : lorient

(sujet non précisé)

Message par Le Manach »

Merci pour vos explications.
Pour conclure : le signe - à gauche c'est un vrais sport !

Cdt

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

EDTCDE

Message par cmasse »

je ne comprend pas, j'ai testé le DSPF suivant :

Code : Tout sélectionner

     A          R RECORD1
     A                                  3 13'TEST saisie négatif'
     A            Z1             9  0B  6 10
     A            Z2             9Y 0B  8 10EDTCDE(Q)
     A            Z3             9N 0B 10 10                    
pour les champs Z2 et Z3 je peux bien saisir -45
Christian Massé (Volubis.fr)

Philippe S
Messages : 11
Enregistré le : lun. 02 févr. 2015, 19:46:00

(sujet non précisé)

Message par Philippe S »

Oui, en SAISIE, on peut mettre le signe à gauche mais le programme va recevoir 45 (X'F4F5') et non -45 (X'F4D5'). En revanche, si on met le signe à droite, le programme recevra bien -45.


J'en profite au passage pour te dire que la prévisualisation ne marche pas, je n'obtiens pas ce que j'ai tapé mais des blancs dans la textbox.

ctalhouet
Messages : 42
Enregistré le : mar. 05 juin 2007, 12:48:27

EDIT CODE

Message par ctalhouet »

en 36 on avait déja le probleme et on passait aussi par des zones alpha!

Répondre