× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi Jeff

If you have set the varying length field from a fixed length field, without the trim, the allocated size is the length of the fixed length field - a real gotcha sometimes.

On the other hand, you can use %trim on a varying length - same result - but it's extra cycles used, I bet.

I don't see what SndSmsMsg is, in the OP's code. Probably a PLIST, but we don't know what is there. And if the first parameter in a PLIST is varying, the 2 length bytes will be passed, because the beginning of a varying length parameter is actually those 2 bytes, not the text. He should use EVAL VARIABLE:X in green screen debugger to see the length bytes.

There MUST be something about passing varying length to CL in the RPG programmer's guide!

HTH
Vern

-------------- Original message --------------
From: "Jeff Crosby" <jlcrosby@xxxxxxxxxxxxxxxx>

Because it's a varying length field, I don't think you do this:

C EVAL TEXTMsg160 = '(PCTAlerts) ' +
C %trim(TEXTMsg)

you simply do this:

C EVAL TEXTMsg160 = '(PCTAlerts) ' +
C TEXTMsg

No %trim is necessary as it's handled automajically.

--
Jeff Crosby
UniPro FoodService/Dilgard
P.O. Box 13369
Ft. Wayne, IN 46868-3369
260-422-7531

The opinions expressed are my own and not necessarily the opinion of my
company. Unless I say so.


-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx
[mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of Mike Cunningham
Sent: Wednesday, February 06, 2008 1:48 PM
To: 'Midrange Systems Technical Discussion'
Subject: passing an RPG variable length field to a CL as fixed length

I have an RPG app calling a CL app. The RPG app as a variable
length field for a message that I need to cut down to a fixed
length 160 byte field to pass to a CL program. If I look at
the variable TEXTMsg160 just before the call I do not see the
length part of the variable field but when the CL program
gets &MESSAGE and I use a SNDMSG to see what it contains
there are who hex characters in the front. I can only guess
that this is the length of the variable. Shouldn't the EVAL
that moves the string from the variable length field to the
fixed length field also remove the length part of the
variable length field? If not how else can this be done?

The RPG fields are defined as...
D TEXTMsg S 5000 VARYING
D TEXTMsg160 S 160

The code is ...
C EVAL TEXTMsg160 = '(PCTAlerts) ' +
C %trim(TEXTMsg)
C CALL 'UTJSMSMSG' SndSmsMsg

The CL is defined as...
PGM PARM(&PHONE &MESSAGE)
DCL VAR(&PHONE) TYPE(*CHAR) LEN(10)
DCL VAR(&MESSAGE) TYPE(*CHAR) LEN(160)
--

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.