×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




Would something like this fit the bill? Concept is to increment from the rightmost char using %xlate to get to the next "digit", and if overflow occurs, repeat with the prior character.

Test program works on a 3 char field so you can see the sequence in which value are returned. It is trivial to change to 8 chars.

Sam

h debug option(*nodebugio: *srcstmt) dftactgrp(*NO) actgrp(*CALLER)
FQPRINT O F 132 PRINTER oflind(*INOV)
d Num36Inc pr 3a varying
d PI_Num 3a varying
d TstNum s 3a varying inz('898')
/free
*inlr = *on;
dow TstNum <'999';
TstNum = Num36Inc(Tstnum);
except PrtLine;
enddo;
return;
/end-free
OQPRINT E PrtLine 1
O TstNum
*=== Increment procedure =======================================
p Num36Inc b
d Num36Inc pi 3a varying
d PI_Num 3a varying

d From C 'ABCDEFGHIJKLMNOPQRSTUVWXYZ -
d 0123456789'
d To C 'BCDEFGHIJKLMNOPQRSTUVWXYZ0 -
d 123456789A'
d wkNum s like(PI_Num)
d inx s 10I 0
/free
wkNum = PI_Num;
inx = %len(PI_num);
dow 'a' = 'a';
%subst(wkNum:inx:1) = %xlate(From:To:%subst(wkNum:inx:1));
if %subst(wkNum:inx:1) <> 'A'; // Not rolled over
leave;
endif;
inx -= 1;
enddo;
return wkNum;
/end-free
p Num36Inc e


On 6/17/2015 12:44 AM, Gad Miron wrote:
Hello Pundits

We have a six digits numerator that approaches 899999.

Since it happens to be a CHAR field I would like to start using the
letters A-Z
in lexical order when incrementing this field so that incrementing
899999 will result in 9AAAAA , 9AAAAB , ......., 9AAAAZ, 9AAAA0, 9AAAA1 etc.
(This way the numerator will sort the EBCDIC natural way)

Do you know an *elegant* way of doing it ?
(EBCDIC table having "holes" of unprintable chars does not expedite matters)

Thanks
Gad



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