/** * For elementary COBOL data items, this translates COBOL properties to PDI field properties. * * @param binding the elementary COBOL data item * @param prefix the parents names (space if root) * @param suffix the index for array items * @param redefined true if this field is in a redefined sub-structure * @return a PDI field */ public static CobFileInputField toField( final List<CobFileInputField> fields, final ICobolBinding binding, final String prefix, final String suffix, final boolean redefined) { CobFileInputField field = new CobFileInputField(); field.setName(newName(fields, binding.getBindingName(), prefix, suffix)); if (binding instanceof ICobolNumericBinding || binding instanceof ICobolArrayNumericBinding) { field.setPrecision(binding.getFractionDigits()); } else { field.setPrecision(-1); } field.setLength(-1); field.setTrimType(ValueMetaInterface.TRIM_TYPE_NONE); if (binding instanceof ICobolStringBinding) { field.setType(ValueMetaInterface.TYPE_STRING); field.setLength((binding.getByteLength())); field.setTrimType(ValueMetaInterface.TRIM_TYPE_RIGHT); } else if (binding instanceof ICobolArrayStringBinding) { field.setType(ValueMetaInterface.TYPE_STRING); field.setLength(((ICobolArrayBinding) binding).getItemByteLength()); field.setTrimType(ValueMetaInterface.TRIM_TYPE_RIGHT); } else if (binding instanceof ICobolNumericBinding || binding instanceof ICobolArrayNumericBinding) { if (binding.getFractionDigits() > 0) { field.setType(ValueMetaInterface.TYPE_BIGNUMBER); } else { field.setType(ValueMetaInterface.TYPE_INTEGER); } } else if (binding instanceof ICobolDoubleBinding || binding instanceof ICobolArrayDoubleBinding) { field.setType(ValueMetaInterface.TYPE_NUMBER); } else if (binding instanceof ICobolFloatBinding || binding instanceof ICobolArrayFloatBinding) { field.setType(ValueMetaInterface.TYPE_NUMBER); } else if (binding instanceof ICobolDbcsBinding || binding instanceof ICobolNationalBinding) { field.setType(ValueMetaInterface.TYPE_STRING); field.setLength((binding.getByteLength() / 2)); field.setTrimType(ValueMetaInterface.TRIM_TYPE_RIGHT); } else if (binding instanceof ICobolArrayDbcsBinding || binding instanceof ICobolArrayNationalBinding) { field.setType(ValueMetaInterface.TYPE_STRING); field.setLength(((ICobolArrayBinding) binding).getItemByteLength() / 2); field.setTrimType(ValueMetaInterface.TRIM_TYPE_RIGHT); } else if (binding instanceof ICobolOctetStreamBinding) { field.setType(ValueMetaInterface.TYPE_BINARY); field.setLength((binding.getByteLength())); } else if (binding instanceof ICobolArrayOctetStreamBinding) { field.setType(ValueMetaInterface.TYPE_BINARY); field.setLength(((ICobolArrayBinding) binding).getItemByteLength()); } else { field.setType(ValueMetaInterface.TYPE_NONE); } field.setFormat(""); field.setCurrencySymbol(""); field.setDecimalSymbol(""); field.setGroupSymbol(""); field.setRedefined(redefined); return field; }