Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 08/06/2012, 16h14   #1
magnito
Invité régulier
 
Inscription : avril 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 18
Points : 6
Points : 6
Par défaut Modifier le format de date (ssaa-mm-jj) en (jj/mm/aa)

Bonjour,

Je souhaite utiliser la fonction INSPECT pour changer le format de date (ssaa-mm-jj) en (jj/mm/aa).

Exemple : 2011-04-14 ==> 14/04/11

Sachant que la date ssaa-mm-jj est stocké dans une seule variable ZYE6-TEXTE1

Pourriez-vous m'aider SVP?

Merci d'avance.
magnito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2012, 16h43   #2
Hédhili Jaïdane
Expert Confirmé
 
Homme
Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
Inscription : juin 2007
Messages : 1 789
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 789
Points : 2 723
Points : 2 723
Bonjour.

Si ta variable ZYE6-TEXTE1 est de type alphanum, tu peux faire par exemple si elle n'est pas déjà décomposée :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
01   ZYE6-TEXTE1    PIC X(10).
01   ZYE6-TEXTE1W REDEFINES ZYE6-TEXTE1.
      03 SS              PIC XX.
      03 AA              PIC XX.
      03 FILLER         PIC X.
      03 MM             PIC XX.
      03 FILLER         PIC X.
      03 JJ               PIC XX.
 01   ZYE6-TEXTE2   PIC X(10).
01   ZYE6-TEXTE2W REDEFINES ZYE6-TEXTE2.
      03 JJ               PIC XX.
      03 FILLER         PIC X     VALUE"/".
      03 MM             PIC XX.
      03 FILLER         PIC X     VALUE"/".
      03 AA              PIC XX.
.../...
      MOVE CORR ZYE6-TEXTE1W TO ZYE6-TEXTE2W.
Si par contre ta variable ZYE6-TEXTE1 est de type DATE, c'est une autre affaire.
Dans ce cas, indique nous le compilateur et l'OS.
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/06/2012, 09h32   #3
magnito
Invité régulier
 
Inscription : avril 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 18
Points : 6
Points : 6
Par défaut Résolu

Bonjour,

En fait, j'ai réussi à trouver une solution , le principe est enfin simple :

Move DATE de ZYE6 dans DATE1
DATE1
DATE1-SS
DATE1-AA
DATE1-MM
DATE1-JJ

Et ensuite DATE1 dans DATE2
DATE2
DATE2-JJ
DATE2-MM
DATE2-AA
DATE2-SS

Move DATE2 dans ZYE6-TEXTE1

Déclaration des variables (Working) :
VARIABLES DE FORMAT DATE
01 WR-DATE1.
05 WR-DATE1-SSAA.
10 WR-DATE1-SS PICTURE 9(02).
10 WR-DATE1-AA PICTURE 9(02).
05 WR-DATE1-FIL1 PICTURE X(01).
05 WR-DATE1-MM PICTURE 9(02).
05 WR-DATE1-FIL2 PICTURE X(01).
05 WR-DATE1-JJ PICTURE 9(02).

01 WR-DATE2.
05 WR-DATE2-JJ PICTURE X(02).
05 WR-DATE2-FIL1 PICTURE X VALUE "/".
05 WR-DATE2-MM PICTURE X(02).
05 WR-DATE2-FIL2 PICTURE X VALUE "/".
05 WR-DATE2-AA PICTURE X(02).

Traitement (Procédure) :

N ALIMENTATION VARIABLE DATE1 20 IT 1-ZYE6-TEXTE1 <>ZERO
M 1-ZYE6-TEXTE1 WR-DATE1
N CHANGEMENT FORMAT DATE 25 IT WR-DATE1-FIL1 = "-"
M WR-DATE1-JJ WR-DATE2-JJ
M WR-DATE1-MM WR-DATE2-MM
M WR-DATE1-AA WR-DATE2-AA
M WR-DATE2 1-ZYE6-TEXTE1
N ALIMENTATION VARIABLE DATE1 30 IT 1-ZYE6-TEXTE2 <>ZERO
M 1-ZYE6-TEXTE2 WR-DATE1
N CHANGEMENT FORMAT DATE 35 IT WR-DATE1-FIL1 "-"
M WR-DATE1-JJ WR-DATE2-JJ
M WR-DATE1-MM WR-DATE2-MM
M WR-DATE1-AA WR-DATE2-AA
M WR-DATE2 1-ZYE6-TEXTE2


