Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
902 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL Server / Cobol GCOS] Insert Varchar sans espace

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL Server / Cobol GCOS] Insert Varchar sans espace

n°2285588
Kilyn
Milé sek milé
Posté le 26-07-2016 à 08:04:54  profilanswer
 

:hello:
 
J'ai un champ en VARCHAR(6) sous SQL Server. Via une requête Insert en Cobol, je peux rentrer une valeur faisant moins de 6 caractères. Actuellement les valeurs sont complétées avec les espaces manquant.
Mon problème c'est que je voudrais alimenter ce champ sans les espaces à la fin. Avec un exemple c'est mieux :
- Actuellement : "PROF  "
- But : "PROF"
 
Comment faire ? J'ai essayé les niveaux 49 mais le compilateur SQL (CMAGEN) ne veut pas l'utilisation d'une zone groupe. Vous avez un exemple quelque part ? Changer le VARCHAR en CHAR n'est pas possible.
 
Merci. :jap:


---------------
Ne laisse pas le passe te dire qui tu es. Laisse le te dire qui tu deviendras.
mood
Publicité
Posté le 26-07-2016 à 08:04:54  profilanswer
 

n°2285593
Kilyn
Milé sek milé
Posté le 26-07-2016 à 10:01:22  profilanswer
 

Il n'y a plus de coboliste ici ? :/


---------------
Ne laisse pas le passe te dire qui tu es. Laisse le te dire qui tu deviendras.
n°2285610
BrisChri
Since 1956
Posté le 26-07-2016 à 15:09:35  profilanswer
 

une zone intermédiaire avec "justified right" contiendra "__PROF", regardes, je ne l'ai jamais fait, si le résultat de ton varchar est conforme à l'envoi, 2b, 4char.
 
j'ai repris le boulot à temps partiel, je travaille le matin, je ne suis libre que l'après-midi :)


---------------
Si une frite n'a pas de mayo, alors elle ne pourra pas aller à la piscine
n°2285611
BrisChri
Since 1956
Posté le 26-07-2016 à 15:25:50  profilanswer
 

si on a :

zone-FROM   pic x(6).
zone-VIA    pic x(6) just right.
...
zone-DESTINATION (varchar pic x6 ?)


 
l'idée précédente ne marchera pas, FROM contient des blancs, ils ne sont pas supprimés en arrivant dans VIA malgré la clause just right.
 
compter les blancs en commançant par l'arrière (function reverse) et n'envoyer que les premiers caractères dans VIA
                     

move ZERO to n                                                   // sans initialisation, le résultat est additionné au compteur
INSPECT FUNCTION REVERSE (FROM) TALLYING n FOR LEADING SPACES    // n contient le nombre de blancs
move FROM(1,6-n) to VIA                                          // 6-n = nombre de caractères à copier
move VIA to DESTINATION                                          // à vérifier


Message édité par BrisChri le 26-07-2016 à 15:32:33

---------------
Si une frite n'a pas de mayo, alors elle ne pourra pas aller à la piscine
n°2285620
Kilyn
Milé sek milé
Posté le 26-07-2016 à 17:13:54  profilanswer
 

Merci BrisChri mais ça ne fonctionne pas. :/


---------------
Ne laisse pas le passe te dire qui tu es. Laisse le te dire qui tu deviendras.
n°2285623
BrisChri
Since 1956
Posté le 26-07-2016 à 17:43:17  profilanswer
 

tu as un résultat correct dans "zone-VIA" ?


---------------
Si une frite n'a pas de mayo, alors elle ne pourra pas aller à la piscine
n°2285640
BrisChri
Since 1956
Posté le 27-07-2016 à 09:05:28  profilanswer
 

Pour simplifier la discussion, donne ta description 01/49/49, on utilisera les mêmes noms.
Tant  qu'à faire, le nom de zone-FROM aussi.

 

Je suis en congé aujourd'hui, je sors vers midi, j'espère bien que ton problème sera résolu avant.

 

Il y a une faute de frappe dans mon code [:ange]

move ZERO to n                                                   // sans initialisation, le résultat est additionné au compteur
INSPECT FUNCTION REVERSE (FROM) TALLYING n FOR LEADING SPACES    // n contient le nombre de blancs
move FROM(1:6-n) to VIA                                          // 6-n = nombre de caractères à copier
move VIA to DESTINATION                                          // à vérifier

 


move FROM(1:6-n) to VIA                                          // 6-n = nombre de caractères à copier

: et pas une virgule


Message édité par BrisChri le 27-07-2016 à 09:25:03

---------------
Si une frite n'a pas de mayo, alors elle ne pourra pas aller à la piscine
n°2285642
Kilyn
Milé sek milé
Posté le 27-07-2016 à 09:53:07  profilanswer
 

Merci pour ton aide. Je dois gérer un plantage en Prod donc ça sera pour plus tard.
Le problème c'est que je ne peux pas faire de niveau 01 / 49 / 49.
Par exemple j'ai :

Code :
  1. 01 TYPE-NUM.
  2.   49 TYPE-NUM-LEN PIC S9(4) COMP.
  3.   49 TYPE-NUM-VAL PIC X(6).


Le compilateur CMAGEN me dit :

Citation :

TYPE-NUM must be an elementary item not a group one.


 
Dans l'orde Insert je sous bien mettre TYPE-NUM et non TYPE-NUM-VAL ?
 
Pour la virgule, le compilateur Cobol me l'a signalé. ;)


Message édité par Kilyn le 27-07-2016 à 09:53:59

---------------
Ne laisse pas le passe te dire qui tu es. Laisse le te dire qui tu deviendras.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL Server / Cobol GCOS] Insert Varchar sans espace

 

Sujets relatifs
[SQL] Question sur une requête[SQL] Filtrer les chiffres
[SQL Server] clé étrangère et Check constraint - NULL[Excel] Création d'une requête SQL ?
[SQL] Aide exos (simple)Problème requête SQL: command not properly ended
Delphi 7 et Sql server 2008insert into avec condition
Plus de sujets relatifs à : [SQL Server / Cobol GCOS] Insert Varchar sans espace



Copyright © 1997-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR