Fil d’Ariane du forum – Vous êtes ici :ForumForums techniques: AS/400Copier une fichier BD dans un CSV …
Vous devez vous identifier pour créer des messages et des sujets.

Copier une fichier BD dans un CSV - suppression des blancs

Bonjour,

je dois copier un fichier BD AS400 sur l'IFS et obtenir une fichier csv sans blancs entre les 2 séparateurs ";" dans le cas où la zone est à blanc dans le fichier BD. C'est un fichier d'interface et l'éditeur du progiciel demande à ce qu'il n'y ait pas de blancs.

J'utilise la commande CPYTOIMPF avec RMVBLANK = *both (ce qui devrait enlever les blancs, mais ce n'es pas ce que j'obtiens)

Je suis en V7R1.

Y a t-il une solution en passant par le CPYTOIMPF, ou faut-il que j'utilise une autre commande

La commande passée :

CPYTOIMPF  FROMFILE(AXSPE/NOTRHPF) +
TOSTMF('/QDLS/ANAEL/RH.CSV') +
MBROPT(*REPLACE) STMFCODPAG(*PCASCII) +
RCDDLM(*CRLF) STRDLM(*NONE) +
RMVBLANK(*BOTH) FLDDLM(';') DECPNT(*COMMA)

Résultat obtenu

0031742;LE XXX;MEGGANE;0;0;0;0;00320; ; ; ; ; ; ;DNNAV; ; ; ; ; ;NON CADRE; ;421; ;421; ; ; ; ; ; ; ; ; ; ; ;meggane

Résultat à obtenir

0031742;LE XXX;MEGGANE;0;0;0;0;00320;;;;;;;DNNAV;;;;;;NON CADRE;;421; ;421;;;;;;;;;;;;meggane

Merci d'avance pour votre aide

 

 

Effectivement, c'est le comportement que j'ai aussi pu constater pour les zones vides, même avec RMVBLANK(*BOTH).

On peut essayer une substitution avec la commande Qshell sed, par exemple :

QSH CMD('sed ''s/; /;/g'' /QDLS/ANAEL/RH.CSV > /QDLS/ANAEL/RH2.CSV')

(va remplacer "; " par ";")

 

P. -S. Normalement, on n'utilise plus QDLS ?

Parfait avec la commande Shell

Merci beaucoup

Il n'est pas conseillé de travailler sur QDLS, mais cela fonctionne quand même avec moins de possibilités !!! ce sont des vieilles appli ... il faut prendre de temps de tout corriger !!

Bonjour,

Nous avons installé ce matin une nouvelle TR sur notre V7R1 et ce problème est survenu immédiatement.

L'utilisation de la commande SED fonctionne très bien.

Merci de l'info

FRED

Bonjour,

J'ai finalement ouvert un incident au Point Service et j'ai eu une réponse de Rochester. Il faut ajouter la DTAARA suivante :

CRTDTAARA DTAARA(QSYS/QCPNOBLANK) TYPE(*CHAR) LEN(3) VALUE('YES')

Après test, cela répond exactement au problème posé.

FRED