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 :

Nom de membre de PDS en minuscule ?


Sujet :

z/OS

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 167
    Points : 131
    Points
    131
    Par défaut Nom de membre de PDS en minuscule ?
    Bonjour ,

    J'ai trouvé un PDS contenant des noms de membres en minuscule !

    Ils ont été crées par un programme de la société EMC dont nous ne possédons que le compilé (Ou l'assemblé).

    Pour ma curiosité personelle , savez-vous comment ils ont fait ? Quel moyens existent-ils pour créer de tels membres ?

    Cf pièce jointe .....

    Nom : Capture.PNG
Affichages : 484
Taille : 19,9 Ko

    Cordialement ,

    Bakounine

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 41
    Points : 108
    Points
    108
    Par défaut
    Bonjour,

    je pense qu'ils ont utilisé la macro STOW (dans la SYS1.MACLIB).

    J'avais fait à l'époque (au siècle dernier, comme le temps passe...) un pgm assembleur. JE fouille dans mes archives ...

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 41
    Points : 108
    Points
    108
    Par défaut
    Alors le pgm assembleur :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    *****************************************************************     
    ***                                                           ***     
    ***                    PROGRAMME   STOW                       ***     
    ***                    ----------------                       ***     
    ***          MODIFICATION DE LA DIRECTORY D'UN PDS            ***     
    ***              FILE-AID POUR LES BIB. XREF                  ***     
    ***                                                           ***     
    *****************************************************************     
    ****                                                          ***     
    R1       EQU   1      Au début adresse du COMMAND PROCESSOR           
    *                     PARAMETER LIST; après indéterminé               
    R2       EQU   2      Registre de base                                
    R3       EQU   3      Pointe sur la liste de paramètres ( CPPLCBUF )  
    R4       EQU   4                                                      
    R5       EQU   5      Pointe sur la STOW LIST                         
    R6       EQU   6      Stocke le code retour pour FIND et STOW         
    R15      EQU   15                                                     
    STOW     CSECT          
             SAVE  (14,12)                                                 
             BALR  2,0                                                     
             USING *,2                                                     
             ST    13,SAUV+4                                               
             LA    15,SAUV                                                 
             ST    15,8(13)                                                
             LR    13,15                                                   
             B     DEBUT                                                   
    VERSION  DC    C'             STOW      V01*29*09*97'                  
    DATEASS  DC    C'*ASSEMBLAGE DU &SYSDATE (MM/JJ/AA) A &SYSTIME*'       
    DEBUT    DS    0H                                                      
             L     R3,0(R1)        CHARGE L'ADRESSE DU BUFFER DE COMMANDE  
             USING PARAM_LST,R3    ETABLIE L'ADRESSABILITé DE LA DSECT     
             SR    R6,R6           PREPARE CODE RETOUR = OK                
             MVC   STOWLIST,STLST  TRANSFERT LES DONNéES VERS LA STOW LIST 
             OPEN  (XREF,(UPDAT))  OUVRE LE PDS                            
             LA    R5,STOWLIST     CHARGE L'ADRESSE DE LA STOW LIST        
             FIND  XREF,(R5),D     RECHERCHE LE MEMBRE DANS LA DIRECTORY    
             LTR   R15,R15         TEST CODE RETOUR                     
             BZ    MAJ             SI ZERO, ON CONTINUE                 
             LR    R6,R15                                               
             B     RETOUR          SINON ON ARRETE( MEMBRE PAS TROUVE ) 
    MAJ      STOW  XREF,(R5),R     MET A JOUR LA DIRECTORY              
             LTR   R15,R15         TEST CODE RETOUR                     
             BZ    RETOUR          SI ZERO, TOUT VA BIEN                
             LR    R6,R15          SINON ON SAUVE LE CODE RETOUR        
    RETOUR   CLOSE (XREF)          FERMETURE DU PDS                     
             LR    R15,R6          RESTAURE LE CODE RETOUR              
             L     13,SAUV+4                                            
             RETURN (14,12),RC=(15)                                     
             EJECT                                                      
             LTORG                                                      
    SAUV       DC    18F'0'                                             
               DC    CL8'STOW 001'                                      
               SPACE 3                                                  
    XREF       DCB   DSORG=PO,DDNAME=XREF1,MACRF=R,W                    
               DS 0F                                               
    STOWLIST   DS CL74                                             
               SPACE 3                                             
    PARAM_LST  DSECT                                               
    LONGUEUR   DS CL4             LONGUEUR + OFFSET                
    COMMANDE   DS CL5             'STOW '                          
    STLST      DS CL74            PARAMETRE DU BUFFER DE COMMANDE  
               SPACE 3                                             
               END
    Il est utilisé dans un REXX qui permet de récupérer les segments PACBASE pour créer les Clause Copy utilisables sous File-Aid.
    Lorsque c'est possible, on génère une référence croisée dans le PDS XREF.
    Le paragraphe qui utilise STOW :
    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
    /*  La fonction STOW stocke dans la DIRECTORY, les informations       */
    /*  attendues par FILEAID pour gérer les membres XREF                 */
    "ALLOC F(XREF1) DA("BibXREF") MOD "                                                        
    StowList = justify(XREFmemb,8)                                          
    StowList = StowList!!x2c(0000001F0800E70000)                            
    wk = date('J')!!'F'                                                     
    StowList = StowList!!x2c(wk)!!x2c(00)!!x2c(wk)                          
    wk = substr(time(),1,2)!!substr(time(),4,2)                             
    StowList = StowList!!x2c(wk)                                            
    wk = reverse(justify(reverse(d2x(nbOctets)),8,'0'))                     
    StowList = StowList!!x2c(wk)!!x2c(0000)                                 
    wk = STR.i.0.1 '                                 '                      
    StowList = StowList!!'LeonK   AXRF'!!substr(wk,1,30)                    
    "STOW" StowList                                                         
    if RC = 4  then say 'Fonction STOW  RC = 4  Membre non trouvé'          
    if RC = 8  then say 'Fonction STOW  RC = 8  Membre non trouvé'        
    if RC = 12 then                                                       
        say 'Fonction STOW  RC = 12 Espace insuffisant pour la directory' 
    if RC = 16 then say "Fonction STOW  RC = 16 Erreur d'E/S sur le PDS"  
    if RC = 20 then say "Fonction STOW  RC = 20 Fichier non ouvert"       
    "FREE F(XREF1)"                                                       
    return
    Pour le cas qui nous occupe, il faudrait créer un pgm assembleur qui permet la modification du nom du membre.
    Il faut aussi allouer le fichier en OLD du genre "ALLOC F(XREF1) DA("BibXREF") OLD "

    Qui veut essayer ?

  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

    certains programmes, souvent non ibm, permettent de créer des membres ne respectant pas les standards ( minuscules., caractères spéciaux, ..).

    Mais pour avoir subit, je déconseille fortement la création de ce type de member_name.
    Il est impossible d'utiliser ces membres "exotiques" dans les jcl (comme dsname) ou dans les utilitaires standards (iebcopy).

    @+

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 167
    Points : 131
    Points
    131
    Par défaut
    Bonjour ,

    Bernard , je suis d'accord avec toi , d'où ma phrase "Pour ma curiosité persoNnelle " ....

    LeonK , si je comprends à peu près ton assembleur , au niveau du Rexx , que contiennent les variables "XREFmemb" et "NBOCTETS" ? Le nom du membre et la longueur de ce nom ?

    Et que fait la commande "wk = STR.i.0.1" ?

    Cordialement

    Bakounine

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 41
    Points : 108
    Points
    108
    Par défaut
    Bonjour,

    le REXX est un extrait (20 lignes sur + de 700 => un monstre) qui contient donc des variables initialisées auparavant dans le REXX.
    C'était juste pour montrer comment le pgm STOW était appelé.

    Sinon, les options de la macro STOW :

    STOW
    dcb address
    ,list address
    [,directory action]
    ,IFF

    directory action—[A|C|D|I|R|DISC]
    If directory action is not coded, A (add an entry) is the default. The parameter is coded as shown to specify the type of directory action:
    A specifies that an entry is to be added to the directory.
    C specifies that the name of an existing member or alias is to be changed.
    D specifies that an existing directory entry is to be deleted. For PDSEs, when the member name is deleted, all aliases for that member are deleted.
    I clears, or resets to empty, a PDS or PDSE directory. The parameter list (list address) is not required for STOW initialize. There are no serialization requirements for using STOW initialize. For PDSES, PDSE member connections will protect any application accessing a member concurrent to the issuance of STOW initialize. A member being read will be marked for deletion, but will not be deleted until after the connection is released.
    R specifies that an existing directory entry be replaced by a new directory entry. If R is coded but the old entry is not found, the new entry is added to the directory and a completion code of X'08' is returned in register 15. For PDSEs, when the member name is replaced, all aliases for that member are deleted. The replaced version of the PDSE member is marked for deletion, but it is not deleted until there are no applications accessing that member.
    DISC indicates the disconnect function is to be performed.
    IFF If the IFF function is specified, the DCB must be open for OUTPUT, UPDAT. This function currently supports ONLY PDSE data members. To create a new PDSE data member with the new attributes type descriptor and CCSID - a Timestamp of '00000000's needs to be specified on the compare operand. To create a new PDSE data member with new values for the type descriptor and CCSID attributes a valid matching Timestamp must be specified on the compare operand to match the Timestamp of the last updater that is on the disk.

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 167
    Points : 131
    Points
    131
    Par défaut
    Merci LeonK

    Pardon du retard de ma réponse (4 semainers de congés)

    Je vais essayer d'appronfondir cette macro.

    Bonne journée à toi

    Bakounine

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 167
    Points : 131
    Points
    131
    Par défaut
    Bonjour ,

    Juste pour infos , il faut utiliser le programme IQIBUTIL , fourni par IBM :

    Example 14: Manipulate non-standard member names

    //JOB0014 JOB ...
    //DOINHEX EXEC PGM=IQIBUTIL,
    // PARM='MEMRULE=3,LIST=YES'
    //IN DD DISP=SHR,DSN=INTT025.TEST.SOURCE
    //OUT DD DISP=SHR,DSN=INTT025.PLAY.SOURCE
    //SYSIN DD *
    STEP1 DELETE OUTDD=OUT
    S M=(9*,8*)
    STEP2 COPY OUTDD=OUT,INDD=IN
    SELHEX MEMBER=(C1C2C34040404040,F9818283F1F2F3F4,R)
    SELHEX MEMBER=(E7E8E94040404040,F9A7A8A9C1C2C340)
    STEP3 RENAME OUTDD=OUT
    S M=((9*,8=======))
    EXCLHEX M=(F9A7A8A9C1C2C340)
    /*This example has these steps:

    •Deletes all member names that begin with "9" or "8", in INTT025.PLAY.SOURCE.
    •Copies members "ABC" and "XYZ" from INTT025.TEST.SOURCE into INTT025.PLAY.SOURCE.
    The copied members are respectively renamed in the target library as "9abc1234" and "9xyzABC".

    •Renames all member names that begin with "9" into same names with "8" in the first character, except for member "9xyzABC".
    The EXEC PARM "MEMRULE=3" is required to be able to manipulate non-standard member names.

    DD statements JOBLIB and STEPLIB are omitted, implying that load module IQIBUTIL is residing in a LINKLIST library.

    DD statement IQIBUDFL is omitted, implying that DSC customization member IQIDFLTS is residing in a PARMLIB library.

    DD statements SYSPRINT and IQIBUPRT are omitted, resulting in a dynamic allocation of a SYSOUT data set with DD name IQIBUPRT. This data set will contain all the output normally intended for SYSPRINT


    Bernard59 , certes , IDCAMS n'aime pas du tout ceci mai IEBGENER accepte très bien .....

    Bakounine

Discussions similaires

  1. copie d'un pds avec modification des noms des membres
    Par naimespseudo dans le forum z/OS
    Réponses: 17
    Dernier message: 22/08/2009, 23h09
  2. liste membres de pds en REXX
    Par qqoos dans le forum z/OS
    Réponses: 7
    Dernier message: 30/01/2009, 09h31
  3. Réponses: 9
    Dernier message: 16/01/2009, 15h55
  4. READ des membres de PDS
    Par Antichoc dans le forum z/OS
    Réponses: 2
    Dernier message: 27/11/2008, 16h11
  5. [heritage] nom de membres
    Par ZaaN dans le forum C++
    Réponses: 3
    Dernier message: 15/12/2006, 09h42

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