To convert a RPG DATEFIELD to this numeric 8,0 field with no ‘/’ or ‘-‘ do this:
D USADate 8s 0
USADate = %dec(%char(DateField:*iso0):8:0);
Or another even neater function is this:
USADate = %uns(%char(DateField:*USA0));
I prefer this %UNS built in function, since it does not require me to specify length and decimal position parameters.
%UNSH is like %UNS except that if the numeric expression is a decimal or a float value, half adjust is applied to the value of the numeric expression when converting to unsigned type. No message is issued if half adjust cannot be performed.
D*Name++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++ D p7 s 7p 3 inz (8236.567) D s9 s 9s 5 inz (23.73442) D f8 s 8f inz (173.789) D result1 s 15p 5 D result2 s 15p 5 D result3 s 15p 5 D array s 1a dim (200) D a s 1a
/FREE result1 = %uns (p7) + 0.1234; // "result1" is now 8236.12340 result2 = %uns (s9); // "result2" is now 23.00000 result3 = %unsh (f8); // "result3" is now 174.00000 // %UNS and %UNSH can be used as array indexes a = array (%unsh (f8)); /END-FREE
IBM i Software Developer, Digital Dad, AS400 Anarchist, RPG Modernizer, Alpha Nerd and Passionate Eater of Cheese and Biscuits. Nick Litten Dot Com is a mixture of blog posts that can be sometimes serious, frequently playful and probably down-right pointless all in the space of a day. Enjoy your stay, feel free to comment and in the words of the most interesting man in the world: Stay thirsty my friend.
Which %BIF for Chain, Read and other naughty native file IO
When the RPGLE %EOF BIF is not the End of File
RPG Built-In Functions %BIF
How to Upload a SAVF with IBM I ACS a.k.a. Upgrade HTTPAPI (LIBHTTP) to V7.2
Developerworks Connections Sunset – How to Extend RDi
Why use IBM i RDi?
Copying iSeries fields from numeric to Alpha – aka using SQL to change column data type
What is IBM i Email and SPF?
Updating Numeric DTAARA in RPGLE