Module ibm.jzos

Class PackedDecimalAsBigIntegerField

java.lang.Object
com.ibm.jzos.fields.PackedDecimalAsBigIntegerField
All Implemented Interfaces:
BigIntegerAccessor, Field

public class PackedDecimalAsBigIntegerField extends Object implements BigIntegerAccessor
A packed decimal Field up to 31 digits with BigInteger accessors.

Since:
2.1.0
  • Constructor Summary

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

    Modifier and Type
    Method
    Description
    boolean
    Compare two BigInteger instances, possibly null, for equality.
    getBigInteger(byte[] buffer)
    Answer a BigInteger value from the given byte array buffer, at the offset of this field.
    getBigInteger(byte[] buffer, int bufOffset)
    Answer a BigInteger value from the given byte array buffer, at the bufOffset + offset of this field.
    int
    Answer the length of the field described by the receiver
    int
    Answer the offset of this field into some array of bytes
    int
    Answer the number of decimal digits of precision.
    int
     
    boolean
     
    void
    putBigInteger(BigInteger value, byte[] buffer)
    Put a BigInteger value into the given byte array buffer, at the offset of this field.
    void
    putBigInteger(BigInteger value, byte[] buffer, int bufOffset)
    Put a BigInteger value 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 Details

    • PackedDecimalAsBigIntegerField

      public PackedDecimalAsBigIntegerField(int offset, int precision, int scale, boolean signed)
      Construct an instance
      Parameters:
      offset - position of this field
      precision - total number of digits <= 31. If even, this value is rounded up to the next odd number.
      scale - zero or a negative number indicating implied extra digits in the whole number portion of the field
      signed - if true the last nibble is a sign
  • Method Details

    • 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
    • setOffset

      public void setOffset(int offset)
      Specified by:
      setOffset in interface Field
      See Also:
    • getPrecision

      public int getPrecision()
      Answer the number of decimal digits of precision.
      Returns:
      int
    • getBigInteger

      public BigInteger getBigInteger(byte[] buffer) throws IllegalArgumentException
      Answer a BigInteger value 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:
      getBigInteger in interface BigIntegerAccessor
      Parameters:
      buffer - the byte array
      Returns:
      BigInteger
      Throws:
      IllegalArgumentException - if the field contains an invalid sign
    • getBigInteger

      public BigInteger getBigInteger(byte[] buffer, int bufOffset) throws IllegalArgumentException
      Answer a BigInteger value 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:
      getBigInteger in interface BigIntegerAccessor
      Parameters:
      buffer - the byte array
      bufOffset - the additional offset into the byte array
      Returns:
      BigInteger
      Throws:
      IllegalArgumentException - if the field contains an invalid sign
    • putBigInteger

      public void putBigInteger(BigInteger value, byte[] buffer) throws IllegalArgumentException
      Put a BigInteger value 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:
      putBigInteger in interface BigIntegerAccessor
      Parameters:
      value - the BigInteger value
      buffer - the byte array
      Throws:
      IllegalArgumentException - if the value is out of range
    • putBigInteger

      public void putBigInteger(BigInteger value, byte[] buffer, int bufOffset) throws IllegalArgumentException
      Put a BigInteger value 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:
      putBigInteger in interface BigIntegerAccessor
      Parameters:
      value - the BigInteger value
      buffer - the byte array
      bufOffset - the additional offset into the byte array
      Throws:
      IllegalArgumentException - if the value is out of range
    • equals

      public boolean equals(BigInteger a, BigInteger b)
      Compare two BigInteger instances, possibly null, for equality.
      Parameters:
      a - BigInteger
      b - BigInteger
      Returns:
      boolean true if equal, false otherwise
    • getScale

      public int getScale()
    • isSigned

      public boolean isSigned()