Unconfigured Ad Widget

Collapse

TechTip: XLATE and Character String Manipulation

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • gman
    Junior Member
    • Sep 2008
    • 0

    TechTip: XLATE and Character String Manipulation

    ** This thread discusses the article: TechTip: XLATE and Character String Manipulation **
    ** This thread discusses the Content article: TechTip: XLATE and Character String Manipulation **
    FYI: This can also be done in free-format with the %XLATE Built-in Function...

    From the RPG IV Reference manual: %XLATE(from:to:string{:startpos})
  • ukpi1b
    Junior Member
    • Jul 2011
    • 123

    #2
    ** This thread discusses the article: TechTip: XLATE and Character String Manipulation **
    %xlate BIF in free format does not work the same way.
    d FrFmt s 11A inz('ABCDEFGHIJK')
    d ToFmt s 11A
    d FrSsn s 11A inz('111-25-7890')
    d ToSsa s 11A
    /free
    ToFmt='JIHCDFEGAKB';
    ToSsa=%xlate(FrFmt:Tofmt:FrSsn);
    *Inlr=*on;
    /end-free
    After %xlate execution ToSsa gets FrSsn value '111-25-7890' . Tested on V5R4.
    I. Brender

    Comment

    • david_l
      Junior Member
      • Jul 2011
      • 4

      #3
      ** This thread discusses the article: TechTip: XLATE and Character String Manipulation **
      The bif works the same. In your example, nothing changed because FrSsn did not have any of the values in either FrFmt or ToFmt. Change the first three characters in FrSsn to 'AAA', and they will change.

      Comment

      • ukpi1b
        Junior Member
        • Jul 2011
        • 123

        #4
        ** This thread discusses the article: TechTip: XLATE and Character String Manipulation **
        Thank you David.
        These are values in debug mode:

        Previous debug expressions
        > EVAL FrFmt
        FRFMT = 'ABCDEFGHIJK'
        > EVAL ToFmt
        TOFMT = 'JIHCDFEGAKB'
        > EVAL FrSsn
        FRSSN = '111-25-7890'
        > EVAL ToSsa
        TOSSA = '111-25-7890'
        I am not sure which values are missing

        Comment

        • david_l
          Junior Member
          • Jul 2011
          • 4

          #5
          ** This thread discusses the article: TechTip: XLATE and Character String Manipulation **
          Change your variable FRSSN to 'AAA-25-7890' and rerun it. After execution it should change to 'JJJ-25-7890'.

          Comment

          • ukpi1b
            Junior Member
            • Jul 2011
            • 123

            #6
            ** This thread discusses the article: TechTip: XLATE and Character String Manipulation **
            Apparently this is not what original posting does.
            In first program FrSsn ='111-25-7890' which looks like Social Security Number, is reformatted to ‘9871-52-101’(ToSsa) by changing ToFmt value using the same characters as in FrFmt in different sequence. Then in it reformats it back to original. That’s all.

            To make this more fancy try special characters:
            FrFmt='@#^!()<{>]\'
            ToFmt=']>{!)(<@\#^'
            BTW. I have not seen SS# that contains letters

            Comment

            • david_l
              Junior Member
              • Jul 2011
              • 4

              #7
              ** This thread discusses the article: TechTip: XLATE and Character String Manipulation **
              The point of my putting in alpha characters in the SS# was just to show that the bif does work. It did not change in the original code because none of the characters in it were in either of the from or to strings.

              Comment

              • ukpi1b
                Junior Member
                • Jul 2011
                • 123

                #8
                ** This thread discusses the article: TechTip: XLATE and Character String Manipulation **
                According to IBM manuals the function of %xlate is to search the input string for any instances of the individual characters contained in the from string and to replace them with the corresponding character in the to string: Result=%xlate( from : to : input {: startpos} )

                For XLATE, characters in the source string (factor 2) are translated according to the From and To strings (both in factor 1) and put into a receiver field (result field).

                Original posting shows how to reformat source string via XLATE by specified syntax (changing FrFmt and ToFmt) instead of recommended by manual

                That is the main idea.
                Last edited by ukpi1b; 07-09-2011, 07:16 AM.

                Comment

                Working...
                X