code: protected void setDigitsAndSign(final String picture,
              final char currencySymbol, final boolean decimalPointIsComma) {
  
          char decimalPoint = (decimalPointIsComma) ? ',' : '.';
  
          /*
           * Look for the integer part (digits before the decimal point) Decimal
           * point is virtual or not.
           */
          int iV = picture.indexOf('V');
          if (iV == -1) {
              iV = picture.indexOf('v');
          }
          if (iV == -1) {
              iV = picture.indexOf(decimalPoint);
          }
          Map < Character, Integer > intCharNum;
          Map < Character, Integer > decCharNum;
          if (iV > 0) {
              intCharNum = PictureUtil.getPictureCharOccurences(
                      picture.substring(0, iV), currencySymbol);
              decCharNum = PictureUtil.getPictureCharOccurences(
                      picture.substring(iV), currencySymbol);
              _fractionDigits = getMaxDigits(decCharNum, currencySymbol);
              _totalDigits = getMaxDigits(intCharNum, currencySymbol)
                      + _fractionDigits;
          } else {
              intCharNum = PictureUtil.getPictureCharOccurences(picture,
                      currencySymbol);
              _fractionDigits = 0;
              _totalDigits = getMaxDigits(intCharNum, currencySymbol);
          }
  
          _isSigned = ((intCharNum.get('S') + intCharNum.get('+') + intCharNum
                  .get('-')) > 0) ? true : false;
  
      }
docs: Extracts total number of digits, fraction digits and sign from a picture
  clause.
  <p/>
  Works for zoned decimals, binary and packed decimal.
  <p/>
  
  @param picture a purely numeric picture clause
  @param currencySymbol the currency symbol
  @param decimalPointIsComma true if decimal point is comma