Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 12 sur 12
  1. #1
    Invité régulier
    Inscrit en
    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.

  2. #2
    Expert Confirmé
    Homme Profil pro Hédhili Jaïdane
    Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    juin 2007
    Messages
    1 867
    Détails du profil
    Informations personnelles :
    Nom : Homme Hédhili Jaïdane
    Localisation : Tunisie

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

    Informations forums :
    Inscription : juin 2007
    Messages : 1 867
    Points : 3 465
    Points
    3 465

    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 :
    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
    Invité régulier
    Inscrit en
    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,

  4. #4
    Expert Confirmé
    Homme Profil pro Hédhili Jaïdane
    Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    juin 2007
    Messages
    1 867
    Détails du profil
    Informations personnelles :
    Nom : Homme Hédhili Jaïdane
    Localisation : Tunisie

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

    Informations forums :
    Inscription : juin 2007
    Messages : 1 867
    Points : 3 465
    Points
    3 465

    Par défaut

    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

  5. #5
    Candidat au titre de Membre du Club
    Inscrit en
    novembre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : novembre 2007
    Messages : 12
    Points : 10
    Points
    10

    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
    Candidat au titre de Membre du Club
    Inscrit en
    octobre 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 15
    Points : 11
    Points
    11

    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 du Club
    Homme Profil pro Jean
    Développeur Grands Systèmes IBM
    Inscrit en
    août 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : août 2008
    Messages : 41
    Points : 48
    Points
    48

    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
    Candidat au titre de Membre du Club
    Inscrit en
    octobre 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 15
    Points : 11
    Points
    11

    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 François Durand
    Spécialiste Delivery Mainframe IBM
    Inscrit en
    octobre 2005
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Nom : Homme François Durand
    Âge : 55
    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 198
    Points : 2 151
    Points
    2 151

    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 Confirmé Sénior
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    3 040
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 3 040
    Points : 8 575
    Points
    8 575

    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
    Candidat au titre de Membre du Club
    Inscrit en
    octobre 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : octobre 2009
    Messages : 15
    Points : 11
    Points
    11

    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 habitué
    Homme Profil pro Julien Guiffroy
    Ingénieur d'étude Mainframe
    Inscrit en
    septembre 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Nom : Homme Julien Guiffroy
    Âge : 28
    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 : 116
    Points
    116

    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,

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •