Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/04/2011, 12h52   #1
Invité de passage
 
Inscription : avril 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 5
Points : 1
Points : 1
Par défaut CHGPF - Largeur de ligne

Bonjour,

J'ai un fichier physique qui a une longueur maximale de 90 caracteres (Attribut: Longueur maximale d'enregistrement). Je souhaiterais augmenter cette longueur maximale. Et je ne trouve pas l'attribut qu'il est nécessaire de modifier pour augmenter la "longueur" possible d'un enregistrement au travers de la commande CHGPF.

Existe t il une autre commande pour modifier cet attribut ou faut il passer par un autre moyen ?

Amclt,
Chryzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 13h29   #2
Membre éclairé
 
Homme
Inscription : septembre 2008
Messages : 251
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 251
Points : 309
Points : 309
Il n'y a pas de commande pour changer cet attribut, car il est calculé d'après l'ensemble des champs qui le composent.
Par exemple, le fichier suivant, qui contient les champs :
Matric type char longueur 6 et Nom type char longueur 30 aura une longueur maxi d'enreg de 36.

Vouloir agrandir la longueur d'un enregistrement signifie ajouter un nouveau champ ou agrandir la longueur d'un champ type char (par exemple)

Est-ce que tu ne confondrais pas avec la taille du fichier (attribut SIZE) qui indique combien d'enregistrements le fichier peut contenir ?
FORMULARY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 15h53   #3
Invité de passage
 
Inscription : avril 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 5
Points : 1
Points : 1
Bien que débutant complet en AS400, je ne parle pas du nombre initial d'enregistrement des tailles d'augmentation, du nombre d'augmentation supplémentaire, etc...

Je n'ai pas l'habitude d'avoir un système de fichiers / base de données unifié (de ce que j'en comprends pour l'instant)

Mais je pense que tu as raison et qu'il faut que je modifie donc la seule et unique colonne du fichier (table) pour l'augmenter et satisfaire le besoin utilisateur.

M'en vais aller chercher comment acceder a l'interface SQL

Merci pour la réponse.

Edit: le fichier est de type *data
Chryzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 17h10   #4
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Citation:
Envoyé par Chryzo
Mais je pense que tu as raison et qu'il faut que je modifie donc la seule et unique colonne du fichier (table) pour l'augmenter et satisfaire le besoin utilisateur.
M'en vais aller chercher comment acceder a l'interface SQL
Non. Ne fais pas çà, tu vas compliquer pour finir par aller dans le mur.

Crée un nouveau fichier à la longueur voulue avec la commande qui suit :
Code :
CRTPF MaBib/NEWFILE RCDLEN(Ta nouvelle lgr)
Et vas-y gaiement. Par exemple, si tu as besoin de 100 caractères, mets 150. Si c'est 120 qu'il te faut, mets 180, etc. Tu "exagères" de 30 à 50%, comme ça tu es + ou - à l'abri d'une "rallonge" ultérieure tjs possible.

Ensuite, copie le fichier d'origine dans ce nouveau fichier avec la commande suivante :
Code :
CPYF FROMFILE(MaBib/FIC90) TOFILE(MaBib/NEWFILE) MBROPT(*REPLACE) FMTOPT(*NOCHK)
Le paramètre FMTOPT(*NOCHK) est très important ici car il te permet de copier les données en aveugle, sans aucun contrôle, brut de fonderie si tu veux.

Enfin, quand la copie est BIEN terminée, détruis FIC90 avec la commande
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/04/2011, 17h11   #5
Invité de passage
 
Inscription : avril 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 5
Points : 1
Points : 1
J'ai essayé de modifier le fichier par une requete SQL, manque de pot, comme ce n'est pas un fichier SQL ca marche pas.

Donc, comment j'augmente la taille de ma zone ALPHA de 90 à 500 par exemple dans mon fichier. Voila les infos de zones que j'ai actuellement:

Informations de niveau zone
Type Long Long Position Usage En-tête
Zone données zone tampon tampon zone colonne
TRANSFERT ALPHA 90 90 1 E/S
ID codé de jeu de caractères . . . . . : 65535

Amclt,

Note: j ai mis mes nvelles infos avant de voir la réponse. Si je comprends bien, pas moyen de modifier la taille d'une zone d'un fichier, (meme quand il est vide ?)
Chryzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 17h13   #6
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Regarde mon post précedent au-dessus du tien.

Citation:
Envoyé par Chryzo
J'ai essayé de modifier le fichier par une requete SQL, manque de pot, comme ce n'est pas un fichier SQL ca marche pas.
Non, ce n'est pas pour cette raison. Tu ne peux pas le modifier parce que l'enregistrement (le format) de ce fichier ou de cette table n'est pas composé de diverses rubriques ou zones.

En effet, tu as créé ton fichier sans DDS et sans CREATE TABLE, donc ce n'est pas considéré comme un fichier ou une table "base de données" mais comme un fichier séquentiel du genre de ceux qu'on trouvait (trouve ?) sur certains systèmes de l'âge du bronze.

En revanche, il me semble intéressant de savoir ce que tu veux faire de ce fichier.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 07h59   #7
Invité de passage
 
Inscription : avril 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 5
Points : 1
Points : 1
Le fichier contient les données provenant d'un "put" ftp d'un fichier csv. Une fois les données transferer un "mapping" est fait pour que les données soient intégrer dans une table.

Merci pour les infos en tout cas.
Chryzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 12h55   #8
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
Et en quoi consiste le mapping dont tu parles ? Détaille les opérations please.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 09h35   #9
Invité de passage
 
Inscription : avril 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 5
Points : 1
Points : 1
Ok, je vais essayer de meme faire mieux.

Ajd il existe une procédure pour importer des données depuis un poste utilisateur dans une table AS400. Cette procédure est la suivante:

1/ L'utilisateur crée un fichier CSV sur son poste
2/ L'utilisateur fait un put du fichier CSV vers un fichier sur l'AS400 (le fameux fichier transfert)
3/ L'utilisateur utilise l'ERP pour indiquer le formattage du fichier CSV afin de pouvoir créer une table et importer les données du fichier CSV dans la table. (mapping)

Ajd l'utilisateur a un fichier CSV dont certaines lignes dépassent les 90 caracteres ce qui plante le mapping derriere.

Le besoin de base / la question est donc:
* Comment faire pour importer un fichier CSV dans une table AS400 depuis le poste d'un utilisateur.

Amclt,
Chryzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 10h20   #10
Membre éclairé
 
Homme
Inscription : septembre 2008
Messages : 251
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2008
Messages : 251
Points : 309
Points : 309
Plusieurs solutions :

Dans Client Access, un plug-in pour Excell existe :
C:\Programmes\IBM\Client Access\Shared\cwbtfxla.xll
On a ensuite une barre d'outils pour importer/exporter des fichiers depuis/vers l'AS/400.

On peut aussi copier le fichier CSV dans un répertoire partagé de l'IFS et utiliser la commande CPYFRMIMPF pour convertir le fichier et alimenter un fichier BDD.

Attention toutefois, ces 2 procédures peuvent avoir des problèmes pour convertir certaines zones (par exemple, une date si Excel doit être convertie en 3 zones numériques)
FORMULARY est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h27.


 
 
 
 
Partenaires

Hébergement Web