×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




Raul,

I bow to your elegant and much more straight forward approach to
calculating CENTS. It is humbling to a see such a better coded statement.

Thanks.

Stephen West
------------------------------

-----Original Message-----
From: WDSCI-L [mailto:wdsci-l-bounces@xxxxxxxxxxxx] On Behalf Of Raul A
Jager W
Sent: Thursday, April 14, 2016 6:42 PM
To: wdsci-l@xxxxxxxxxxxx
Subject: Re: [WDSCI-L] Conversion to free-form

you can also do:

DOLLARS = %dec(dlrAmt:13:0);
CENTS = dlrAmt - dollars;

On 04/13/2016 02:34 PM, Stephen M. West wrote:
There is not a straight forward replacement in free-format for the
Z-ADD opcode. An example of this is splitting a dollar amount into
the whole dollar value and the cents value and storing them as separate
fields.

The following example shows just how simple it is in [old]
fixed-column
RPG:

D DLRAMT S 10s 2 Inz(876.54)
D DOLLARS S 4p 0

D CENTS S 2p 2

C Z-ADD DLRAMT DOLLARS
C Z-ADD DLRAMT CENTS

Now, DOLLARS contains the value 876, and CENTS contains the value .54.

That was easy because Z-ADD opcode does not throw errors when the
receiver is too small to hold the full result. Instead, it truncates
in a way that RPG programmers have been able to exploit. Now so with
EVAL.

Now for the [new] free-format RPGLE version.

dcl-s DLRAMT zoned(10:2) inz(876.54);
dcl-s DOLLARS packed(4);

dcl-s CENTS packed(2:2);

DOLLARS = %dec(dlrAmt:13:0);
CENTS = %dec(%subst(%editc(dlrAmt:'X'):9:2):2:0) / 100;

Again, DOLLARS = 876, and CENTS = .54.

That was easy, too ... sort of.

MOVE is worse. There are 18 different types of conversions for MOVE.

Stephen West
Software Engineer

This thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2026 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.