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

JCL - SORT Discussion :

Conversion ABSTIME en JCL


Sujet :

JCL - SORT

  1. #1
    Membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 55
    Points : 60
    Points
    60
    Par défaut Conversion ABSTIME en JCL
    Bonjour,
    En entrée de mon traitement j'ai un VSAM, avec pour chaque enregistrement un temps généré par l'ordre ABSTIME de CICS.
    Je dois faire un load de ce fichier dans une table DB2 et je souhaiterai donc convertir avec un JCL ce temps en milliseconde en un timestamp compatible DB2.
    Voyez vous comment procéder?
    Merci d'avance!

  2. #2
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    Bonjour

    A priori, c'est faisable avec le tri avec les formats DC1 & TC1 + EDIT.
    Pour la date ceci devrait fonctionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OUTFIL OUREC=(1,8,DC1,EDIT=(TTTT-TT-TT))
    ==> La zone du fichier doit être au format binaire unsigned.

  3. #3
    Membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    Merci bernard59139 pour cette piste, mais visiblement je dois mal m'y prendre...
    Données en entrée sur 8 en hexa (nombre de milliseconde depuis le 01/01/1900 à 00h00:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          rà
    03692397
    0660459C
    Sysin du sort:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SORT FIELDS=COPY                                                   
    OUTREC BUILD=(1,8,DC1,EDIT=(TTTT/TT/TT),1,8,TC4,EDIT=(TT:TT:TT:TT))
    Résultat:
    Pour l'heure c'est peut être ok mais la date ce n'est pas la bonne.
    Peut être un problème de format de donnée en entrée? tu dis qu'il faut que se soit en binaire non signé, je vois pas comment faire pour le convertir et qu'il tienne sur 8 caractères (OUTREC FIELDS=(1,8,TRAN=BIT))...

  4. #4
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    Bonjour

    Désolé, mais je n'ai pas vérifié les info (trop sur de moi).

    Pour ce que j'ai vu dans différents forums; il faut passer par un programme.


    SI j'ai un peu de temps, j'ai regarderai en rexx.

    encore désolé.

    en rexx, ca doit être possible. je regarde dès que j'ai un peu de temps

  5. #5
    Membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    Pas de soucis Bernard, ne t’embête pas trop non plus.
    Merci pour le lien du COBOL, de mon coté je me dirige vers un chargement dans DB2 des données brutes, puis passage d'une requête de transformation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DATE((003666961074728/86400000)+DAYS('01.01.1900'))
    FROM SYSIBM.SYSDUMMY1 ;
    Pour l'instant je n'ai que la date mais je ne désespère pas pour l'heure !

  6. #6
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    en rexx:
    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
    19
    /* 003668497999872                                             
       le 1 avril 2016 à 11h13m19 (09:13:19 GMT) et 872 millisec   
    */                                                             
    NUMERIC DIGITS 16                                              
    abstime = 003668497999872                                      
    nbjours = abstime%86400000                                     
    reste1  = abstime//86400000                                    
                                                                   
    nbj1900 = date('B','19000101','S')                             
    madate  = date('S',nbjours+nbj1900,'B')                        
                                                                   
    nbsecs  = reste1%1000                                          
                                                                   
    ms    = reste1//1000                                           
    hh    = nbsecs%3600                                            
    mm    = (nbsecs-(hh*3600))%60                                  
    ss    = nbsecs-((hh*3600)+(mm*60))                             
                                                                   
    say hh mm ss ms
    domage que la fonction TIME du rexx ne soit pas aussi puissante que la fonction date

  7. #7
    Membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 55
    Points : 60
    Points
    60
    Par défaut
    Merci bernard, pas sur qu'on me laisse mettre un REXX en prod
    En fait il faut que je fasse exactement les même calculs avec du SQL

Discussions similaires

  1. [JCL] Conversion de étendu => hexa
    Par eliepoinT dans le forum JCL - SORT
    Réponses: 9
    Dernier message: 11/12/2015, 17h33
  2. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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