Subject: | |
From: | |
Reply To: | Eric H. Sand |
Date: | Tue, 28 Sep 1999 13:45:13 -0500 |
Content-Type: | text/plain |
Parts/Attachments: |
|
|
<After Stephan after John>
A good rule of thumb to gage "space" requirements going between packed
decimal(hex) and decimal and vice versa is:
Where X is the "number of numeric positions".
packed decimal > decimal (X * 2) -1
decimal > packed decimal (X -1) / 2 rounded up to next integer if a
fraction
This was one of the first "formulae" I learned back in the days when "bubble
memory' was going to be the next great advance....some things never change..
Eric Sand
[log in to unmask]
> John -
>
> If you have to convert a packed field to zoned (a.k.a. decimal or, in your
> case, ASCII), you need two field definitions: one for the input packed
> field
> and the other for the output unpacked field. Keep in mind that a packed
> field occupies only about half as many bytes as a zoned field. Therefore,
> if you unpack any packed fields, your output record will be longer than
> the
> input record.
>
> Using your hex value '049484071C' (which occupies 5 bytes), if it is
> unpacked the receiving field must be at least 9 digits in length. (The 9
> digit size is a combination of significant and decimal digits. So a field
> definition of 9(5)V9(4) (5-significant + 4-decimal = 9 total digits) would
> work as well as 9(9). To figure how large the receiving field has to be
> just count the number of digits you see in the packed field's hex value.)
> If the receiving field is less than 9 digits in total size you risk
> high-order truncation.
>
> For example:
>
> 01 INPUT-RECORD.
> 03 INPUT-FIELD PIC S9(9) COMP-3.
>
> 01 OUTPUT-RECORD.
> 03 OUTPUT-FIELD PIC S9(9).
>
> MOVE INPUT-FIELD TO OUTPUT-FIELD.
>
> This will unpack the input field and put it into the output field. A hex
> view of OUTPUT-FIELD after the move would show '3034393438343037A1'. Note
> that the last byte is 'A1', not '31'. This is because your receiving
> field
> is defined as being signed. If you don't want the sign, your OUTPUT-FIELD
> definition should read PIC 9(9). (See HP Data Types Conversion
> Programmer's
> Guide for further explanation of packed and zoned data fields.)
>
> Now, if what you want is the output to be edited (i.e., with commas,
> decimal
> point, etc.), your OUTPUT-FIELD definition might read PIC ZZ,ZZZ,ZZ9.99-.
>
> Anyway, hope this helps.
>
> Steve Douglass
> BFGoodrich Aerospace
>
<Good stuff snipped>
|
|
|