Cordialement,
magnito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 12h20   #4
Hédhili Jaïdane
Expert Confirmé
 
Homme
Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
Inscription : juin 2007
Messages : 1 789
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 789
Points : 2 723
Points : 2 723
Au cas où ça t'aurait échappé :
Code :
1
2
3
4
5
6
7
           MOVE CORR ZYE6-TEXTE1W TO ZYE6-TEXTE2W.
      * CORR = CORRESPONDING et cela se traduit par le compilateur par :
           MOVE JJ OF ZYE6-TEXTE1W TO JJ OF ZYE6-TEXTE2W.
           MOVE MM OF ZYE6-TEXTE1W TO MM OF ZYE6-TEXTE2W.  
           MOVE AA OF ZYE6-TEXTE1W TO AA OF ZYE6-TEXTE2W. 
      * et comme ZYE6-TEXTE2W redefinit ZYE6-TEXTE2, le tour est joué
mais bravo d'avoir pu résoudre le problème par toi même
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/07/2012, 16h48   #5
alaindominique
Candidat au titre de Membre du Club
 
Inscription : novembre 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 12
Points : 10
Points : 10
Citation:
Envoyé par magnito Voir le message
Bonjour,

Je souhaite utiliser la fonction INSPECT pour changer le format de date (ssaa-mm-jj) en (jj/mm/aa).

Exemple : 2011-04-14 ==> 14/04/11

Sachant que la date ssaa-mm-jj est stocké dans une seule variable ZYE6-TEXTE1

Pourriez-vous m'aider SVP?

Merci d'avance.
Il y a aussi

Inspect n'est pas adapté mais sert à changer des bribes de chaînes de caractères dans une chaîne.

Pourquoi ne pas faire :

string ZYE6-TEXTE1 (9:2) "/" ZYE6-TEXTE1 (6:2) "/" ZYE6-TEXTE1 (3:2)
delimited by size into myString

où myString pc x(8).

C'est assez court...

Cdlt
alaindominique est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2012, 15h57   #6
feuilledotone
Candidat au titre de Membre du Club
 
Inscription : octobre 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 15
Points : 11
Points : 11
Bonjour,

Je ne peux pas m'empêcher de répondre, avec du retard certes, mais bon...

magnito, la solution que tu as trouvé n'est pas si simple ! tu utilises 2 zones intermédiaires inutiles ; DATE1 et DATE2.

C'est visiblement une génération cobol d'un code écrit en pacbase.

Ce que tu décrits ici en 30 ou 40 lignes dans cobol est écrit à l'origine dans pacbase de la façon suivante (1 ligne) : AD2 XY ZYE6-TEXTE1 ZYE6-TEXTE2 (X et Y correspondent au format de la date de dpéart et d'arrivée)

Par pitié, n'utilise pas un généré cobol à partir de pacbase.
C'est affreux !!!

La solution la plus adaptée est sûrement celle de Hédhili Jaïdane.
feuilledotone est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/09/2012, 21h32   #7
Jean GVE
Membre du Club
 
Homme Jean
Développeur Grands Systèmes IBM
Inscription : août 2008
Messages : 37
Détails du profil
Informations personnelles :
Nom : Homme Jean
Âge : 60
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Développeur Grands Systèmes IBM

Informations forums :
Inscription : août 2008
Messages : 37
Points : 45
Points : 45
Bonsoir,

Citation:
Par pitié, n'utilise pas un généré cobol à partir de pacbase.
C'est affreux !!!
Il ne faut pas être méchant comme ça avec PACBASE

C'est diablement efficace comme générateur !

Pour des raisons de compatibilité (et aussi parce que l'équipe de Portnichet ne s'est pas trop investie), ça génère toujours du COBOL68 avec le point pour terminer les phrases, pas de END-xxx... donc plein de GOTO.

IBM qui possède PACBASE le met à la retraite en 2015, le produit étant remplacé par RPPz qui fonctionne avec RDz (gamme Rational).

Jean-Michel
Jean GVE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2012, 10h11   #8
feuilledotone
Candidat au titre de Membre du Club
 
Inscription : octobre 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 15
Points : 11
Points : 11
Bonjour Jean GVE,

Mon message est mal passée, désolée.
Je ne critique absolument pas PACBASE.
Ce que je vouilais dire, et je penses que tu vas être daccord avec moi, c'est qu'il ne faut pas utiliser le généré cobol. Le problème n'est pas que ce soit un cobol 68, 74, 85... car après tout, du cobol reste du cobol.
Le problème c'est le code généré lui-même.
Transformer le format d'une date ne nécessite pas de passer par 2 autres date.

