# File lib/edi4r/edifact.rb, line 1097
    def initialize( p, user_par={} )
      super( p, user_par )

      # First param is either a hash or segment UNH
      # - If Hash:    Build UNH from given parameters
      # - If Segment: Extract some crucial parameters
      if user_par.is_a? Hash
        preset_msg( user_par )
        par = {
          :d0065 => @name, :d0052=> @version, :d0054=> @release, 
          :d0051 => @resp_agency, :d0057 => @subset, :is_iedi => root.is_iedi?
        }
        @maindata = EDI::Dir::Directory.create(root.syntax, par )
 
        if root.is_iedi?
          @header = new_segment('UIH')
          @trailer = new_segment('UIT')
          cde = @header.cS306
#          cde.d0113 = @sub_id
          @header.d0340 = p.messages_created
        else
          @header = new_segment('UNH')
          @trailer = new_segment('UNT')
          cde = @header.cS009
          @header.d0062 = p.messages_created
        end
        cde.d0065 = @name
        cde.d0052 = @version
        cde.d0054 = @release
        cde.d0051 = @resp_agency
        cde.d0057 = @subset

      elsif user_par.is_a? Segment
        @header = user_par
        raise "UNH expected, #{@header.name} found!" if @header.name != 'UNH'
        # I-EDI support to be added!
        @header.parent = self
        @header.root = self.root
        @trailer = Segment.new(root, 'UNT') # temporary
        s009 = @header.cS009
        @name = s009.d0065
        @version = s009.d0052
        @release = s009.d0054
        @resp_agency = s009.d0051
        @subset = s009.d0057
        par = {
          :d0065 => @name, :d0052=> @version, :d0054=> @release, 
          :d0051 => @resp_agency, :d0057 => @subset, :is_iedi => root.is_iedi?
        }
        @maindata = EDI::Dir::Directory.create(root.syntax, par )
      else
        raise "First parameter: Illegal type!"
      end

      @trailer.d0074 = 2 if @trailer  # Just UNH and UNT so far
    end