This tip uses a binary field and data structures to
obtain the next sequential hexadecimal value. It also demonstrates a
technique for placing and extracting packed data from a character string.
I came across this method while trying to find a way to change a key so a setgt operand would step me through an abnormal file in an abnormal way. The file has a 10-character key and there was a need to step through the file by the first three characters in the key.
In my case, the binary increment worked great. I found it quite interesting that the next hex character can done in this fashion.
Code
f* written by James Greene on May 5, 2004
f* TRIPLEJ Inc.
f* TRIPLEJ46@hotmail.com
f* 801-673-2233
f* PO BOX 708992
f* Sandy, UT 84070-8992
f*********************************************************
f* 1. program demonstrates how to obtain the next sequential
f* hexadecimal character
f* 2. how to store/retreive packed decimal data from a char string
f*********************************************************
d mstrdta s 10 inz('abcdefghij')
d ds
d bin2a 2 2
d bin2 1 2b 0 inz
d ds
d today 1 5P 0 inz(20040505)
d todaya 1 5
d ds
d pdate 1 5P 0
d pdatealpha 1 5
c* show mstrdta prior to any changes
c mstrdta dsply
c* increment position 1 of mstrdta and display
c* in this case lower case 'a' is incremented to lower case 'b'
c eval bin2a = %subst(mstrdta:1:1)
c eval bin2 = bin2 + 1
c eval %subst(mstrdta:1:1) = bin2a
c mstrdta dsply
c* change mstrdta positons 2 - 6 = packed date - 20040505
c* result looks like garbage
c eval %subst(mstrdta:3:6) = todaya
c mstrdta dsply
c* extract packed date from mstrdta and display
c eval pdatealpha = %subst(mstrdta:3:6)
c pdate dsply
c eval *inlr = *on
==================================
MORE INFORMATION ON THIS TOPIC
==================================
The Best Web Links: tips, tutorials and more.
Ask your programming questions--or help out your peers by answering them--in our live discussion forums.
Ask the Experts yourself: Our application development gurus are waiting to answer your programming questions.