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

Cobol Discussion :

Modifier le format de date (ssaa-mm-jj) en (jj/mm/aa)


Sujet :

Cobol

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Points : 17
    Points
    17
    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.

  2. #2
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Points : 17
    Points
    17
    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,

  4. #4
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Au cas où ça t'aurait échappé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    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

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    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.

  7. #7
    Membre habitué
    Homme Profil pro
    Retraité ex-Développeur Grands Systèmes IBM
    Inscrit en
    Août 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 74
    Points : 133
    Points
    133
    Par défaut
    Bonsoir,

    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

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    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.

  9. #9
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    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é ...

  10. #10
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 060
    Points
    32 060
    Par défaut
    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.

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    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 !

  12. #12
    Membre régulier
    Homme Profil pro
    Ingénieur d'étude Mainframe
    Inscrit en
    Septembre 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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 : 124
    Points
    124
    Par défaut
    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,

Discussions similaires

  1. Modifier des formats de dates.
    Par lilkop dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/09/2010, 18h17
  2. Modifier un format de date
    Par toast.lou dans le forum Développement
    Réponses: 3
    Dernier message: 23/07/2009, 11h50
  3. [AC-2002] modifier le format de date dans une requête
    Par tom@tom dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/06/2009, 09h36
  4. modifier le format date
    Par vince9327 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/12/2005, 13h34
  5. [Question] modifier le format date
    Par budylove dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 05/10/2005, 10h31

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