Précédent   Forum du club des développeurs et IT Pro > Systèmes > Autres systèmes > AS/400
AS/400 Le Forum d'entraide sur IBM AS/400 - iSeries. RPG.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/10/2012, 14h35   #1
philippe30
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 137
Points : 36
Points : 36
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
philippe30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2012, 15h09   #2
FORMULARY
Membre chevronné
 
Homme
Inscription : septembre 2008
Messages : 496
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 496
Points : 685
Points : 685
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 ?
FORMULARY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2012, 15h43   #3
philippe30
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 137
Points : 36
Points : 36
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
philippe30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2012, 16h04   #4
Hédhili Jaïdane
Expert Confirmé
 
Homme
Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
Inscription : juin 2007
Messages : 1 783
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 783
Points : 2 713
Points : 2 713
Bonjour.

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

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2012, 17h12   #5
m4k-Hurrican
Membre confirmé
 
Inscription : octobre 2006
Messages : 224
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 224
Points : 222
Points : 222
Place un délimiteur de chaîne, genre STRDLM(*DBLQUOTE), pour conserver ta chaîne telle que.
m4k-Hurrican est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2012, 20h18   #6
philippe30
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 137
Points : 36
Points : 36
Merci pour vos réponses

je vais tester Lundi

Je vous tiens au courant

Philippe
philippe30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 11h44   #7
philippe30
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 137
Points : 36
Points : 36
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
philippe30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 12h50   #8
FORMULARY
Membre chevronné
 
Homme
Inscription : septembre 2008
Messages : 496
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 496
Points : 685
Points : 685
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 ?
FORMULARY est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/10/2012, 13h00   #9
Hédhili Jaïdane
Expert Confirmé
 
Homme
Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
Inscription : juin 2007
Messages : 1 783
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 783
Points : 2 713
Points : 2 713
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).
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 18h18   #10
philippe30
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 137
Points : 36
Points : 36
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
philippe30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 23h39   #11
Hédhili Jaïdane
Expert Confirmé
 
Homme
Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
Inscription : juin 2007
Messages : 1 783
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 783
Points : 2 713
Points : 2 713
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.
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 11h25   #12
philippe30
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 137
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 137
Points : 36
Points : 36
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
philippe30 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h36.


 
 
 
 
Partenaires

Hébergement Web