Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Cobol
Cobol Forum d'entraide sur la programmation en langage Cobol
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/06/2011, 10h44   #1
Invité de passage
 
Homme
Directeur des systèmes d'information
Inscription : juin 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur des systèmes d'information

Informations forums :
Inscription : juin 2011
Messages : 2
Points : 0
Points : 0
Par défaut Problème compilation Cobol sous Iseries

Nous avons un logiciel qui utilise des noms de zone dans un fichier commençant par £. La compilation échoue. Comment faire ??? renommer les noms de zone ??? si oui comment
Duchemole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 13h40   #2
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Citation:
Envoyé par Duchemole
Nous avons un logiciel qui utilise des noms de zone dans un fichier commençant par £
Les habitudes ont la peau dure, surtout les mauvaises.

Remède

1/ Crée un ALIAS de ces zones dans un fichier logique.

Exemple. Je crée le logique MonLogique :
Code :
1
2
3
4
5
6
7
8
A          R RCD                       PFILE(MonPFAvec£) 
A            £ZONE1                    ALIAS(ZONE1)      
A            ZONE2                                       
A            £ZONE3                    ALIAS(ZONE3)   
A            .
A            .
A            .
A          K £ZONE1
2/ Fais un COPY DD-ALL-FORMATS dans ton programme Cobol :
Code :
1
2
COPY DD-ALL-FORMATS OF MonLogique.
  • Le COPY DD copie le nom ALIAS des colonnes du fichier, alors que le COPY DDS copie le nom des colonnes du fichier sans tenir compte du nom alias.
  • La clé sera utilisée dans le programme sous la forme du nom alias, c'est à dire ZONE1 et non pas £ZONE1 dans l'exemple ci-dessus.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 13h47   #3
Invité de passage
 
Homme
Directeur des systèmes d'information
Inscription : juin 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur des systèmes d'information

Informations forums :
Inscription : juin 2011
Messages : 2
Points : 0
Points : 0
Merci pour votre réponse, c'est ce que j'ai fais mais hélas une multitude de fichiers de la sorte d'où ma question.
Duchemole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 14h01   #4
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Alors je crois malheureusement qu'il ne te reste plus qu'à recréer autant de logiques qu'il y a de fichiers concernés par ton application en utilisant les alias. Sélectionne les logiques concernés seulement et pas tous les fichiers et crée par SQL des index plutôt que des LF car les performances seront meilleures (pagesize). Les chemins d'accés seront partagés avec les logiques existants donc pas de souci d'espace disque.

Il y aurait bien également la solution bâtarde consistant à jouer avec le CCSID de tes sources Cobol de façon à ce que le compilateur accepte le caractère "£". Tu dois avoir affaire à un logiciel US et dans ce cas tu pourrais travailler sous CCSID 37, mais ce n'est certainement pas une méthode à conseiller car même si tu résouds ton pb de compil, tu vas te casser le nez plus tard à coup sûr.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 17h40   #5
Membre éclairé
 
Avatar de delphine35
 
Femme delphine
Analyste BO
Inscription : novembre 2009
Messages : 261
Détails du profil
Informations personnelles :
Nom : Femme delphine
Localisation : Canada

Informations professionnelles :
Activité : Analyste BO

Informations forums :
Inscription : novembre 2009
Messages : 261
Points : 338
Points : 338
tu as essayé le "REPLACING .. BY .."


exemple :
Code :
1
2
3
          COPY  TEST  REPLACING  £TAVAR-1 BY VAR-1
                                                       £TAVAR-2 BY VAR-2
                                                       £TAVAR-3 BY VAR-3
avec TEST.cpy :
Code :
1
2
3
       01 £TAVAR-1.
                     05 £TAVAR-2     pic X.
                     05 £TAVAR-3     pic X.
devriendrait dans la compile :
Code :
1
2
3
 01 VAR-1.
                     05 VAR-2     pic X.
                     05 VAR-3     pic X.
__________________
Delphine35

Rien n'est impossible à celui qui n'a pas à le faire
delphine35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 18h24   #6
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
@delphine35,

Ce que tu proposes ne marchera pas en ILE Cobol mais ça doit je pense marcher sous mainframe.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 18h28   #7
Membre éclairé
 
Avatar de delphine35
 
Femme delphine
Analyste BO
Inscription : novembre 2009
Messages : 261
Détails du profil
Informations personnelles :
Nom : Femme delphine
Localisation : Canada

Informations professionnelles :
Activité : Analyste BO

Informations forums :
Inscription : novembre 2009
Messages : 261
Points : 338
Points : 338
J'ai vu qu'après que s'etait sous Iseries.
Sous mainframe, je sais pas, mais ca fonctionne très bien sous Unix

Bon courage, pour trouver
__________________
Delphine35

Rien n'est impossible à celui qui n'a pas à le faire
delphine35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 20h03   #8
Membre Expert
 
Avatar de Hédhili Jaïdane
 
Homme Hédhili Jaïdane
Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol
Inscription : juin 2007
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Hédhili Jaïdane
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 668
Points : 2 167
Points : 2 167
Envoyer un message via Skype™ à Hédhili Jaïdane
Bonjour.

Moi, j'utiliserais COPY DDSR, elle permet de substituer les caractères spéciaux

Code :
1
2
3
4
5
 A            £RT_CODE       6S 0  
 A            £RT_NOM       20A    
 A            £RT_NOMA      20A    
 A            £RT_ADRF      20A    
 A            £RT_AFRA      20A
Code :
1
2
3
4
5
6
7
COPY DDS-ALL-FORMATS OF SPECAR.
+000004       05  SPECARRD      REDEFINES SPECAR-RECORD.
+000005           06 £RT_CODE              PIC S9(6).   
+000006           06 £RT_NOM               PIC X(20).   
+000007           06 £RT_NOMA              PIC X(20).   
+000008           06 £RT_ADRF              PIC X(20).   
+000009           06 £RT_AFRA              PIC X(20).
Code :
1
2
3
4
5
6
COPY DDSR-ALL-FORMATS OF SPECAR.
+000005           06 NRT-CODE              PIC S9(6).  
+000006           06 NRT-NOM               PIC X(20).  
+000007           06 NRT-NOMA              PIC X(20).  
+000008           06 NRT-ADRF              PIC X(20).  
+000009           06 NRT-AFRA              PIC X(20).
Citation:
The DDSR Option: The DDSR option does everything that the DDS option does. It also copies the internal DDS field names in the specified DDS format, replacing the invalid COBOL characters @, #, $, and _ with the valid COBOL characters A, N, D, and - accordingly. This option also removes any underscores from the ends of the field names.
Tu peux même utiliser un préfixe avec la clause PREFIX BY "XXX".
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 00h21   #9
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Tu as tout à fait raison Hédhili, c'est LA bonne solution en effet
Je ne connaissais pas "DDSR".
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h32.


 
 
 
 
Partenaires

Hébergement Web