Forum iSeries, hébergé par xdocs400.com

As400, iSeries, i5, System i, une machine qui évolue pour être de plus en plus puissante.

Vous n'êtes pas identifié(e).

Annonce

ATTENTION : Le système anti-spam est à nouveau opérationnel. Nous avons réactivé les inscriptions.

#1 2018-07-17 07:57:55

JMM59
Membre
Inscription : 2015-03-24
Messages : 18

Enregitrements dynamiques

Bonjour à tous,

Je rempli actuellement un fichier DB2 de 60 caractères de long avec des données chargées manuellement, sous la forme :
// Exemple : UNH+2+RECADV:D:96A:UN'                                             
EnrData = UNH          + SPlus + %Trim(UNH0062)  + SPlus + UNH10065 + SPoin
            + UNH10052 + SPoin + UNH10054           + SPoin + UNH10051 + QtFin                                                         
            ;                                                             

Les enregistrements sont de longueurs variables, mais le fichier reste statique à 60 caractères.

Existe-t-il un moyen d'avoir un fichier dont les enregistrements sont dynamiques en fonction des données générées ?

Merci de votre aide,
Bonne journée à tous.

Hors ligne

#2 2018-07-17 09:07:47

ctalhouet
Membre
Inscription : 2013-05-30
Messages : 88

Re : Enregitrements dynamiques

Bonjour
Pour ce meme cas (generation EDI)  , on a fait un fichier avec 1 enreg de 1200 de long car on ne connait jamais la taille du champ généré ....

Hors ligne

#3 2018-07-17 09:14:38

JMM59
Membre
Inscription : 2015-03-24
Messages : 18

Re : Enregitrements dynamiques

Bonjour ctalhouet,

C'est aussi l'objet de ma recherche.
Et comment avez-vous résolu votre problème ?

Cordialement.

Hors ligne

#4 2018-07-17 09:54:02

remit
Membre
Inscription : 2007-02-25
Messages : 228

Re : Enregitrements dynamiques

