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

z/OS Discussion :

copier un pds via ordres ISPF


Sujet :

z/OS

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 61
    Points : 54
    Points
    54
    Par défaut copier un pds via ordres ISPF
    bonjour à tous,

    je voudrais copier un membre de PDS dans un autre PDS qui n'existe pas :

    PDS1.TOTO(mbr1) à copier dans PDS1.TITI(mbr1) (PDS1.TITI n'existe pas)

    je ne connais pas à priori les caractéristiques de PDS1.TITI.

    existe-t-il qque chose comme "Alloc pds(pds1.titi) like(pds1.toto)" qui marche pour les PDS ??

    merci d'avance

  2. #2
    Membre averti
    Femme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 179
    Points : 350
    Points
    350
    Par défaut
    quelque chose dans ce genre devrait fonctionner..

    "alloc dd(RICO) da('"RICBKP"') like('"RICLIB"')" BLKSIZE

    "ispexec lminit dataid(idi) dataset('"RICLIB"')"

    "ispexec lminit dataid(ido) dataset('"RICBKP"')"

    "ispexec lmcopy fromid("idi") frommem(*)",
    "todataid("ido") replace"

    "ispexec lmfree dataid("idi")"


    "ispexec lmfree dataid("ido")"

  3. #3
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    On peut faire en gros la même chose via une alloc TSO qu'en JCL à la syntaxe "langage" près. Pour l'allocate TSO, on a le Help à dispo pour s'assurer de cette syntaxe. Avec LIKE, ça donne qque chose comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "ALLOC F(FMYPDS) DA("MYPDS") NEW CAT UNIT(SYSALLDA) LIKE('"PDSREF"')"
    Pour consultation du help, un petit REXX qui simplifie la vie. (Il y a l'équivalent un peu partout sur les sites z/OS). On intercale le REXX dans le HELP : TSO TED HELP ALLOC et avec le résutat en EDIT on gagne du temps.
    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
    20
    21
    22
    23
    24
    /* TED : RECUPERATION D'UN HELP OU DE TOUT AFFICHAGE ECRAN      */ 
    /*         VIA UN EDIT SUR SON FICHIER ISPF ZTEMPF              */ 
    /* ------------------------------------------------------------ */ 
    arg COMMAND                                                             
    if length(COMMAND) = 0 then do                                          
       say "Erreur: TED DOIT RECEVOIR DES PARAMETRES POUR LES TRAITER"    
       say "        Exemple --> TSO TED HELP ALLOC"
       exit 4                                                               
    end                                                                     
    address TSO                                                             
    x = outtrap("trap.","*")          /* interception de l'affichage */     
    command                           /* exécution de la cde TSO passée*/     
    x= outtrap("off")                 /* remise en service de l'affichage */     
    "ISPEXEC CONTROL ERRORS RETURN"                                         
    Address ISPEXEC "VGET (ZTEMPF)"   /* ALLOC sur DDNAME ALEATOIRE  */     
    DDN = "TP"random()                                                      
    "ALLOC DD("DDN") DA('"ZTEMPF"') SHR"                                    
    "EXECIO * DISKW" DDN "(FINIS STEM trap."                                
    Address ISPEXEC "EDIT  DATASET('"ZTEMPF"')" 
    if RC > 8 then do   /* EDIT sur ZTEMPF non récursif ! */                
       ZEDLMSG = "Sortir de l'Edit" ZTEMPF "avant de relancer !"
       "ISPEXEC SETMSG MSG(ISRZ001)"                                        
    end                                                                     
    EXIT RC
    Enfin, pour l'utilisation des services L.M. l'exemple donné par xfanx est parfait. Simple et efficace. J'ajouterais cependant en amont un "ADDRESS ISPEXEC CONTROL ERRORS RETURN" histoire d'avoir la main sur tous les RC (>8) à tester quand même par prudence au moins après le LMCOPY.

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 61
    Points : 54
    Points
    54
    Par défaut
    mon code :

    RICLIB = "mon.ancien.pds"
    RICBKP = "mon.nvo.pds"
    BLKSIZE = "BLKSIZE(27920)"
    "alloc dd(RICO) NEW CAT da('"RICBKP"') like('"RICLIB"')" BLKSIZE
    "ispexec lminit dataid(idi) dataset('"RICLIB"')"
    "ispexec lminit dataid(ido) dataset('"RICBKP"')"
    "ispexec lmcopy fromid("idi") frommem(*)",
    "todataid("ido") replace"
    "ispexec lmfree dataid("idi")"
    "ispexec lmfree dataid("ido")"
    RETURN 0

    et voilà le retour :

    IKJ56893I DATA SET mon.nvo.pds NOT ALLOCATED+
    IGD17295I DATA SET mon.ancien.pds HAS
    PARTITIONED ORGANIZATION AND CANNOT HAVE A
    DATA CLASS WITH A DYNAMIC VOLUME COUNT GREATER


    quelqu'un a une idée ?

  5. #5
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    remplaces BLKSIZE par unit(3390) ou unit(SYSALLDA). SMS devrait pouvoir se charger du reste.
    Sinon, comme le message concerne la DATACLASS, tentes une allocation en 3.2 de ton fichier, notes en S ou I la DATACLASS utilisée avant de deleter le fichier et de réessayer en forçant la DATACLASS : DATACLAS('DATACLAS NAME')
    IGD17295I DATA SET dsname HAS PARTITIONED ORGANIZATION AND CANNOT HAVE A DATA CLASS WITH A DYNAMIC VOLUME COUNT GREATER THAN ONE,
    ALLOCATION FAILED

    | User Response: Ensure that the DATA CLASS selected for this allocation request does not specify a Dynamic Volume Count greater than 1.

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 61
    Points : 54
    Points
    54
    Par défaut
    j'ai essayé les 2, il me sort la même erreur.

  7. #7
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    J'ai essayé ton rexx et corrigé mon post, il fonctionne. Tu as donc un pb SMS et il faut que tu forces une DATACLASS valide

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 61
    Points : 54
    Points
    54
    Par défaut
    je l'ai créé en 3.2, noté la DATACLASS et j'ai repassé le REXX en forçant la DATACLASS, j'ai la même erreur.

    Comment lister les dataclass existantes ?


    merci pour tes réponses

  9. #9
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    Comment lister les dataclass existantes ?
    C'est sous TSO ISMF.
    Sinon comme tu as un pb avec les ACS routines qui ne prennent pas en compte le LIKE, essayes encore une fois en forçant un DSORG('PO') ou LIBRARY pour arriver à forcer une allocation mono volume.

  10. #10
    Membre averti
    Femme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 179
    Points : 350
    Points
    350
    Par défaut
    bonjour,

    je ne sais pas en quelle version de Z/os tu te trouves, mais j'ai trouvé un apar IBM ciblant exactement ton probleme.

    tu devrais voir avec les ingénieurs système...

    Apar disponible à cette URL http://www-01.ibm.com/support/docvie...id=isg1OA22738

    comme le dit Homer-ac, la solution donnée est de sépcifier DSORG('PO')

  11. #11
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    Avant d'aller voir les I.S. Tentes en ajoutant ça : DSORG(PO) VSEQ(1)
    Le like ne prend pas en compte le volume séquence.

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 61
    Points : 54
    Points
    54
    Par défaut
    ça marche très bien !! Ouf merci pour votre aide.

    encore une question, je veux copier de la meme maniere un fichier sequentiel, y a t'il un autre moyen (comme le lmcopy) que de passer par des EXECIO ?

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 61
    Points : 54
    Points
    54
    Par défaut
    j'ai trouvé, il suffit de faire le lmcopy en enlevant "fromem()"


    merci à tous pour votre aide précieuse !!

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut copier un pds via ordres ISPF
    Pour copier des séquentiels, j'utilise la commande "REPRO" ...
    il faut juste s'allouer les fichiers avec "ALLOC" auparavent ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JCIFS] Copier des données via SMB
    Par essadiki_ista dans le forum Entrée/Sortie
    Réponses: 15
    Dernier message: 14/11/2013, 02h45
  2. copier messagerie outlook via clef usb
    Par diornel dans le forum Outlook
    Réponses: 1
    Dernier message: 09/11/2012, 13h32
  3. Ligne de commande pour copier un dossier via SSH
    Par Daikyo dans le forum Administration système
    Réponses: 4
    Dernier message: 29/09/2009, 22h21
  4. Comment copier un fichier via SFTP ?
    Par AAWOOPY56 dans le forum Solaris
    Réponses: 2
    Dernier message: 06/07/2009, 09h53
  5. Contenu d'un PDS via REXX
    Par Fred Ratel dans le forum z/OS
    Réponses: 2
    Dernier message: 29/06/2009, 12h47

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