Module ibm.jzos

Class PackedDecimalAsBigDecimalField

  • All Implemented Interfaces:
    BigDecimalAccessor, Field
    Direct Known Subclasses:
    PackedBigDecimalField

    public class PackedDecimalAsBigDecimalField
    extends java.lang.Object
    implements BigDecimalAccessor
    A packed decimal Field with BigDecimal accessors. A "scale" determines the implied number of digits in the fractional portion of the field.

    Since:
    2.1.0
    • Constructor Summary

      Constructors 
      Constructor Description
      PackedDecimalAsBigDecimalField​(int offset, int precision, int scale, boolean signed)
      Construct an instance.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean equals​(java.math.BigDecimal a, java.math.BigDecimal b)
      Compare two BigDecimal instances, possibly null, for equality.
      java.math.BigDecimal getBigDecimal​(byte[] buffer)
      Answer a BigDecimal from the given byte array buffer, at the offset of this field.
      java.math.BigDecimal getBigDecimal​(byte[] buffer, int bufOffset)
      Answer a BigDecimal from the given byte array buffer, at the bufOffset + offset of this field.
      int getByteLength()
      Answer the length of the field described by the receiver
      int getOffset()
      Answer the offset of this field into some array of bytes
      int getPrecision()  
      int getScale()  
      boolean isSigned()
      Answer true if the field is signed.
      void putBigDecimal​(java.math.BigDecimal value, byte[] buffer)
      Put a BigDecimal into the given byte array buffer, at the offset of this field.
      void putBigDecimal​(java.math.BigDecimal value, byte[] buffer, int bufOffset)
      Put a BigDecimal into the given byte array buffer, at the bufOffset + offset of this field.
      void setOffset​(int offset)  
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • PackedDecimalAsBigDecimalField

        public PackedDecimalAsBigDecimalField​(int offset,
                                              int precision,
                                              int scale,
                                              boolean signed)
        Construct an instance.

        Parameters:
        offset - int the offset of this field
        precision - in the number of decimal digits of precision. If even, this value is rounded up to the next odd number.
        scale - the number of implied decimal digits in the fractional portion of the field
        signed - boolean true if the value is signed, false if unsigned
    • Method Detail

      • getByteLength

        public int getByteLength()
        Answer the length of the field described by the receiver
        Specified by:
        getByteLength in interface Field
        Returns:
        int
      • getOffset

        public int getOffset()
        Answer the offset of this field into some array of bytes
        Specified by:
        getOffset in interface Field
        Returns:
        int
      • getPrecision

        public int getPrecision()
      • getScale

        public int getScale()
      • isSigned

        public boolean isSigned()
        Answer true if the field is signed.
      • getBigDecimal

        public java.math.BigDecimal getBigDecimal​(byte[] buffer)
                                           throws java.lang.IllegalArgumentException
        Answer a BigDecimal from the given byte array buffer, at the offset of this field.

        Note: the data is not checked for valid decimal digits, although the sign nibble is checked for a valid value in the range x'A'-x'F'.

        Specified by:
        getBigDecimal in interface BigDecimalAccessor
        Parameters:
        buffer - the byte array
        Returns:
        BigDecimal
        Throws:
        java.lang.IllegalArgumentException - if the data has a invalid sign nibble
      • getBigDecimal

        public java.math.BigDecimal getBigDecimal​(byte[] buffer,
                                                  int bufOffset)
                                           throws java.lang.IllegalArgumentException
        Answer a BigDecimal from the given byte array buffer, at the bufOffset + offset of this field.

        Note: the data is not checked for valid decimal digits, although the sign nibble is checked for a valid value in the range x'A'-x'F'.

        Specified by:
        getBigDecimal in interface BigDecimalAccessor
        Parameters:
        buffer - the byte array
        bufOffset - the additional offset into the byte array
        Returns:
        BigDecimal
        Throws:
        java.lang.IllegalArgumentException - if the data has a invalid sign nibble
      • putBigDecimal

        public void putBigDecimal​(java.math.BigDecimal value,
                                  byte[] buffer)
                           throws java.lang.IllegalArgumentException
        Put a BigDecimal into the given byte array buffer, at the offset of this field.

        Note: if the field is unsigned, a x'F' is supplied as the sign nibble in the field.

        Specified by:
        putBigDecimal in interface BigDecimalAccessor
        Parameters:
        value - the BigDecimal value
        buffer - the byte array
        Throws:
        java.lang.IllegalArgumentException - if the value is out of range
      • putBigDecimal

        public void putBigDecimal​(java.math.BigDecimal value,
                                  byte[] buffer,
                                  int bufOffset)
                           throws java.lang.IllegalArgumentException
        Put a BigDecimal into the given byte array buffer, at the bufOffset + offset of this field.

        Note: if the field is unsigned, a x'F' is supplied as the sign nibble in the field.

        Specified by:
        putBigDecimal in interface BigDecimalAccessor
        Parameters:
        value - the BigDecimal value
        buffer - the byte array
        bufOffset - the additional offset into the byte array
        Throws:
        java.lang.IllegalArgumentException - if the value is out of range
      • equals

        public boolean equals​(java.math.BigDecimal a,
                              java.math.BigDecimal b)
        Compare two BigDecimal instances, possibly null, for equality.
        Parameters:
        a - BigDecimal
        b - BigDecimal
        Returns:
        boolean true if equal, false otherwise