For Programmers: Free Programming Magazines  


Home > Archive > Cobol > May 2004 > decimal places









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author decimal places
Jerry Huff

2004-05-12, 6:47 pm

Hi:
I am trying to let a customer input the number of decimal points to
round to.
How can I code this in working storage so I can calc a subscript based
on input from the customer. I would like to avoid creating 7 different
paragraphs for each option if possible. I have created a sample program
to test this below, and I just chose to use a sub of 4. Ref-field turns
up with no decimals. Anyone have any suggestions on how I can pull
this off. MicroFocus Netexpress 3.1.

IDENTIFICATION DIVISION.
PROGRAM-ID. testperf.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
DATA DIVISION.
FILE SECTION.

WORKING-STORAGE SECTION.
01 test-fields.
05 filler pic s9(12)v99.
05 T2 pic s9(11)v999.
05 T3 pic s9(10)v9999.
05 T4 pic s9(09)v99999.
05 T5 pic s9(08)v999999.
05 T6 pic s9(07)v9999999.
05 T7 pic s9(06)v99999999.
01 tf redefines test-fields.
05 ref-field pic 9(14) occurs 7 times.
*
*
01 test-out pic s9(6)v99.
*--------------------------------------
01 Field1 pic 9(5)v9(10) value zero.
01 Field2 pic 9(5)v9(5) value 123.45600.
01 field3 pic 9(5)v9(3) value 435.553.

PROCEDURE DIVISION.
testperform-begin.
compute ref-field (4) rounded =
field2 * Field3.

Move zeros to test-out.
* compute test-out = test-out + tf(4).
P1101-END.
STOP RUN.

Joe Zitzelberger

2004-05-12, 6:47 pm

The easy way involves the use of a scale factor instead of 7 work fields.
[color=darkred]
> In article <Xw3nc.9299$2f6.376381@twister.tampabay.rr.com>,
> Jerry Huff <jhuff@terrasoftsystems.com> wrote:
>
James J. Gavan

2004-05-12, 6:47 pm

Jerry Huff wrote:

> Hi:
> I am trying to let a customer input the number of decimal points to
> round to.
> How can I code this in working storage so I can calc a subscript based
> on input from the customer. I would like to avoid creating 7 different
> paragraphs for each option if possible. I have created a sample
> program to test this below, and I just chose to use a sub of 4.
> Ref-field turns up with no decimals. Anyone have any suggestions on
> how I can pull this off. MicroFocus Netexpress 3.1.
>
> IDENTIFICATION DIVISION.
> PROGRAM-ID. testperf.
> ENVIRONMENT DIVISION.
> CONFIGURATION SECTION.
> INPUT-OUTPUT SECTION.
> FILE-CONTROL.
> DATA DIVISION.
> FILE SECTION.
>
> WORKING-STORAGE SECTION.
> 01 test-fields.
> 05 filler pic s9(12)v99.
> 05 T2 pic s9(11)v999.
> 05 T3 pic s9(10)v9999.
> 05 T4 pic s9(09)v99999.
> 05 T5 pic s9(08)v999999.
> 05 T6 pic s9(07)v9999999.
> 05 T7 pic s9(06)v99999999.
> 01 tf redefines test-fields.
> 05 ref-field pic 9(14) occurs 7 times.
> *
> *
> 01 test-out pic s9(6)v99.
> *--------------------------------------
> 01 Field1 pic 9(5)v9(10) value zero.
> 01 Field2 pic 9(5)v9(5) value 123.45600.
> 01 field3 pic 9(5)v9(3) value 435.553.
>
> PROCEDURE DIVISION.
> testperform-begin.
> compute ref-field (4) rounded =
> field2 * Field3.
>
> Move zeros to test-out.
> * compute test-out = test-out + tf(4).
> P1101-END.
> STOP RUN.
>

First, which one of the following are you using :-

1) Screen Section
2) Dialog Editor and GUI classes
3) Dialog System

Now would you care to expand on your statement, " I am trying to let a
customer input the number of decimal points to round to.". Is this :-

- on the fly,
- do you have a Condition (Level 88) set as to what is currently
acceptable as the input length, or,
- are there specific lengths to specific input fields, (per
Screen/Dialog) or,
- does the user set a Default length before application start-up or,
- etc......... ?

Knowing what the 'design intent' is will make it easier to suggest an
answer rather than follow up on your code above, which doesn't indicate
how the input is triggered.

Jimmy, Calgary AB
Howard Brazee

2004-05-12, 6:47 pm


On 8-May-2004, Jerry Huff <jhuff@terrasoftsystems.com> wrote:

> Hi:
> I am trying to let a customer input the number of decimal points to
> round to.


I would consider rounding by hand.

COMPUTE MY-RESULT = MY-RESULT + 5 / 10 ** DIGITS

Then move the string using reference modification to another alpha string.
Robert Wagner

2004-05-12, 6:47 pm

"Howard Brazee" <howard@brazee.net> wrote:

>On 8-May-2004, Jerry Huff <jhuff@terrasoftsystems.com> wrote:
>
>
>I would consider rounding by hand.
>
>COMPUTE MY-RESULT = MY-RESULT + 5 / 10 ** DIGITS
>
>Then move the string using reference modification to another alpha string.


Close. It should be .5 rather than 5, and doesn't work for negative numbers.

05 edited-number pic z(9).9(6).
05 edited-number-variable-length redefines edited-number.
10 pic x(10).
10 occurs 1 to 6 depending on digits pic x.


compute edited-number =
my-result + (function sign (my-result) * .5 / (10 ** digits))
move edited-number-variable-length to ...

Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com