Page 1 of 1

[CLOSED] Exchange fields to CLP

Posted: Wed Jun 29, 2022 8:03 pm
by Fabrice.geay
I have a CL that calls an RMDLX function with 4 input parameters and 11 output parameters.

CALL PGM(MàEXCHL) PARM('PUT' +
'UMUTULL P0030' &MUTULL +
'UCODPARLL A0180' &CODPARLL +
'UCODLETLL P0030' &CODLETLL +
'UCODOP1LL A0100' &CODOP1LL)

LANSA REQUEST(RUN) PROCESS(MV_TEST) +
FUNCTION(MVLETA1) PARTITION(DEV)

CALL PGM(MàEXCHL) PARM('GET' +
'ULIGN1 A0780' &LIGN1LL +
'ULIGN2 A0780' &LIGN2LL +
'ULIGN3 A0780' &LIGN3LL +
'ULIGN4 A0780' &LIGN4LL +
'ULIGN5 A0780' &LIGN5LL +
'ULIGN6 A0780' &LIGN6LL +
'ULIGN7 A0780' &LIGN7LL +
'ULIGN8 A0780' &LIGN8LL +
'ULIGN9 A0780' &LIGN9LL +
'ULIGN0 A0780' &LIGN10LL +
'UCODRETLL A0010' &CODRETLL)

The RDMLX function must return:
£uLIGN1LL := '- Nous avons procédé à la radiation de votre option XXXXXX, à compter du '
£uLIGN2LL := ' CHAMP LIBRE suite à la réception de votre demande.'
£uLIGN3LL := ' Votre carte de tiers payant devenant obsolète, nous vous remercions de nous'
£uLIGN4LL := ' la faire parvenir accompagnée de la déclaration sur l''honneur ci-jointe'
£uLIGN5LL := ' dûment complétée et signée.'
£uLIGN6LL := *blanks
£uLIGN7LL := *blanks
£uLIGN8LL := *blanks
£uLIGN9LL := *blanks
£uLIGN10LL := *blanks

But when i debugg my CL, i have this
&LIGN1LL='- Nous avons procédé à la radiati CHAMP LIBRE suite à la réceptio Votre cart'
&LIGN2LL=' CHAMP LIBRE suite à la réceptio Votre carte de tiers payant dev la faire p'
&LIGN3LL=' Votre carte de tiers payant dev la faire parvenir accompagnée d dûment com'
&LIGN4LL=' la faire parvenir accompagnée d dûment complétée et signée.
&LIGN5LL=' dûment complétée et signée.
&LIGN6LL='
&LIGN7LL='
&LIGN8LL='
&LIGN9LL='
&LIGN10LL='

You can see that I have the first 34 characters of the variable concatenated with the first 34 of the following line.

Re: Exchange fields to CLP

Posted: Wed Jun 29, 2022 9:36 pm
by adale
In my work with the M@EXCHL program, I was told it would only handle a total of 10 parms (in or out, combined), but I would run into a similar problem as you have mentioned. I changed to start only using no more than a total of 8 parms (in or out, combined), and have not had any issues since.
Try breaking your exchange into to smaller groups, so you would have two CALL PGM(M@EXCHL) statements in your program, this worked for me.
Example to try:
CALL PGM(MàEXCHL) PARM('GET' +
'ULIGN1 A0780' &LIGN1LL +
'ULIGN2 A0780' &LIGN2LL +
'ULIGN3 A0780' &LIGN3LL +
'ULIGN4 A0780' &LIGN4LL +
'ULIGN5 A0780' &LIGN5LL)

CALL PGM(MàEXCHL) PARM('GET' +
'ULIGN6 A0780' &LIGN6LL +
'ULIGN7 A0780' &LIGN7LL +
'ULIGN8 A0780' &LIGN8LL +
'ULIGN9 A0780' &LIGN9LL +
'ULIGN0 A0780' &LIGN10LL +
'UCODRETLL A0010' &CODRETLL)

Re: Exchange fields to CLP

Posted: Wed Jun 29, 2022 11:45 pm
by Fabrice.geay
Thank you,
it works for me too