Bref, ce que je voulais dire, c'est qu'avant de s'inspirer d'un générer cobol à partir de PAC, il vaut mieux aller voir ailleurs. J'ai été formée à PAC en 92, et c'est une des premières choses qu'on nous a appris (va t'inspirer d'un DW ou un DO pour écrire du cobol ).

Et comme toi, je regrette bien que pac soit retiré en 2015.

Voilà, j'espère bien être plus claire maintenant.
feuilledotone est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/09/2012, 20h13   #9
Luc Orient
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 166
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 54
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 166
Points : 1 979
Points : 1 979
Citation:
Envoyé par feuilledotone Voir le message
... Je ne critique absolument pas PACBASE.
Si si tu peux ...

En tout cas moi je le fais ...

J'ai eu une expérience avec cet AGL au tournant des années 80 dans un contexte Bull GCOS8.

C'était d'une lourdeur effarrante. Des écrans de saisie de programmes en TP !

Quand au COBOL généré, ça frisait l'illisibilité ...
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2012, 09h53   #10
el_slapper
Expert Confirmé Sénior
 
Inscription : décembre 2007
Messages : 2 581
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 2 581
Points : 6 317
Points : 6 317
Citation:
Envoyé par Luc Orient Voir le message
Si si tu peux ...

En tout cas moi je le fais ...

J'ai eu une expérience avec cet AGL au tournant des années 80 dans un contexte Bull GCOS8.

C'était d'une lourdeur effarrante. Des écrans de saisie de programmes en TP !

Quand au COBOL généré, ça frisait l'illisibilité ...
Jamais mis les mains dessus, mais du généré, cobol ou pas(j'ai aussi vu du java généré), c'est toujours illisible. Toujours. Il me parait peu réaliste d'espérer une génération automatisée lisible.
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
3)le temps de comprendre toutes les exigences, le projet est terminé
4)le temps de terminer le projet, les exigences ont changé
Et le serment de non-allégiance :
Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.
el_slapper est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2012, 17h16   #11
feuilledotone
Candidat au titre de Membre du Club
 
Inscription : octobre 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 15
Points : 11
Points : 11
Citation:
Envoyé par el_slapper Voir le message
du généré, cobol ... c'est toujours illisible.
C'est clair ! C'est pourquoi je disais à magnito de ne pas le prendre en exemple !

Citation:
Envoyé par Luc Orient Voir le message
C'était d'une lourdeur effarrante. Des écrans de saisie de programmes en TP !
Il y a peut-être mieux, mais, pour avoir pratiquer (sur GCOS et MVS moi aussi ) pendant plusieurs années, le travail du programmeur est bien simplifié. (gestion des synchros de fichiers, des ruptures, des fichiers, des boucles ...)

Mais de toute manière, tout ça c'est bientôt fini. Et il faudra se débrouiller uniquement avec le généré cobol , car faut pas croire que les sociétés vont réécrire leurs applis du jour au lendemain !
feuilledotone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2012, 22h00   #12
Skylyn
Membre habitué
 
Homme Julien Guiffroy
Ingénieur d'étude Mainframe
Inscription : septembre 2012
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Julien Guiffroy
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur d'étude Mainframe
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 61
Points : 113
Points : 113
hum...

Notion de MOVE CORRESPONDING ?

Exemple :

01 DATE1.
05 SS PIC X(2).
05 AA PIC X(2).
05 FILLER PIC X VALUE '-'
05 MM PIC X(2).
05 FILLER PIC X VALUE '-'
05 JJ PIC X(2).

01 DATE2.
05 MM PIC X(2).
05 FILLER PIC X VALUE '/'
05 JJ PIC X(2).
05 FILLER PIC X VALUE '/'
05 AA PIC X(2).

MOVE '2011-01-01' TO DATE1.
MOVE CORRESPONDING DATE1 TO DATE2.

"CORRESPONDING" enverra la valeur des variable du groupe DATE1 vers les variables de DATE2 qui ont le même nom.

Mais pour cela, c'est évident, il faut que les zones groupes aient les sous-variables avec le même nom, quelque soit l'ordre des variables.

Magique COBOL

________________________________
________________________________
Skylyn,
Skylyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h15.


 
 
 
 
Partenaires

Hébergement Web