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

AS/400 Discussion :

Restauration de données entre 2 IBMi


Sujet :

AS/400

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2009
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2009
    Messages : 148
    Points : 39
    Points
    39
    Par défaut Restauration de données entre 2 IBMi
    Bonjour à tous,

    Comment procédez-vous pour synchroniser les données entre 2 IBMi de façon manuel ?

    Actuellement, nous clearons les bibliothèques de la machine cible et restaurons celle-ci par le biais d'une cartouche provenant de la machine source. Seul petit hic c'est que souvent lorsque nous faisons un clean d'une bibliothèque nous avons souvent des soucis de dépendance avec d'autres fichiers présent dans une autre bibliothèque. Il faut donc aller dans l'autre bibliothèque, supprimer le fichier en question et relancer le clean de la bibliothèque. Je trouve ça un peu fastidieux.

    Est-ce que vous vous êtes dans le même cas ou hésite t'il une option qui permet d'outre passer les dépendances ?

    Merci d'avance pour vos retours.

  2. #2
    Membre éclairé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    octobre 2006
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : octobre 2006
    Messages : 489
    Points : 656
    Points
    656
    Par défaut
    Bonjour,
    On ne peut pas passer outre, çà semble évident.
    Pour notre part nous avions un un CL qui passait en revue tous les fichiers physiques et supprimait les fichiers dépendants (sortie de DSPDBR).
    Mais nous n'en avons plus l'utilité, car nos objets sont désormais répartis dans les bibliothèques de manière "logique". Nous avons :
    - Une bibliothèque d'outils.
    - Une bibliothèque d'objets (sources, programmes, DSPF, PRTF, etc...)
    - Une bibliothèque d'objets Web (sources, programmes).
    - Une bibliothèque de données communes à toutes nos sociétés (ce qu'on appelle les fichiers "groupe" chez nous). On y trouve des fichiers BD et des DTAARA.
    - Une bibliothèque de données pour chacune des sociétés. On y trouve des fichiers BD et des DTAARA. LF, index, vues et contraintes liés à ces fichiers y sont aussi.

    Du coup pas de souci de restauration, autre que les problèmes de niveau si on ne clear pas les biblios avant.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2009
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2009
    Messages : 148
    Points : 39
    Points
    39
    Par défaut
    Merci pour votre réponse.

    Il faut que j'arrive à ça mais avant il y a un peu de boulot car il y pas mal d'analyse pour passer à une bib commune à une bib par métier.

    En ce qui concerne votre CL, vous auriez toujours une copie de ce CL afin que je puisse m'appuyer dessus pour me dépatouiller en attendant ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    octobre 2006
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : octobre 2006
    Messages : 489
    Points : 656
    Points
    656
    Par défaut
    Bonjour,

    Voilà ce que j'ai retrouvé. C'est (normalement, car je n'ai pas forcément la dernière version) le code du CL qui faisait le travail. On lui passait en paramètres le nom de la bibliothèque et du fichier dont on voulait supprimer les dépendances.

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
                 PGM        PARM(&LIB &FIC)
    
                 DCLF       FILE(DSPDBRF)
                 DCL        VAR(&LIB)    TYPE(*CHAR) LEN(10)
                 DCL        VAR(&FIC)    TYPE(*CHAR) LEN(10)
                 DCL        VAR(&FICSUP) TYPE(*DEC)  LEN(4 0) VALUE(0)
                 DCL        VAR(&ERRSUP) TYPE(*DEC)  LEN(4 0) VALUE(0)
                 DCL        VAR(&SUPFIC) TYPE(*CHAR) LEN(4)
                 DCL        VAR(&SUPERR) TYPE(*CHAR) LEN(4)
    
    
    /* On récupère les infos dans fichier */
                 DSPDBR     FILE(&LIB/&FIC) OUTPUT(*OUTFILE) +
                              OUTFILE(QTEMP/DSPDBRF)
    /* Test existence bibliothèque */
                 MONMSG     MSGID(CPF3064) EXEC(DO)
                    SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                              MSGDTA('Bibliothèque' *BCAT &LIB *BCAT +
                              'introuvable') TOPGMQ(*PRV) MSGTYPE(*COMP)
                    GOTO       CMDLBL(FIN)
                 ENDDO
       /* Test existence fichier dans bibliothèque */
                 MONMSG     MSGID(CPF3012) EXEC(DO)
                    SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                              MSGDTA('Fichier' *BCAT &FIC *BCAT +
                              'introuvable dans bibliothèque' *BCAT +
                              &LIB) TOPGMQ(*PRV) MSGTYPE(*COMP)
                    GOTO       CMDLBL(FIN)
                 ENDDO
       /* Test si fichier physique */
                 MONMSG     MSGID(CPF3010) EXEC(DO)
                    SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                              MSGDTA('Fichier' *BCAT &FIC *BCAT 'dans +
                              bibliothèque' *BCAT &LIB *BCAT 'n''est +
                              pas un fichier physique !') TOPGMQ(*PRV) +
                              MSGTYPE(*COMP)
                    GOTO       CMDLBL(FIN)
                 ENDDO
    
       /* Boucle de lecture des fichiers dépendants */
     LOOP:       RCVF
          /* Plus d'enreg à lire ? */
                 MONMSG     MSGID(CPF0864) EXEC(GOTO CMDLBL(SUITE))
    
          /* Si le nom du fichier dépendant est bien renseigné */
                 IF         COND(&WHREFI *NE '          ') THEN(DO)
                    SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                                 MSGDTA('Suppression du fichier' *BCAT +
                                 &WHREFI *BCAT 'dans bibliothèque' *BCAT +
                                 &WHRELI *BCAT '...') TOPGMQ(*EXT) +
                                 MSGTYPE(*STATUS)
    
                    /* Comptabilise le nombre de fichiers supprimés */
                    CHGVAR     VAR(&FICSUP) VALUE(&FICSUP + 1)
    
                    /* Suppression  du fichier dépendant */
                    DLTF       FILE(&WHRELI/&WHREFI)
                    /* Si erreur lors de suppression on le comptabilise */
                    MONMSG     MSGID(CPF0000) EXEC(DO)
                       CHGVAR     VAR(&FICSUP) VALUE(&FICSUP - 1)
                       CHGVAR     VAR(&ERRSUP) VALUE(&ERRSUP + 1)
                    ENDDO
                    GOTO       CMDLBL(LOOP)
                 ENDDO
    
       /* Renvoie le nombre de fichiers supprimés et en erreur */
     SUITE:
                 CHGVAR     VAR(&SUPFIC) VALUE(&FICSUP)
                 CHGVAR     VAR(&SUPERR) VALUE(&ERRSUP)
                 SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&SUPFIC +
                              *BCAT 'logiques supprimés, ' *BCAT +
                              &SUPERR *BCAT 'erreurs, pour fichier' +
                              *BCAT &FIC *BCAT 'de' *BCAT &LIB) +
                              TOPGMQ(*PRV) MSGTYPE(*COMP)
    
     FIN:        ENDPGM

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    avril 2009
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2009
    Messages : 148
    Points : 39
    Points
    39
    Par défaut
    Merci beaucoup !

    Je regarde ça de prêt en attendant de réorganiser les bibliothèques.

Discussions similaires

  1. [C#] Récupération de données entre 2 WinForm
    Par debug dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/09/2004, 17h19
  2. Telechargement d'internet et echange de données entre 2 pc
    Par lemick2 dans le forum Développement
    Réponses: 5
    Dernier message: 09/05/2004, 22h22
  3. [Designer] Problème de transfert de données entre modul
    Par BILLYPATOU dans le forum Designer
    Réponses: 11
    Dernier message: 09/03/2004, 19h15
  4. Comment récuperer des données entrées au clavier?
    Par Elisée A. dans le forum MFC
    Réponses: 2
    Dernier message: 13/02/2004, 08h22
  5. [Kylix] Echange de données entre fiches
    Par _dack_ dans le forum EDI
    Réponses: 1
    Dernier message: 01/07/2003, 12h34

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