0% found this document useful (0 votes)
41 views2 pages

TIP17 - My Favorite BIF

The document discusses the %dec built-in function in RPG which can convert character data to numeric values, including dates. It provides examples of using %dec to: 1) Convert character variables and fields to numeric variables and fields 2) Handle decimal points and negative signs when converting values 3) Convert date and time values to numeric fields in different formats like YYYYMMDD 4) Convert current dates to Julian and other numeric date formats
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views2 pages

TIP17 - My Favorite BIF

The document discusses the %dec built-in function in RPG which can convert character data to numeric values, including dates. It provides examples of using %dec to: 1) Convert character variables and fields to numeric variables and fields 2) Handle decimal points and negative signs when converting values 3) Convert date and time values to numeric fields in different formats like YYYYMMDD 4) Convert current dates to Julian and other numeric date formats
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

My Favorite BIF (Built-In Function): %dec

submitted by Steve Kontos.

As of V5R3, the %dec built-in-function was offically put on steroids. Prior to V5R3 all
the function did was convert non-packed numeric data to packed numeric format. Big
deal, right? Today, this function will handle all kinds of character to numeric
conversions, including date conversions.

Here are some examples of converting character data to numeric using %dec. Most of
these use the “free form” of RPGLE, but not all. The %dec bif is equally at-home in
either mode.

1) Convert Character Variable to Numeric Variable


d order s 9
d order# s 9p 0

order# = %dec(order:9:0);

Remember the old days when you had to translate an amount in a flat text file to
numeric, and you had to look for the decimal point and add the dollars and cents
together? Well, %dec will handle decimal points and negative signs when converting to
numeric:

d num1 s 7s 2

num1 = %dec('-1234.56':7:2);
// num1 = -01234.56

%dec will NOT handle dollar signs and commas however, but %xlate can help. For
example:

num1 = %dec(%xlate('$,':' ':'$1,234.56'):7:2);


// num1 = 01234.56

%dech will round (half-adjust) the result:

d num2 s 7p 0

num2 = %dech('-1234.56':7:0);
// num2 = -0001235

But wait - as they say on the Ronco commercials - there's more . . .

2) Convert Character Field to Numeric Key Field


(Note: there is a field named wcan8 in record WBCUSR)

d cust 8
d custkey ds likerec(wbcusr:*key) inz

c eval custkey.wcan8 = %dec(cust:8:0)


3) Convert an ISO Date to Character, YYYYMMDD Format, No Dashes

todayISO = %editc(%dec(%date():*ISO ) : 'X');


// Note: %char could have replaced
%editc above, though...
// %char supresses leading zeros.
The 'X' edit will not.

4) Convert a Timestamp to Numeric

d timestamp s 20 0

timestamp = %dec(%timestamp());

5) Convert Current Date and Time to Numeric Fields

mdt100 = %dec(%date()); // Modified date yyyymmdd 8.0


mtm100 = %dec(%time()); // Modified time hhmmss 6.0

6) Convert Current Date to IBM Julian

d today_jul s 5s 0

today_jul = %dec(%date():*jul);

7) Convert Current Date to J.D. Edwards Julian

d jde_jul s 6s 0

jde_jul = %dec(%date():*jul) + 100000;

8) Convert Current Date to MMDDYY format

d today_mdy s 6s 0

today_mdy = %dec(%date():*mdy);

That's it. Using %dec has to be considered the preferred way to handle character to
numeric conversions and date format conversions in free-format RPG.

Enjoy!

You might also like