Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 12 sur 12
  1. #1
    Membre du Club
    Inscrit en
    mai 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 161
    Points : 58
    Points
    58

    Par défaut Copie avec CPYTOIMPF

    Bonjour,

    j'ai un souci lors de l'utilisation de la commande CPYTOIMPF

    Voici le code

    Code :
    1
    2
    3
    4
    CPYTOIMPF  FROMFILE(QTEMP/PMALEMPXX) +                     
    TOFILE(QTEMP/PMALEMPZZ) MBROPT(*REPLACE) +    
    DTAFMT(*FIXED) STRDLM(*NONE) +                
    RMVBLANK(*NONE) FLDDLM(';')

    Je génére à partir d'un fichier base de données dans un fichier à plat de 331 de long.


    La structure de mon fichier PMALEMP est de plusieurs zones dont la dernière est un filler de 156 de long qui n'est pas rempli

    Lorsque je transfère vers le micro le fichier à plat je perds en affichage mon filler de 156.

    De fait la longueur à plat de mon fichier passe de 331 à 175 de long

    Comment faire pour conserver ce filler de 156 non rempli mais visible sur micro après ?
    Est-ce que c'est dans la commande CPYTOIMPF ou dans le RPG en remplissant mon filler par du blanc "visible" qui sera considérer ensuite dans le transfert ?

    Merci de vos réponses

    Philippe

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    septembre 2008
    Messages
    737
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : septembre 2008
    Messages : 737
    Points : 1 079
    Points
    1 079

    Par défaut

    Si je comprends bien, ton fichier à plat a bien le filler à blanc en fin de fichier.
    C'est le passage sur micro qui te pose problème.
    Question : Qu'utilises-tu pour transférer le fichier sur ton micro.
    Autre question : En quelle version de l'OS est-tu ?

  3. #3
    Membre du Club
    Inscrit en
    mai 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 161
    Points : 58
    Points
    58

    Par défaut filler

    La version d'OS est V5R4M000

    Il s'agit d'un transfert vers un serveur via FTP , c'est un CLP qui fait le transfert en appelant FTP de l'AS400.

    Philippe

  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 882
    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 882
    Points : 3 435
    Points
    3 435

    Par défaut

    Bonjour.

    Dans ton FTP, insère l'instruction :
    elle évite la troncature des espaces.

  5. #5
    Membre éclairé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    octobre 2006
    Messages
    324
    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 : 324
    Points : 397
    Points
    397

    Par défaut

    Place un délimiteur de chaîne, genre STRDLM(*DBLQUOTE), pour conserver ta chaîne telle que.

  6. #6
    Membre du Club
    Inscrit en
    mai 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 161
    Points : 58
    Points
    58

    Par défaut

    Merci pour vos réponses

    je vais tester Lundi

    Je vous tiens au courant

    Philippe

  7. #7
    Membre du Club
    Inscrit en
    mai 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 161
    Points : 58
    Points
    58

    Par défaut

    Bonjour a tous ,

    Le délimiteur de chaine dans le CLP ne fonctionne pas comme voulu.
    J'ai des doubles quotes mais toujours une chaine tronqué qui ne fait plus la longueur voulue de 331 mais 179 de long.

    Je ne peux pas mettre de caractère à la fin car le client attend une chaîne vide à la fin.

    Je pars d'un fichier base de données PMALEMPXX que je copie dans un fichier d'un longueur de 331 dans PMALEMPZZ ( ce sont les noms des fichiers utilisés ).

    Après cette copie dans PMALEMPZZ , j'ai bien une chaîne de 331 de long avec mes données à plat

    Ensuite j'utilise une procédure FTP d'envoi toute prête que je ne peux pas modifier.

    Je ne peux pas mettre au début et la fin de la chaîne extraite sur PC de double quote.

    Si vous avez une idée ...

    Philippe

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    septembre 2008
    Messages
    737
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : septembre 2008
    Messages : 737
    Points : 1 079
    Points
    1 079

    Par défaut

    Si c'est ton AS/400 qui appelle un serveur FTP et lui envoie le fichier, il faut utiliser LOCSITE TRIM 0 pour que le fichier soit envoyé avec les blancs de fin d'enregistrement.
    Est-tu sûr de ne pas pouvoir remplacer ta procédure d'envoi par ta propre commande d'envoi ?

  9. #9
    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 882
    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 882
    Points : 3 435
    Points
    3 435

    Par défaut

    Bonjour.

    Amha tu ne pourras pas échapper à la modification de ta procédure FTP si tu veux bien faire.

    Sinon, fais toi un programme sur le PC pour copier le fichier de 179 vers un fichier de 331. (moi je le faisais avec du Basic ou du Cobol pour PC).

  10. #10
    Membre du Club
    Inscrit en
    mai 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 161
    Points : 58
    Points
    58

    Par défaut

    Bonjour à tous ,

    Merci pour vos réponses , il existe probablement plusieurs solutions.

    Vu les contraintes rencontrés , je me suis renseigné interne et on m'a indiqué d'initialiser mes zones vides avec *LOVAL.

    Le fait d'avoir fait cette initialisation m'a permis de récupérer en sortie dans le fichier texte ma zone avec la longueur voulue.

    Merci encore pour votre aide

    Philippe

  11. #11
    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 882
    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 882
    Points : 3 435
    Points
    3 435

    Par défaut

    Bonsoir.

    En effet l'initialisation des zones de fin d'enregistrement à LOW VALUE (*LOVAL) résout en apparence le problème. FTP semble ne tronquer que les les SPACES (X'40') en fin d'enregistrement, et donc les caractères LOW VALUE (X'00') vont passer. Tu auras un fichier sur le PC avec la longueur voulue, sauf que les caractères en fin d'enregistrement sont des NUL (X'00' en ASCII) et non des SPACES (X'20' en ASCII). Si ton client ne rechigne pas, ça peut passer.

  12. #12
    Membre du Club
    Inscrit en
    mai 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 161
    Points : 58
    Points
    58

    Par défaut

    Citation Envoyé par FORMULARY Voir le message
    Si c'est ton AS/400 qui appelle un serveur FTP et lui envoie le fichier, il faut utiliser LOCSITE TRIM 0 pour que le fichier soit envoyé avec les blancs de fin d'enregistrement.
    Est-tu sûr de ne pas pouvoir remplacer ta procédure d'envoi par ta propre commande d'envoi ?
    J'ai fini par adopter cette solution en modifiant la chaîne du FTP

    Merci pour vos réponses

    Philippe

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

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
  •