À ma connaissance, sur IBM i (voire sur tous les sytèmes IBM), les fichiers ont un format fixe (tous les enregistrements d'un même format ont la même longueur).

Après, il est possible de générer un fichier "stream" avec délimiteur d'enregistrement à partir d'un fichier DB2 par une des commandes CPYTOSTMF ou CPYTOIMPF.

Hors ligne

#5 2018-07-17 10:12:40

ctalhouet
Membre
Inscription : 2013-05-30
Messages : 88

Re : Enregitrements dynamiques

On ecrit chaque ligne  EDI  separément dans un fichier avec des enreg de taille fixe 1200 et on vient ensuite les concatener  (si nécessaire )..

Hors ligne

#6 2018-07-17 10:14:46

JMM59
Membre
Inscription : 2015-03-24
Messages : 18

Re : Enregitrements dynamiques

Bonjour Remit,

C'est une des procédures que j'utilise, mais je ne parviens pas à paramétrer correctement mon transfert.
Soit il laisse les blancs, soit il insère des lignes blanches dans mon fichier.

Si tu as la procédure complète, je suis preneur.

Cordialement.

Hors ligne

#7 2018-07-17 10:19:59

ctalhouet
Membre
Inscription : 2013-05-30
Messages : 88

Re : Enregitrements dynamiques

Moi je fais ca (mais mes enregistrements sont déja concaténés avant en un seul )

                                                               
     CPYTOSTMF  +                                               
                  FROMMBR('/qsys.lib/QTEMP.lib/AVIFIC.FILE/AV+ 
                  IFIC.MBR') TOSTMF(&CHEM) ENDLINFMT(*CRLF) +   
                  AUT(*INDIR) STMFCODPAG(1252)                 
     MONMSG     MSGID(CPFA097)

Hors ligne

#8 2018-07-17 10:25:42

JMM59
Membre
Inscription : 2015-03-24
Messages : 18

Re : Enregitrements dynamiques

ctalhouet a écrit :

On ecrit chaque ligne  EDI  separément dans un fichier avec des enreg de taille fixe 1200 et on vient ensuite les concatener  (si nécessaire )..

Si je comprends bien la démarche, chaque message est généré dans un fichier particulier.
Mais comment fais-tu pour concaténer les enregistrements entre eux (Procédure CLLE en CPYF, Procédure RPG) ?
Quelle est la taille de ton fichier final ?

Désole pour toutes ces questions, mais j'ai du mal à imaginer.
Merci de ton aide,
Cordialement.

Hors ligne

#9 2018-07-17 10:51:35

ctalhouet
Membre
Inscription : 2013-05-30
Messages : 88

Re : Enregitrements dynamiques

on genere dans un fichier avec enreg lg fixe chaque ligne du message

UNB+dfqsdfsm
...
DTM+qsdqsd
NAD+qsdqsd
NAD+qsdqs
LIN+qsdq

en fin de traitement du message EDi (lot de factures  par ex)   on passe un RPG   (fait par nous ) qui mets tout bout a bout  et qui lance  la copie dans l'IFS

UNB+UNOC:3+3013485800307:14+3016065200000:14+170901:1200+5273'UNH+1+DESADV:D:96A:UN:EAN005'BGM+351+6674920170904+9'DTM+137:20170901:102'DTM+11:20170901:102'DTM+17:20170904:102'RFF+ON:03148786'DTM+171:20170901:102'RFF+DQ:66749'DTM+171:20170901:102'NAD+SH+3013485800307::9'NAD+SU+3013485800307::9'NAD+SF+3013485800307::9'NAD+BY+3012551200102::9'NAD+DP+3012551200102::9'CPS+1'PAC+1++X1::9'MEA+PD+AAC+KGM:136.987'CPS+2+1'PAC+1++X+12:18.000:KGM'QTY+12:18:PCE'CNT+2:7'UNT+120+1'UNZ+1+5273'

Hors ligne

#10 2018-07-17 11:37:47

JMM59
Membre
Inscription : 2015-03-24
Messages : 18

Re : Enregitrements dynamiques

ctalhouet a écrit :

on genere dans un fichier avec enreg lg fixe chaque ligne du message

UNB+dfqsdfsm
...
DTM+qsdqsd
NAD+qsdqsd
NAD+qsdqs
LIN+qsdq

en fin de traitement du message EDi (lot de factures  par ex)   on passe un RPG   (fait par nous ) qui mets tout bout a bout  et qui lance  la copie dans l'IFS

UNB+UNOC:3+3013485800307:14+3016065200000:14+170901:1200+5273'UNH+1+DESADV:D:96A:UN:EAN005'BGM+351+6674920170904+9'DTM+137:20170901:102'DTM+11:20170901:102'DTM+17:20170904:102'RFF+ON:03148786'DTM+171:20170901:102'RFF+DQ:66749'DTM+171:20170901:102'NAD+SH+3013485800307::9'NAD+SU+3013485800307::9'NAD+SF+3013485800307::9'NAD+BY+3012551200102::9'NAD+DP+3012551200102::9'CPS+1'PAC+1++X1::9'MEA+PD+AAC+KGM:136.987'CPS+2+1'PAC+1++X+12:18.000:KGM'QTY+12:18:PCE'CNT+2:7'UNT+120+1'UNZ+1+5273'

Merci Ctalhouet, je vais essayer ta solution.
Juste une question, l'enregistrement concaténé, tu le place bien dans un fichier, avant l'envoi sur l'IFS ?
Ton fichier doit comporter qu'une seule rubrique de 32740 caractères ?

Encore merci pour ton aide,
Cordialement.

Hors ligne

#11 2018-07-17 12:43:54

ctalhouet
Membre
Inscription : 2013-05-30
Messages : 88

Re : Enregitrements dynamiques

mon fichier en sortie est constitué de x enreg de 800 , seul le dernier a des blancs à droite ?

tu peux me joindre en MP   si tu veux

Hors ligne

#12 2018-07-17 16:28:21

JMM59
Membre
Inscription : 2015-03-24
Messages : 18

Re : Enregitrements dynamiques

ctalhouet a écrit :

mon fichier en sortie est constitué de x enreg de 800 , seul le dernier a des blancs à droite ?

tu peux me joindre en MP   si tu veux

Merci ctalhouet,

Comment fais-tu pour mettre des enregistrements de 1200 de long, qui ne sont pas remplis intégralement, dans des enregistrements de 800 de long, qu'il faut générer sans "blanc" ?
Il te faut un compteur qui compte le nombre de caractères des lignes en 1200 et tronquer quand tu arrive en fin de record ?

Merci pour ton aide,
Cordialement.

Hors ligne

#13 2018-07-18 07:49:45

ctalhouet
Membre
Inscription : 2013-05-30
Messages : 88

Re : Enregitrements dynamiques

Bonjour
En réalité apres vérif , il fait 800 en entrée et 800 en sortie :
code:

C                   EVAL      LG=%LEN(%TRIM(ZREC))               
C                   EVAL      LGC=%LEN(%TRIMR(CHAINE))           
C                   IF        (LG+LGC)<=800                     
C                   EVAL      CHAINE=%TRIMR(CHAINE)+%TRIM(ZREC) 
C                   ELSE                                         
C                   EVAL      LMAX=800-LGC                       
C                   EVAL      LSUI=LG-LMAX                       
C                   EVAL      CHAINE=%TRIMR(CHAINE)+             
C                             %SUBST(%TRIM(ZREC):1:LMAX)         
C                   EXCEPT    ADDEDI                             
C                   EVAL      CHAINE=*BLANKS                     
C                   EVAL      CHAINE=%TRIM(CHAINE)+             
C                             %SUBST(%TRIM(ZREC):LMAX+1:LG-LMAX)
C                   ENDIF

Hors ligne

#14 2018-07-18 17:35:52

JMM59
Membre
Inscription : 2015-03-24
Messages : 18

Re : Enregitrements dynamiques

Bonsoir Ctalhouet,

Merci pour ton aide, je viens de tester et cela fonctionne parfaitement.
Je demande au client si le format lui convient.

Encore merci pour ton aide.
Cordialement.

Hors ligne

#15 2018-07-19 08:27:41

ctalhouet
Membre
Inscription : 2013-05-30
Messages : 88

Re : Enregitrements dynamiques

Bonjour
Sur les milliers de messages qui passent comme ca , on a un seul  client qui nous a dit que dans sa future version de traducteur (2020 ??) , les blancs présents à la fin du fichier (car il reste des blancs  du solde des 800 - ce qu'on rempli) pourraient poser probleme  .

sinon , aucun probleme.

Hors ligne

Pied de page des forums