Copier une fichier BD dans un CSV - suppression des blancs
Citation de Hélène Dauvergne le 26 novembre 2018, 17 h 47 minBonjour,
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
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
Citation de remit le 27 novembre 2018, 16 h 20 minEffectivement, 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 ?
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 ?
Citation de Hélène Dauvergne le 28 novembre 2018, 10 h 55 minParfait 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 !!
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 !!
Citation de fred_crrm le 5 décembre 2018, 12 h 23 minBonjour,
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,
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
Citation de fred_crrm le 6 décembre 2018, 9 h 47 minBonjour,
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
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