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