code: public void visitCobolPrimitiveType(CobolPrimitiveType < ? > type,
              PrimitiveTypeHandler callback) throws FromCobolException {
  
          if (extraOffset > 0) {
              lastPos += extraOffset;
              extraOffset = 0;
          }
          
          if (lastPos >= length) {
              if (isDebugEnabled) {
                  log.debug(getCurFieldFullCobolName() + " past maximum length");
              }
              return;
          }
  
          cobolNamesStack.push(type.getCobolName());
          callback.preVisit(type);
  
          FromHostPrimitiveResult < ? > result = type.fromHost(cobolContext,
                  hostData, lastPos);
          if (result.isSuccess()) {
              lastPos += type.getBytesLen();
          } else {
              throw new FromCobolException(result.getErrorMessage(),
                      getCurFieldFullCobolName(), type);
          }
  
          // Keep those values that might be needed later
          if (type.isOdoObject() || isCustomVariable(type, curFieldName)) {
              putVariable(curFieldName, result.getValue());
          }
          
          if (isDebugEnabled) {
              log.debug(getCurFieldFullCobolName() + "=" + result.getValue());
          }
  
          callback.postVisit(type, result.getValue());
          cobolNamesStack.pop();
  
      }
docs: Visit a primitive type performing the actual conversion to a java object.
  <p/>
  If there is an extra offset left over by a previous item, adjust the
  position accordingly.
  
  @param type the primitive type
  @param callback a function that is invoked after the primitive type has
  been visited
  @throws FromCobolException