× 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.



Peter,

I had never given it much thought before today, but I ran a simple test (declared values) and got the same results. I finally found this in the V5R4 CL Manual in the Info Center:

The *TCAT operator truncates all trailing blanks in the first character string, then the two character strings are concatenated. All leading blanks on the second operand are not truncated. For example: ABC *TCAT DEF becomes ABCDEF ’ABC ’ *TCAT DEF becomes ’ABCDEF’ ABC *TCAT ’ DEF’ becomes ’ABC DEF’ ’ABC ’*TCAT ’ DEF’ becomes ’ABC DEF’

As you can see, it does state that leading blanks in the second field are *not* truncated. I think you are going to have to use the %Substring function on &Suffix beginning with the value of &Pos in the CHGVAR.


* Jerry C. Adams
*IBM System i Programmer/Analyst
B&W Wholesale Distributors, Inc.* *
voice
615.995.7024
fax
615.995.1201
email
jerry@xxxxxxxxxxxxxxx <mailto:jerry@xxxxxxxxxxxxxxx>



Peter Vidal wrote:
I am doing this:
(&ATFILE (10/A) holds "FILE001 ")
======================================================
CHGVAR VAR(&SUFFIX) VALUE(%SST(&ATFILE 5 3)) CHGVAR VAR(&POS) VALUE(1) DOWHILE COND(&POS *LE 3) IF COND(%SST(&SUFFIX &POS 1) *EQ '0') + THEN(CHGVAR VAR(%SST(&SUFFIX &POS 1)) + VALUE(' ')) ELSE CMD(GOTO CMDLBL(PROCESS)) CHGVAR VAR(&POS) VALUE(&POS + 1) ENDDO CHGVAR VAR(&NXREF) VALUE('XREF' *TCAT &SUFFIX)
At this point, &NXREF = "FILE 1 "

...instead of having this:

&NXREF = "FILE1 "


Peter Vidal MAPICS IT Technical Support Team / SR System Analyst
10540 Ridge Rd., Ste 203, New Port Richey, FL 34654-5111
http://www.pall.com

"He who asks is a fool for five minutes, but he who does not ask remains a fool forever."
Chinese Proverb




CRPence <crp@xxxxxxxxxxxxxxxxxxxx> Sent by: midrange-l-bounces@xxxxxxxxxxxx
08/13/2007 11:56 AM
Please respond to
Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx>


To
midrange-l@xxxxxxxxxxxx
cc

Subject
Re: Convert Character to Decimal in CL: Trimming leading zeros






Consider that such naming does not provide for "ordered" names. At least not according to the numerical ascent. An example of such a list:

A1
A10
A100
A101
A102
A11
A110
A111
A12
A2

REXX is a much better choice for such string handling, but a CLP subroutine can replace any '0' with ' ' in a loop starting from the first position, and the result string can be *TCAT as the suffix.

stripzero: subr stripzero /* Input &sfx ; e.g. *char 10 */
chgvar &pos 1
dowhile (&pos *le &maxlen) /* &sfx max length; e.g. 10 */
if (%sst(&sfx &pos 1) *eq '0') then( +
chgvar (%sst(&sfx &pos 1)) ' ' )
else leave
chgvar &pos (&pos + 1)
enddo
endsubr

Regards, Chuck


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

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.