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