Initial commit
diff --git a/ISUP_Q.762_CNL113365.tpd b/ISUP_Q.762_CNL113365.tpd
new file mode 100644
index 0000000..11c8b99
--- /dev/null
+++ b/ISUP_Q.762_CNL113365.tpd
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017 Ericsson
+
+  All rights reserved. This program and the accompanying materials
+  are made available under the terms of the Eclipse Public License v1.0
+  which accompanies this distribution, and is available at
+  http://www.eclipse.org/legal/epl-v10.html
+
+
+   File:               ISUP_Q.762_CNL113365.tpd
+   Description:        tpd project file
+   Rev:                R8A
+   Prodnr:             CNL 113 365
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>ISUP_Q.762_CNL113365</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="ProtocolModules_Common" projectLocationURI="../COMMON/ProtocolModules_Common.tpd"/>
+  </ReferencedProjects>
+  <Folders>
+    <FolderResource projectRelativePath="src" relativeURI="src"/>
+  </Folders>
+  <Files>
+    <FileResource projectRelativePath="src/ISUP_EncDec.cc" relativeURI="src/ISUP_EncDec.cc"/>
+    <FileResource projectRelativePath="src/ISUP_Types.ttcn" relativeURI="src/ISUP_Types.ttcn"/>
+  </Files>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <generateInternalMakefile>true</generateInternalMakefile>
+          <GNUMake>true</GNUMake>
+          <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+          <targetExecutable>bin/ISUP_Q.762_CNL113365</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin</workingDirectory>
+        </LocalBuildSettings>
+        <NamingCoventions>
+          <moduleParameter>tsp.*</moduleParameter>
+        </NamingCoventions>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/demo/ISUP_Mapping.ttcn b/demo/ISUP_Mapping.ttcn
new file mode 100644
index 0000000..509717a
--- /dev/null
+++ b/demo/ISUP_Mapping.ttcn
@@ -0,0 +1,128 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+//  File:     ISUP_Mapping.ttcn
+//  Rev:      R8A
+//  Prodnr:   CNL 113 365
+//  Updated:  2006-05-10
+//  Contact:  http://ttcn.ericsson.se
+///////////////////////////////////////////////////////////////////////////////
+module ISUP_Mapping
+{
+ import from MTP3asp_PortType all;
+ import from MTP3asp_Types all;
+ import from ISUP_Types all;
+
+group Types
+{
+  type record MSC_ISUP_MTP3_parameters
+    {
+     MTP3_Field_sio    sio,
+     integer           opc,
+     integer           dpc,
+     integer           sls
+    }
+
+group PortTypes
+{
+  //*************************************************************************
+  //*                      ISUP port types                                  *
+  //*************************************************************************
+  type port MTP3asp_ISUP_PT message
+    {
+     inout    PDU_ISUP;
+    } with {extension "internal"}
+
+  type port MTC_ISUP_PT message    //  Coordination message
+    {
+     inout    charstring;
+     inout    octetstring;
+    } with {extension "internal"}
+}//end group PortTypes
+
+
+group ComponentTypes
+{
+  //*************************************************************************
+  //*                       ISUP Component types                            *
+  //*************************************************************************
+  type component ISUP_CT
+    {
+    //========================Component constants===========================
+
+    //========================Component variables===========================
+     var PDU_ISUP           v_PDU_ISUP;
+
+    //========================Component Timers-=============================
+
+    //========================Component Port Declarations====================
+     port MTC_ISUP_PT       MTC_ISUP_PORT;      //up
+     port MTP3asp_ISUP_PT   MTP3_ISUP_PORT;     //down
+    } // end component type definition
+
+  //*************************************************************************
+  //*                       ISUP EncDec component                           *
+  //*************************************************************************
+  type component ISUP_EncDec_CT
+    {
+    //========================Component Port Declarations====================
+     port MTP3asp_ISUP_PT   MTP3_ISUP_PORT;  //<= SP_PT=_PT
+     port MTP3asp_PT        MTP3_PORT;
+    } // end component type definition
+}//end group ComponentTypes
+
+}//end group Types
+
+
+//*************************************************************************
+//*                       ISUP EncDec component behaviour                 *
+//*************************************************************************
+function f_ISUP_EncDecComp_Behaviour
+     ( MSC_ISUP_MTP3_parameters pl_address_ISUP )  runs on ISUP_EncDec_CT
+  {
+  var  ASP_MTP3_TRANSFERind   vl_ASP_MTP3_TRANSFERind;
+  var  PDU_ISUP               vl_PDU_ISUP;
+  pl_address_ISUP.sio.si := '0101'B;
+
+  while (true)
+    {
+    alt
+      {
+      [] MTP3_ISUP_PORT.receive ( PDU_ISUP : ?) -> value vl_PDU_ISUP
+        {
+        MTP3_PORT.send (t_ASP_MTP3_TRANSFERreq
+                        (pl_address_ISUP.sio,
+                         pl_address_ISUP.opc,
+                         pl_address_ISUP.dpc,
+                         pl_address_ISUP.sls,
+                         enc_PDU_ISUP(vl_PDU_ISUP)));
+        repeat;
+        }
+
+      // receive message from below (to be decoded)
+      [] MTP3_PORT.receive (tr_ASP_MTP3_TRANSFERind_sio
+                            (pl_address_ISUP.sio.ni,
+                             ?,          //priority: no filtering
+                             pl_address_ISUP.sio.si,
+                             ?,
+                             ?,
+                             ?,
+                             ? )) -> value  vl_ASP_MTP3_TRANSFERind
+        {
+        MTP3_ISUP_PORT.send (dec_PDU_ISUP(vl_ASP_MTP3_TRANSFERind.data));
+        repeat;
+        }
+
+      [] MTP3_PORT.receive (t_ASP_MTP3_TRANSFERind( ?, ?, ?, ?, ? ))
+        { log("Invalid SIO:  MESSAGE dropped!!!"); }
+      }   //end of alt
+    } // end while
+  }  // end of f_ISUP_EncDecComp_Behaviour
+}
diff --git a/doc/ISUP ITU-T Protocol Modules for TTCN-3 Toolset with TITAN, Function Specification.pdf b/doc/ISUP ITU-T Protocol Modules for TTCN-3 Toolset with TITAN, Function Specification.pdf
new file mode 100644
index 0000000..97dc3d5
--- /dev/null
+++ b/doc/ISUP ITU-T Protocol Modules for TTCN-3 Toolset with TITAN, Function Specification.pdf
Binary files differ
diff --git a/doc/ISUP_Q_PRI.pdf b/doc/ISUP_Q_PRI.pdf
new file mode 100644
index 0000000..fd34ca2
--- /dev/null
+++ b/doc/ISUP_Q_PRI.pdf
Binary files differ
diff --git a/doc/ISUP_Q_UG.pdf b/doc/ISUP_Q_UG.pdf
new file mode 100644
index 0000000..dc00da0
--- /dev/null
+++ b/doc/ISUP_Q_UG.pdf
Binary files differ
diff --git a/src/ISUP_EncDec.cc b/src/ISUP_EncDec.cc
new file mode 100644
index 0000000..c1cde1a
--- /dev/null
+++ b/src/ISUP_EncDec.cc
@@ -0,0 +1,465 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+//  File:		ISUP_EncDec.cc
+//  Rev:                R8A
+//  Prodnr:             CNL 113 365
+//  Updated:            2011-05-10
+//  Contact:            http://ttcn.ericsson.se
+///////////////////////////////////////////////////////////////////////////////
+#include "ISUP_Types.hh"
+
+namespace ISUP__Types {
+
+OCTETSTRING enc__PDU__ISUP(const PDU__ISUP& pdu)
+{
+    if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
+	TTCN_Logger::begin_event(TTCN_DEBUG);
+	TTCN_Logger::log_event("Encoding PDU_ISUP: ");
+	pdu.log();
+	TTCN_Logger::end_event();
+    }
+    
+    TTCN_Buffer buf;
+    pdu.encode(PDU__ISUP_descr_, buf, TTCN_EncDec::CT_RAW);
+    OCTETSTRING ret_val(buf.get_len(), buf.get_data());
+    
+    if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
+	TTCN_Logger::begin_event(TTCN_DEBUG);
+	TTCN_Logger::log_event("PDU_ISUP after encoding: ");
+	ret_val.log();
+	TTCN_Logger::end_event();
+    }
+    return ret_val;
+}
+
+PDU__ISUP dec__PDU__ISUP(const OCTETSTRING& stream)
+{
+    if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
+	TTCN_Logger::begin_event(TTCN_DEBUG);
+	TTCN_Logger::log_event("Decoding PDU_ISUP: ");
+	stream.log();
+	TTCN_Logger::end_event();
+    }
+
+    TTCN_Buffer buf;
+    buf.put_os(stream);
+    PDU__ISUP ret_val;
+    ret_val.decode(PDU__ISUP_descr_, buf, TTCN_EncDec::CT_RAW);
+
+    if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
+	TTCN_Logger::begin_event(TTCN_DEBUG);
+	TTCN_Logger::log_event("Decoded PDU_ISUP: ");
+	ret_val.log();
+	TTCN_Logger::end_event();
+    }
+    return ret_val;
+}
+
+PDU__ISUP dec__PDU__ISUP__noCIC(const OCTETSTRING& stream)
+{
+    if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
+	TTCN_Logger::begin_event(TTCN_DEBUG);
+	TTCN_Logger::log_event("Decoding PDU_ISUP: ");
+	stream.log();
+	TTCN_Logger::end_event();
+    }
+
+    OCTETSTRING mod_stream (int2oct(0,2) + stream);
+    TTCN_Buffer buf;
+    buf.put_os(mod_stream);
+    PDU__ISUP ret_val;
+    ret_val.decode(PDU__ISUP_descr_, buf, TTCN_EncDec::CT_RAW);
+    PDU__ISUP::union_selection_type msg_type = ret_val.get_selection();
+    switch (msg_type)
+    {
+      case PDU__ISUP::ALT_ISUP__ACM:
+      {
+        ret_val.ISUP__ACM().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__ANM:
+      {
+        ret_val.ISUP__ANM().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__APM:
+      {
+        ret_val.ISUP__APM().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__BLO:
+      {
+        ret_val.ISUP__BLO().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__BLA:
+      {
+        ret_val.ISUP__BLA().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__CPG:
+      {
+        ret_val.ISUP__CPG().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__CGB:
+      {
+        ret_val.ISUP__CGB().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__CGBA:
+      {
+        ret_val.ISUP__CGBA().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__CQM:
+      {
+        ret_val.ISUP__CQM().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__CQR:
+      {
+        ret_val.ISUP__CQR().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__GRS:
+      {
+        ret_val.ISUP__GRS().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__GRA:
+      {
+        ret_val.ISUP__GRA().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__CGU:
+      {
+        ret_val.ISUP__CGU().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__CGUA:
+      {
+        ret_val.ISUP__CGUA().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__CRG:
+      {
+        ret_val.ISUP__CRG().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__CFN:
+      {
+        ret_val.ISUP__CFN().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__CON:
+      {
+        ret_val.ISUP__CON().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__COT:
+      {
+        ret_val.ISUP__COT().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__CCR:
+      {
+        ret_val.ISUP__CCR().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__FAC:
+      {
+        ret_val.ISUP__FAC().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__FAA:
+      {
+        ret_val.ISUP__FAA().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__FRJ:
+      {
+        ret_val.ISUP__FRJ().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__FAR:
+      {
+        ret_val.ISUP__FAR().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__FOT:
+      {
+        ret_val.ISUP__FOT().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__IDR:
+      {
+        ret_val.ISUP__IDR().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__IRS:
+      {
+        ret_val.ISUP__IRS().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__INF:
+      {
+        ret_val.ISUP__INF().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__INR:
+      {
+        ret_val.ISUP__INR().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__IAM:
+      {
+        ret_val.ISUP__IAM().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__LPA:
+      {
+        ret_val.ISUP__LPA().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__LOP:
+      {
+        ret_val.ISUP__LOP().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__NRM:
+      {
+        ret_val.ISUP__NRM().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__OLM:
+      {
+        ret_val.ISUP__OLM().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__OPR:
+      {
+        ret_val.ISUP__OPR().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__PAM:
+      {
+        ret_val.ISUP__PAM().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__PRI:
+      {
+        ret_val.ISUP__PRI().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__REL:
+      {
+        ret_val.ISUP__REL().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__RLC:
+      {
+        ret_val.ISUP__RLC().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__RSC:
+      {
+        ret_val.ISUP__RSC().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__RES:
+      {
+        ret_val.ISUP__RES().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__SGM:
+      {
+        ret_val.ISUP__SGM().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__SAM:
+      {
+        ret_val.ISUP__SAM().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__SCB:
+      {
+        ret_val.ISUP__SCB().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__SDM:
+      {
+        ret_val.ISUP__SDM().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__SUS:
+      {
+        ret_val.ISUP__SUS().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__UBL:
+      {
+        ret_val.ISUP__UBL().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__UBA:
+      {
+        ret_val.ISUP__UBA().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__UCIC:
+      {
+        ret_val.ISUP__UCIC().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__UPA:
+      {
+        ret_val.ISUP__UPA().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__UPT:
+      {
+        ret_val.ISUP__UPT().cic() = OMIT_VALUE; break;
+      }
+      case PDU__ISUP::ALT_ISUP__USR:
+      {
+        ret_val.ISUP__USR().cic() = OMIT_VALUE; break;
+      }
+      default:
+        break;
+    }
+    if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
+	TTCN_Logger::begin_event(TTCN_DEBUG);
+	TTCN_Logger::log_event("Decoded PDU_ISUP: ");
+	ret_val.log();
+	TTCN_Logger::end_event();
+    }
+    return ret_val;
+}
+
+INTEGER dec__PDU__ISUP__backtrack__noCIC(const OCTETSTRING& stream, PDU__ISUP& pdu)
+{
+	if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+		TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+		TTCN_Logger::log_event_str("dec_PDU_ISUP_backtrack(): Stream before decoding: ");
+		stream.log();
+		TTCN_Logger::end_event();
+	}
+	TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_WARNING);
+	TTCN_EncDec::clear_error();
+	OCTETSTRING mod_stream (int2oct(0,2) + stream);
+    TTCN_Buffer ttcn_buffer;
+    ttcn_buffer.put_os(mod_stream);
+    pdu.decode(PDU__ISUP_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
+    	
+	
+	if (TTCN_EncDec::get_last_error_type() == TTCN_EncDec::ET_NONE) {
+		
+		PDU__ISUP::union_selection_type msg_type = pdu.get_selection();
+	    switch (msg_type)
+	    {
+	      case PDU__ISUP::ALT_ISUP__ACM:
+	      {
+	    	  pdu.ISUP__ACM().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__ANM:
+	      {
+	    	  pdu.ISUP__ANM().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__BLO:
+	      {
+	    	  pdu.ISUP__BLO().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__BLA:
+	      {
+	    	  pdu.ISUP__BLA().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__CPG:
+	      {
+	    	  pdu.ISUP__CPG().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__CGB:
+	      {
+	    	  pdu.ISUP__CGB().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__CGBA:
+	      {
+	    	  pdu.ISUP__CGBA().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__GRS:
+	      {
+	    	  pdu.ISUP__GRS().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__GRA:
+	      {
+	    	  pdu.ISUP__GRA().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__CGU:
+	      {
+	    	  pdu.ISUP__CGU().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__CGUA:
+	      {
+	    	  pdu.ISUP__CGUA().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__CQM:
+	      {
+	    	  pdu.ISUP__CQM().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__CQR:
+	      {
+	    	  pdu.ISUP__CQR().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__CFN:
+	      {
+	    	  pdu.ISUP__CFN().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__COT:
+	      {
+	    	  pdu.ISUP__COT().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__CCR:
+	      {
+	    	  pdu.ISUP__CCR().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__FAC:
+	      {
+	    	  pdu.ISUP__FAC().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__FOT:
+	      {
+	    	  pdu.ISUP__FOT().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__INF:
+	      {
+	    	  pdu.ISUP__INF().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__INR:
+	      {
+	    	  pdu.ISUP__INR().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__IAM:
+	      {
+	    	  pdu.ISUP__IAM().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__LPA:
+	      {
+	    	  pdu.ISUP__LPA().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__REL:
+	      {
+	    	  pdu.ISUP__REL().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__RLC:
+	      {
+	    	  pdu.ISUP__RLC().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__RSC:
+	      {
+	    	  pdu.ISUP__RSC().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__RES:
+	      {
+	    	  pdu.ISUP__RES().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__SUS:
+	      {
+	    	  pdu.ISUP__SUS().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__UBL:
+	      {
+	    	  pdu.ISUP__UBL().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__UBA:
+	      {
+	    	  pdu.ISUP__UBA().cic() = OMIT_VALUE; break;
+	      }
+	      case PDU__ISUP::ALT_ISUP__UCIC:
+	      {
+	    	  pdu.ISUP__UCIC().cic() = OMIT_VALUE; break;
+	      }
+	      default:
+	        break;
+	    }
+		
+		
+		if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+			TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+			TTCN_Logger::log_event_str("dec_PDU_ISUP_backtrack_noCIC(): Decoded @ISUP_Types.PDU_ISUP: ");
+			pdu.log();
+			TTCN_Logger::end_event();
+		}
+		
+		if (ttcn_buffer.get_pos() < ttcn_buffer.get_len() && TTCN_Logger::log_this_event(TTCN_WARNING)) {
+			ttcn_buffer.cut();
+			OCTETSTRING remaining_stream;
+			ttcn_buffer.get_string(remaining_stream);
+			TTCN_Logger::begin_event(TTCN_WARNING);
+			TTCN_Logger::log_event_str("dec_PDU_ISUP_backtrack(): Warning: Data remained at the end of the stream after successful decoding: ");
+			remaining_stream.log();
+			TTCN_Logger::end_event();
+		}
+		return 0;
+	} else return 1;
+}
+
+}//namespace
diff --git a/src/ISUP_Q.762_CNL113365.grp b/src/ISUP_Q.762_CNL113365.grp
new file mode 100644
index 0000000..c752889
--- /dev/null
+++ b/src/ISUP_Q.762_CNL113365.grp
@@ -0,0 +1,26 @@
+<!--
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+//  File:     ISUP_Q.762_CNL113365.grp
+//  Rev:      R8A
+//  Prodnr:   CNL 113 365
+//  Updated:  2012-11-08
+//  Contact:  http://ttcn.ericsson.se
+///////////////////////////////////////////////////////////////////////////////
+-->
+
+<!DOCTYPE TITAN_GUI_FileGroup_file>
+<FileGroup TITAN_version="2.2.pl0" >
+    <File_Group name="ISUP_Q.762_CNL113365" >
+        <File path="ISUP_EncDec.cc" />
+        <File path="ISUP_Types.ttcn" />
+    </File_Group>
+</FileGroup>
diff --git a/src/ISUP_Types.ttcn b/src/ISUP_Types.ttcn
new file mode 100644
index 0000000..cf0d882
--- /dev/null
+++ b/src/ISUP_Types.ttcn
@@ -0,0 +1,4092 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+//  File:     ISUP_Types.ttcn
+//  Rev:      R8A
+//  Prodnr:   CNL 113 365
+//  Updated:  2011-05-10
+//  Contact:  http://ttcn.ericsson.se
+///////////////////////////////////////////////////////////////////////////////
+//
+// This product is based on the following documents:
+//************************************************************************
+// Ericsson  Reference for ITU-T : 2/155 17-FAY 112 020/4 Uen, ITU-T ISDN User
+//                                 Part, Section A:Formats and Codes
+// Standard ITU-T Reference ISUP : Q.763, Signaling System No. 7 - ISDN User
+//                                 Part formats and codes
+//************************************************************************
+// EED/X 1056-174 Uen - Global Call reference for ISUP and BICC, MSC R12
+
+///////////////////////////////////////////////////////////////////////////////
+//     ! ! ! ! ! ! !        W A R N I N G         ! ! ! ! ! ! !              //
+// From R2A02 the parameters are in 'set' and not in 'set of'. It has the    //
+// consequence, that the parameters will be sent out in fix order (as defined//
+// in set) so the tester cannot modify the order of the parameters with      //
+// modification the order in the template. If the order is important, then   //
+// the previous version of this protocol module should be used.              //
+///////////////////////////////////////////////////////////////////////////////
+
+//----------------------------------------------------------
+//----------------------------------------------------------
+//The following modification were done from R1A03 to R2A02:
+//----------------------------------------------------------
+//----------------------------------------------------------
+// New parameter:
+//Calling_name_identity
+//Global_call_reference
+//-------------------------------------------------
+// Modified parameter:
+//Calling_geodetic_location: Polygon updated
+//CCSS_parameter : replaces CCBS_parameter
+//Charged_party_identification : converted into record
+//Forward_GVNS: TNRN_Spare->BIT1, lengths->INT4b, RAW coding attributes
+//Loop_prevention_indicators : field splitted
+//Message_compatibility_information: field name updated
+//Network_routing_number: incorrect fields
+//Network_specific_facility : was not possible to decode
+//Optional_backward_call_indicators: field name updated
+//Pivot_counter: PivCount->BIT5
+//Pivot_routing_backward_information : converted into record
+//Pivot_routing_forward_information : converted into record
+//Redirect_backward_information : converted into record
+//Redirect_forward_information : converted into record
+//Redirecting_number : field name updated
+//Redirection_information : optional keywords added
+//Tariff_indicator : optional keywords added
+//User_service_information: redesigned
+//User_service_information_prime: redesigned
+//User_teleservice_information : optional keywords added
+//-------------------------------------------------
+// Hexorder modified in parameter:
+//Call_transfer_number
+//Called_IN_number
+//Called_directory_number
+//Called_party_number
+//Calling_party_number
+//Connected_number
+//Forward_GVNS
+//Generic_number
+//HTR_information
+//Location_number
+//Network_routing_number
+//Original_called_number
+//Original_called_IN_number
+//Redirecting_number
+//Redirection_number
+//Subsequent_number
+//-------------------------------------------------
+// Parameter, which should be modified, but due to backward compatibility
+// it is not modified:
+//Parameter_compatibility_information
+//-------------------------------------------------
+//"set of" was changed to "set" with the following consequence in parameter:
+//-Every optional parameter is extended the id and length.
+//-The multiple parameters are put into a set with name <parameter_name>_set
+//-The optional parameters of the messages are put into set where every field
+// is optional.
+//-For mandatory fix long parameters new type is created via removing id and
+// length
+//-For mandatory variable long parameters new type is created via removing id
+//-For parameters which can be also mandatory and optional, the end of name of
+// the optional version is extended with an _OPT
+
+module  ISUP_Types
+{
+ import from General_Types all;
+
+ external function enc_PDU_ISUP(in PDU_ISUP pdu) return octetstring;
+ external function dec_PDU_ISUP(in octetstring stream) return PDU_ISUP;
+ external function dec_PDU_ISUP_noCIC(in octetstring stream) return PDU_ISUP;
+ external function enc_PDU_ISUP_fast(in PDU_ISUP pdu, out octetstring stream)
+ with { extension "prototype(fast) encode(RAW)" };
+ external function dec_PDU_ISUP_backtrack(in octetstring stream, out PDU_ISUP pdu) return integer
+ with { extension "prototype(backtrack) decode(RAW)" };
+ external function dec_PDU_ISUP_backtrack_noCIC(in octetstring stream, out PDU_ISUP pdu) return integer;
+
+//************************************************************************
+//  ISUP parameters
+//************************************************************************
+group ISUP_parameters
+{
+
+//************************************************************************
+// Circuit Identification Code
+// Ericsson Specification Reference: Chapter 2.1.3
+// Standard Reference ISUP         : Chapter 1.2
+//************************************************************************
+  type record Circuit_identification_code
+    {
+     BIT12 CIC, // Circuit identification code
+     BIT4 Spare // Spare
+    } with { variant "" };
+
+
+//************************************************************************
+// Message Type
+// Ericsson Specification Reference: Chapter 2.1.3
+// Standard Reference ISUP         : Chapter 1.3
+//************************************************************************
+  type bitstring ISUP_Message_type length(8)
+    with { variant "FIELDLENGTH(8)" };
+
+
+//************************************************************************
+// Pointer
+// Ericsson Specification Reference: Chapter 2.1.7
+// Standard Reference ISUP         : Chapter 1.9
+//************************************************************************
+  type integer Pointer (0..255)
+    with { variant "FIELDLENGTH(8)" };
+	
+
+//************************************************************************
+// End Of Optional Parameters Indicator
+// Ericsson Specification Reference: Chapter 2.3.3.30
+// Standard Reference ISUP         : Chapter 3.20
+//************************************************************************
+  type octetstring End_of_optional_parameters_indicator length(1)
+    with { variant "FIELDLENGTH(1)" };
+
+
+//************************************************************************
+// Access Delivery Information
+// Ericsson Specification Reference: Chapter 2.3.3.1
+// Standard Reference ISUP         : Chapter 3.2
+//************************************************************************
+  type record Access_delivery_information       // 3.2 / Q.763
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 AccessDel, // Access delivery indicator
+     BIT7 Spare      // Spare
+    } with { variant "PRESENCE( id = '00101110'B)";
+             variant (lengthField)"LENGTHTO(AccessDel,Spare)";
+           };
+
+
+//************************************************************************
+// Access Transport
+// Ericsson Specification Reference: Chapter 2.3.3.2
+// Standard Reference ISUP         : Chapter 3.3
+//************************************************************************
+  type record Access_transport
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCTN ATP_field
+    } with { variant "PRESENCE( id = '00000011'B)";
+             variant (lengthField)"LENGTHTO(ATP_field)";
+           };
+
+
+//************************************************************************
+// Additional Charging Information
+// Ericsson Specification Reference: Chapter 2.3.3.3
+//************************************************************************
+  type record Additional_charging_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT8 AddChargeInfo // Additional charging information
+    } with { variant "PRESENCE( id = '11111010'B)";
+             variant (lengthField)"LENGTHTO(AddChargeInfo)";
+           };
+
+
+//************************************************************************
+// Additional Routing Information
+// Ericsson Specification Reference: Chapter 2.3.3.4
+//************************************************************************
+  type record Additional_routing_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT2 AddRoutInfo // Additional routing information
+    } with { variant "PRESENCE( id = '11111011'B)";
+             variant (lengthField)"LENGTHTO(AddRoutInfo)";
+           };
+
+
+//************************************************************************
+// Application Transport Parameter
+// Standard Reference ISUP         : Chapter 3.82
+//************************************************************************
+  type record Application_transport_parameter
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 applicationContextIdOct1, // Application context identifier
+     BIT1 extInd1,                  // Extension indicator
+     BIT7 applicationContextIdOct1a optional, // Application context identifier
+     BIT1 extInd1a optional,                  // Extension indicator
+     BIT1 releaseCallInd,      // Release call indicator
+     BIT1 sendNotificationInd, // Send notification indicator
+     BIT5 spare,               // Spare
+     BIT1 extInd2,             // Extension indicator
+     BIT6 aPMSegmentationInd,    // APM segmentation indicator
+     BIT1 sequenceInd,           // Sequence indicator
+     BIT1 extInd3,               // Extension indicator
+     BIT7 segmentationLocalRef optional, // Segmentation local reference
+     BIT1 extInd3a optional,             // Extension indicator
+     OCTN aPMUserInfo // Encapsulated application information
+    } with { variant "EXTENSION_BIT_GROUP (yes, applicationContextIdOct1,
+                                                extInd1a)";
+             variant "EXTENSION_BIT_GROUP (yes, aPMSegmentationInd,
+                                                extInd3a)";
+             variant "PRESENCE( id = '01111000'B)";
+             variant (lengthField)"LENGTHTO(applicationContextIdOct1,extInd1,
+                                            applicationContextIdOct1a,extInd1a,
+                                            releaseCallInd,sendNotificationInd,
+                                            spare,extInd2,aPMSegmentationInd,
+                                            sequenceInd,extInd3,
+                                            segmentationLocalRef,extInd3a,
+                                            aPMUserInfo)";
+           };
+
+  type set of Application_transport_parameter
+                         Application_transport_parameter_set
+      with { variant "" };
+
+
+//************************************************************************
+// Automatic Congestion Level
+// Ericsson Specification Reference: Chapter 2.3.3.5
+// Standard Reference ISUP         : Chapter 3.4
+//************************************************************************
+  type record Automatic_congestion_level
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT8 CongLevel
+    } with { variant "PRESENCE( id = '00100111'B)";
+             variant (lengthField)"LENGTHTO(CongLevel)";
+           };
+
+
+//************************************************************************
+// Backward Call Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.6
+// Standard Reference ISUP         : Chapter 3.5
+//************************************************************************
+  type record Backward_call_indicators_OPT
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 ChargeInd,            // Charge indicator
+     BIT2 CalledPartyStatusInd, // Called party's status indicator
+     BIT2 CalledPartyCatInd,    // Called party's category indicator
+     BIT2 EndToEndInd,          // End-to-end method indicator
+     BIT1 InterworkingInd,   // Interworking indicator
+     BIT1 EndToEndInfoInd,   // End-to-end INFormation indicator
+     BIT1 ISUPInd,           // ISDN User Part indicator
+     BIT1 HoldingInd,        // Holding indicator
+     BIT1 ISDNAccessInd,     // ISDN access indicator
+     BIT1 EchoControlDevInd, // Echo CONtrol device indicator
+     BIT2 SCCPMethodInd      // SCCP method indicator
+    } with { variant "PRESENCE( id = '00010001'B)";
+             variant (lengthField)"LENGTHTO(ChargeInd,CalledPartyStatusInd,
+                                            CalledPartyCatInd,EndToEndInd,
+                                            InterworkingInd,EndToEndInfoInd,
+                                            ISUPInd,HoldingInd,ISDNAccessInd,
+                                            EchoControlDevInd,SCCPMethodInd)";
+           };
+
+  type record Backward_call_indicators    
+    {
+     BIT2 ChargeInd,            // Charge indicator
+     BIT2 CalledPartyStatusInd, // Called party's status indicator
+     BIT2 CalledPartyCatInd,    // Called party's category indicator
+     BIT2 EndToEndInd,          // End-to-end method indicator
+     BIT1 InterworkingInd,   // Interworking indicator
+     BIT1 EndToEndInfoInd,   // End-to-end INFormation indicator
+     BIT1 ISUPInd,           // ISDN User Part indicator
+     BIT1 HoldingInd,        // Holding indicator
+     BIT1 ISDNAccessInd,     // ISDN access indicator
+     BIT1 EchoControlDevInd, // Echo CONtrol device indicator
+     BIT2 SCCPMethodInd      // SCCP method indicator
+    } with { variant ""};
+
+//************************************************************************
+// Backward GVNS
+// Ericsson Specification Reference: Chapter 2.3.3.7
+// Standard Reference ISUP         : Chapter 3.62
+//************************************************************************
+  type record Backward_GVNS
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 TerminatingAccessInd, // Terminating access indicator
+     BIT5 Spare,                // Spare
+     BIT1 ExtensionInd          // Extension indicator
+    } with { variant "PRESENCE( id = '01001101'B)";
+             variant (lengthField)"LENGTHTO(TerminatingAccessInd,Spare,
+                                            ExtensionInd)";
+           };
+
+
+//************************************************************************
+// Call Diversion Information
+// Ericsson Specification Reference: Chapter 2.3.3.8
+// Standard Reference ISUP         : Chapter 3.6
+//************************************************************************
+  type record Call_diversion_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT3 NotificationSubscriptionOptions, // Notification subscription options
+     BIT4 RedirectionReason,               // Redirecting reason
+     BIT1 Spare                            // Spare
+    } with { variant "PRESENCE( id = '00110110'B)";
+             variant (lengthField)"LENGTHTO(NotificationSubscriptionOptions,
+                                            RedirectionReason,Spare)";
+           };
+
+
+//************************************************************************
+// Call Diversion Treatment Information
+// Ericsson Specification Reference: Chapter 2.3.3.9
+// Standard Reference ISUP         : Chapter 3.72
+//************************************************************************
+  type record Call_diversion_treatment_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 CallDivertedInd, // Call to be diverted indicator
+     BIT5 Spare,           // Spare
+     BIT1 ExtensionInd     // Extension indicator
+    } with { variant "PRESENCE( id = '01101110'B)";
+             variant(lengthField)"LENGTHTO(CallDivertedInd,Spare,ExtensionInd)";
+           };
+
+
+//************************************************************************
+// Call History Information
+// Ericsson Specification Reference: Chapter 2.3.3.10
+// Standard Reference ISUP         : Chapter 3.7
+//************************************************************************
+  type record Call_history_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT2 PropagatDelayValue
+    } with { variant "PRESENCE( id = '00101101'B)";
+             variant (lengthField)"LENGTHTO(PropagatDelayValue)";
+           };
+
+
+//************************************************************************
+// Call Offering Treatment Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.11
+// Standard Reference ISUP         : Chapter 3.74
+//************************************************************************
+  type record Call_offering_treatment_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 CallOfferedInd, // Call to be offered indicator
+     BIT5 Spare,          // Spare
+     BIT1 ExtensionInd    // Extension indicator
+    } with { variant "PRESENCE( id = '01110000'B)";
+             variant (lengthField)"LENGTHTO(CallOfferedInd,Spare,ExtensionInd)";
+           };
+
+
+//************************************************************************
+// Call Reference
+// Standard Reference ISUP         : Chapter 3.8
+//************************************************************************
+  type record Call_reference
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT5 CRef_contents // Call identity
+    } with { variant "PRESENCE( id = '00000001'B)";
+             variant (lengthField)"LENGTHTO(CRef_contents)";
+           };
+
+
+//************************************************************************
+// Call Transfer Number
+// Ericsson Specification Reference: Chapter 2.3.3.12
+// Standard Reference ISUP         : Chapter 3.64
+//************************************************************************
+  type record Call_transfer_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd, // Nature of address indicator
+     BIT1 OddEven,         // Odd/even indicator
+     BIT2 ScreeningInd,       // Screening indicator
+     BIT2 AddrPresentRestInd, // Address presentation REStricted indicator
+     BIT3 NumberingPlanInd,   // Numbering plan indicator
+     BIT1 Spare,              // Spare
+     HEX1_32 AddrSignals optional,  // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '01000101'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,
+                                            ScreeningInd,AddrPresentRestInd,
+                                            NumberingPlanInd,Spare,
+                                            AddrSignals,Filler)";
+           };
+
+
+//************************************************************************
+// Call Transfer Reference
+// Ericsson Specification Reference: Chapter 2.3.3.13
+// Standard Reference ISUP         : Chapter 3.65
+//************************************************************************
+  type record Call_transfer_reference
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT8 CallTransferId // Call transfer identity
+    } with { variant "PRESENCE( id = '01000011'B)";
+             variant (lengthField)"LENGTHTO(CallTransferId)";
+           };
+
+
+//************************************************************************
+// Call Transfer Treatment Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.14
+//************************************************************************
+  type record Call_transfer_treatment_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 CallTransferredInd, // Call to be transferred indicator
+     BIT5 Spare,              // Spare
+     BIT1 ExtensionInd        // Extension indicator
+    } with { variant "PRESENCE( id = '11110011'B)";
+             variant (lengthField)"LENGTHTO(CallTransferredInd,Spare,
+                                            ExtensionInd)";
+           };
+
+
+//************************************************************************
+// Called IN Number
+// Standard Reference ISUP         : Chapter 3.73
+//************************************************************************
+  type record Called_IN_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd, // Nature of address indicator
+     BIT1 OddEven,         // Odd/even indicator
+     BIT2 spare_1,
+     BIT2 AddrPresentRestInd, // Address presentation REStricted indicator
+     BIT3 NumberingPlanInd,   // Numbering plan indicator
+     BIT1 spare_2,            // Numbering plan indicator
+     HEX1_32 AddrSignals optional, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '01101111'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,
+                                            spare_1,AddrPresentRestInd,
+                                            NumberingPlanInd,spare_2,
+                                            AddrSignals,Filler)";
+           };
+
+//************************************************************************
+// Called Directory Number
+// Standard Reference ISUP         : Chapter 3.86
+//************************************************************************
+  type record Called_directory_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd, // Nature of address indicator
+     BIT1 OddEven,         // Odd/even indicator
+     BIT4 spare,             // spare
+     BIT3 NumberingPlanInd,  // Numbering plan indicator
+     BIT1 INNInd,            // Internal network number indicator
+     HEX1_32 AddrSignals, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '01111101'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,
+                                            spare,NumberingPlanInd,
+                                            INNInd,AddrSignals,Filler)";
+           };
+
+
+
+//************************************************************************
+// Called Party Number
+// Ericsson Specification Reference: Chapter 2.3.3.15
+// Standard Reference ISUP         : Chapter 3.9
+//************************************************************************
+  type record Called_party_number    
+    {
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd, // Nature of address indicator
+     BIT1 OddEven,         // Odd/even indicator
+     BIT4 Spare,             // spare
+     BIT3 NumberingPlanInd,  // Numbering plan indicator
+     BIT1 INNInd,            // Internal network number indicator
+     HEX1_32 AddrSignals, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,
+                                            Spare,NumberingPlanInd,
+                                            INNInd,AddrSignals,Filler)";
+           };
+
+
+//************************************************************************
+// Calling Geodetic Location
+// Standard Reference ISUP         : Chapter 3.88
+//************************************************************************
+  type record Ellipsoid_point
+    {
+     OCT3 DgrLat, // Degrees of latitude with sign
+     OCT3 DgrLong // Degrees of longitude
+    } with { variant "" };
+
+  type record Ellipsoid_point_with_uncertainty
+    {
+     OCT3 DgrLat,  // Degrees of latitude with sign
+     OCT3 DgrLong, // Degrees of longitude
+     BIT7 UncCode, // Uncertainty code
+     BIT1 spare_1, // Spare
+     BIT7 Conf,    // Confidence
+     BIT1 spare_2  // Spare
+    } with { variant "" };
+
+  type record Point_with_altitude_and_uncertainty
+    {
+     OCT3 DgrLat,    // Degrees of latitude with sign
+     OCT3 DgrLong,   // Degrees of longitude
+     BIT7 UncCode_1, // Uncertainty code
+     BIT1 spare_1,   // Spare
+     OCT2 Alt,       // Altitude with sign
+     BIT7 UncCode_2, // Uncertainty code
+     BIT1 spare_2,   // Spare
+     BIT7 Conf,      // Confidence
+     BIT1 spare_3    // Spare
+    } with { variant "" };
+
+  type record Ellipse_on_the_ellipsoid
+    {
+     OCT3 DgrLat,  // Degrees of latitude with sign
+     OCT3 DgrLong, // Degrees of longitude
+     BIT7 MajRad,  // Major radius
+     BIT1 spare_1, // Spare
+     BIT7 MinRad,  // Minor radius
+     BIT1 spare_2, // Spare
+     OCT1 orient,  // Orientation
+     BIT7 Conf,    // Confidence
+     BIT1 spare_3  // Spare
+    } with { variant "" };
+
+  type record Ellipsoid_circle_sector
+    {
+     OCT3 DgrLat,  // Degrees of latitude with sign
+     OCT3 DgrLong, // Degrees of longitude
+     BIT7 Rad,     // Radius
+     BIT1 spare_1, // Spare
+     OCT1 Offset,  // Offset
+     OCT1 IncAng,  // Included angle
+     BIT7 Conf,    // Confidence
+     BIT1 spare_2  // Spare
+    } with { variant "" };
+
+  type record Polygon
+    {
+     integer NumPoints, // Number of points
+     BIT4 spare_1,      // Spare
+     DgrLat_longs DgrLat_Longs, // Degrees of latitude / logitude
+     BIT7 Conf,         // Confidence
+     BIT1 spare_2       // Spare
+    } with { variant (NumPoints)"LENGTHTO(DgrLat_Longs)";
+             variant (NumPoints)"UNIT(elements)";
+	     variant (NumPoints) "FIELDLENGTH(4)";
+	   };
+
+  type record of DgrLat_long DgrLat_longs// Degrees of latitude / logitude
+
+  type record DgrLat_long
+    {
+     OCT3 DgrLat, // Degrees of latitude with sign
+     OCT3 DgrLong // Degrees of longitude
+    } with { variant "" };
+
+  type union Shape_description_union
+    {
+     Ellipsoid_point                     EP,
+     Ellipsoid_point_with_uncertainty    EPU,
+     Point_with_altitude_and_uncertainty PAU,
+     Ellipse_on_the_ellipsoid            EonE,
+     Ellipsoid_circle_sector             ECS,
+     Polygon                             Pol
+    } with { variant "" };
+
+  type record Calling_geodetic_location
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 Scr,    // Screening
+     BIT2 LPRI,   // Location presentation REStricted indicator
+     BIT4 Spare,  // Spare
+     BIT7 typeSh, // Type of shape
+     BIT1 ExtI,   // Extension indicator
+     Shape_description_union ShapeDes
+    } with { variant (ShapeDes) "CROSSTAG(
+                        EP,   typeSh = '0000000'B;
+                        EPU,  typeSh = '0000001'B;
+                        PAU,  typeSh = '0000010'B;
+                        EonE, typeSh = '0000011'B;
+                        ECS,  typeSh = '0000100'B;
+                        Pol,  typeSh = '0000101'B
+                        )";
+             variant "PRESENCE( id = '10000001'B)";
+             variant (lengthField)"LENGTHTO(Scr,LPRI,Spare,typeSh,ExtI,
+                                            ShapeDes)";
+           };
+
+//************************************************************************
+// Calling name identity
+// Ericsson Specification Reference: Chapter 2.3.3.16
+//************************************************************************
+  type record Calling_name_identity
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 namePresentationRestrictedInd, // Name presentation restricted ind.
+     BIT2 screeningIndicator, // Screening indicator
+     BIT1 availabilityInd, // Availability indicator
+     BIT3 typeOfName, // Type of name
+     BIT8 encodingInd, // Encoding identification
+     OCT1_50 characterSubfield // Character
+    } with { variant "PRESENCE( id = '11110010'B)";
+             variant (lengthField)"LENGTHTO(namePresentationRestrictedInd,
+                                            screeningIndicator,availabilityInd,
+                                            typeOfName,encodingInd,
+                                            characterSubfield)";
+           };
+
+
+//************************************************************************
+// Calling Party Number
+// Ericsson Specification Reference: Chapter 2.3.3.17
+// Standard Reference ISUP         : Chapter 3.10
+//************************************************************************
+  type record Calling_party_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd,  // Nature of address indicator
+     BIT1 OddEven,          // Odd/even indicator
+     BIT2 ScreeningInd,       // Screening indicator
+     BIT2 AddrPresentRestInd, // Address presentation REStricted indicator
+     BIT3 NumberingPlanInd,   // Numbering plan indicator
+     BIT1 NIInd,              // Calling party number incomplete indicator
+     HEX1_32 AddrSignals optional, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '00001010'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,
+                                            ScreeningInd,AddrPresentRestInd,
+                                            NumberingPlanInd,NIInd,
+                                            AddrSignals,Filler)";
+           };
+
+//************************************************************************
+// Calling Party Number
+// Ericsson Specification Reference: Chapter 2.3.3.18
+// Standard Reference ISUP         : Chapter 3.11
+//************************************************************************
+  type record Calling_partys_category_OPT
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT8 CallingPartysCategory  // Calling party's category
+    } with { variant "PRESENCE( id = '00001001'B)";
+             variant (lengthField)"LENGTHTO(CallingPartysCategory)";
+           };
+
+  type record Calling_partys_category    
+    {
+     BIT8 CallingPartysCategory  // Calling party's category
+    } with { variant "" };
+
+//************************************************************************
+// Cause Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.19
+// Standard Reference ISUP         : Chapter 3.12
+//************************************************************************
+  type record Cause_indicators_OPT
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT4 Location,         // Location
+     BIT1 Spare,            // Spare
+     BIT2 CodingStandard,   // Coding standard
+     BIT1 Ext1,             // Extension indicator
+     BIT7 CauseValue,       // Vause value
+     BIT1 Ext2,             // Extension indicator
+     OCTN Diagnostics optional // Diagnostic(s)   (if any)
+    } with { variant "PRESENCE( id = '00010010'B)";
+             variant (lengthField)"LENGTHTO(Location,Spare,CodingStandard,
+                                            Ext1,CauseValue,
+                                            Ext2,Diagnostics)";
+           };
+
+  type record Cause_indicators    
+    {
+     INT1 lengthField,
+
+     BIT4 Location,         // Location
+     BIT1 Spare,            // Spare
+     BIT2 CodingStandard,   // Coding standard
+     BIT1 Ext1,             // Extension indicator
+     BIT7 Reserved optional,   // National Recommendation
+     BIT1 Ext1a optional,      // Present when Reserved field is present
+     BIT7 CauseValue,       // Vause value
+     BIT1 Ext2,             // Extension indicator
+     OCTN Diagnostics optional // Diagnostic(s)   (if any)
+    } with { variant (Reserved) "PRESENCE (Ext1='0'B)";
+             variant (Ext1a) "PRESENCE (Ext1='0'B)";
+             variant (lengthField)"LENGTHTO(Location,Spare,CodingStandard,
+                                            Ext1,Reserved,Ext1a,CauseValue,
+                                            Ext2,Diagnostics)";
+           };
+
+
+//************************************************************************
+// CCNR Possible Indicator
+// Standard Reference ISUP         : Chapter 3.83
+//************************************************************************
+  type record CCNR_possible_indicator
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 CCNRPInd, // CCNR possible indicator
+     BIT7 spare     // Spare
+    } with { variant "PRESENCE( id = '01111010'B)";
+             variant (lengthField)"LENGTHTO(CCNRPInd,spare)";
+           };
+
+
+//************************************************************************
+// CCSS
+// Ericsson Specification Reference: Chapter 2.3.3.20
+// Standard Reference ISUP         : Chapter 3.63
+//************************************************************************
+  type record CCSS_parameter
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 CCSSCallInd,  // CCSS call indicator
+     BIT7 Spare
+    } with { variant "PRESENCE( id = '01001011'B)";
+             variant (lengthField)"LENGTHTO(CCSSCallInd,Spare)";
+           };
+
+
+//************************************************************************
+// Charged Party Identification
+// Standard Reference ISUP         : Chapter 3.75
+//************************************************************************
+  type record Charged_party_identification
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCTN ChargedPartyId
+    } with { variant "PRESENCE( id = '01110001'B)";
+             variant (lengthField)"LENGTHTO(ChargedPartyId)";
+           };
+
+
+//************************************************************************
+// Circuit Assignment Map
+// Standard Reference ISUP         : Chapter 3.69
+//************************************************************************
+  type record Circuit_assignment_map
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT6 MapType,  // Map type
+     BIT2 spare_1,  // Spare
+     BIT31 MapFormat,  // Map format
+     BIT1  spare_2     // spare
+    } with { variant "PRESENCE( id = '00100101'B)";
+             variant (lengthField)"LENGTHTO(MapType,spare_1,MapFormat,spare_2)";
+           };
+
+
+//************************************************************************
+// Circuit Group Supervision Message Type Indicator
+// Ericsson Specification Reference: Chapter 2.3.3.21
+// Standard Reference ISUP         : Chapter 3.13
+//************************************************************************
+  type record Circuit_group_supervision_message_type_indicator    
+    {
+     BIT2 Type, // Type indicator
+     BIT6 Spare // Spare
+    } with { variant "" };
+
+
+//************************************************************************
+// Circuit State Indicator
+// Ericsson Specification Reference: Chapter 2.3.3.22
+// Standard Reference ISUP         : Chapter 3.14
+//************************************************************************
+  type record Circuit_state_indicator    
+    {
+     INT1 lengthField,
+
+     OCTN CircuitStateIndicator
+    } with { variant (lengthField)"LENGTHTO(CircuitStateIndicator)";
+           };
+
+
+//************************************************************************
+// Closed User Group Interlock Code
+// Ericsson Specification Reference: Chapter 2.3.3.23
+// Standard Reference ISUP         : Chapter 3.15
+//************************************************************************
+// The contents of this parameter are not subdivided because values
+//are easy to give as hexnumbers.
+  type record Closed_user_group_interlock_code
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT4 CUGIC_contents // CUGIC
+    } with { variant "PRESENCE( id = '00011010'B)";
+             variant (lengthField)"LENGTHTO(CUGIC_contents)";
+           };
+
+
+//************************************************************************
+// Collect Call Request
+// Standard Reference ISUP         : Chapter 3.81
+//************************************************************************
+  type record Collect_call_request
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 CCReqInd, // Collect call request indicator
+     BIT7 spare     // Spare
+    } with { variant "PRESENCE( id = '01111001'B)";
+             variant (lengthField)"LENGTHTO(CCReqInd,spare)";
+           };
+
+
+//************************************************************************
+// Conference Treatment Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.24
+// Standard Reference ISUP         : Chapter 3.76
+//************************************************************************
+  type record Conference_treatment_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 ConfAcceptanceInd, // Conference acceptance indicator
+     BIT5 Spare,             // Spare
+     BIT1 ExtensionInd       // Extension indicator
+    } with { variant "PRESENCE( id = '01110010'B)";
+             variant (lengthField)"LENGTHTO(ConfAcceptanceInd,Spare,
+                                            ExtensionInd)";
+           };
+
+
+//************************************************************************
+// Connected Number
+// Ericsson Specification Reference: Chapter 2.3.3.25
+// Standard Reference ISUP         : Chapter 3.16
+//************************************************************************
+  type record Connected_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd, // Nature of address indicators
+     BIT1 OddEven,         // Odd/even indicator
+     BIT2 ScreeningInd,       // Screening indicator
+     BIT2 AddrPresentRestInd, // Address presentation REStriction indicator
+     BIT3 NumberingPlanInd,   // Numbering plan indicator
+     BIT1 Spare,              // Spare
+     HEX1_32 AddrSignals optional, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '00100001'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,
+                                            ScreeningInd,AddrPresentRestInd,
+                                            NumberingPlanInd,Spare,
+                                            AddrSignals,Filler)";
+           };
+
+//************************************************************************
+// Connection Request
+// Standard Reference ISUP         : Chapter 3.17
+//************************************************************************
+  type record Connection_request
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT3 LocRef,       // Local reference
+     OCT2 SPC_contents, // Signalling point code
+     BIT8 PC,           // Protocol class
+     BIT8 credit        // Credit
+    } with { variant "PRESENCE( id = '00001101'B)";
+             variant (lengthField)"LENGTHTO(LocRef,SPC_contents,PC,credit)";
+           };
+
+
+//************************************************************************
+// Continuity Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.26
+// Standard Reference ISUP         : Chapter 3.18
+//************************************************************************
+  type record Continuity_indicators
+    {
+     BIT1 ContInd_field, // Continuity indicator
+     BIT7 Spare // Spare
+    } with { variant "" };
+
+
+//************************************************************************
+// Correlation Id
+// Ericsson Specification Reference: Chapter 2.3.3.27
+// Standard Reference ISUP         : Chapter 3.70
+//************************************************************************
+  type record Correlation_id
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCTN  CorrelationId
+    } with { variant "PRESENCE( id = '01100101'B)";
+             variant (lengthField)"LENGTHTO(CorrelationId)";
+           };
+
+
+//************************************************************************
+// Display Information
+// Ericsson Specification Reference: Chapter 2.3.3.28
+// Standard Reference ISUP         : Chapter 3.77
+//************************************************************************
+  type record Display_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCTN DisplayInfo
+    } with { variant "PRESENCE( id = '01110011'B)";
+             variant (lengthField)"LENGTHTO(DisplayInfo)";
+           };
+
+
+//************************************************************************
+// Distributed Dynamic Routing Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.29
+//************************************************************************
+  type record Distributed_dynamic_routing_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 AutoReroutingInd,   // Automatic re-routing indicator
+     BIT1 EventDepRoutingInd, // Event dependent routing indicator
+     BIT6 Spare               // Spare
+    } with { variant "PRESENCE( id = '11111000'B)";
+             variant (lengthField)"LENGTHTO(AutoReroutingInd,EventDepRoutingInd,
+                                            Spare)";
+           };
+
+
+//************************************************************************
+// Echo Control Information
+// Standard Reference ISUP         : Chapter 3.19
+//************************************************************************
+  type record Echo_control_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 OEchoRsI, // Outgoing echo CONtrol device INFormation indicator
+     BIT2 IEchoRsI, // Incoming echo CONtrol device INFormation indicator
+     BIT2 OEchoRqI, // Outgoing echo CONtrol device request indicator
+     BIT2 IEchoRqI  // Incoming echo CONtrol device request indicator
+    } with { variant "PRESENCE( id = '00110111'B)";
+             variant (lengthField)"LENGTHTO(OEchoRsI,IEchoRsI,OEchoRqI,
+                                            IEchoRqI)";
+           };
+
+
+//************************************************************************
+// Event Information
+// Ericsson Specification Reference: Chapter 2.3.3.31
+// Standard Reference ISUP         : Chapter 3.21
+//************************************************************************
+  type record Event_information    
+    {
+     BIT7 EventInd,            // Event indicator
+     BIT1 EventPresentRestrInd // Event presentation retriction indicator
+    } with { variant ""};
+
+
+//************************************************************************
+// Facility Indicator
+// Ericsson Specification Reference: Chapter 2.3.3.32
+// Standard Reference ISUP         : Chapter 3.22
+//************************************************************************
+  type record Facility_indicator    
+    {
+     OCT1 FacilityInd  // Facility indicator
+    } with { variant "" };
+
+
+//************************************************************************
+// Forward Call Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.33
+// Standard Reference ISUP         : Chapter 3.23
+//************************************************************************
+  type record Forward_call_indicators    
+    {
+     BIT1 NatIntCallInd,     // National/international call indicator
+     BIT2 EndToEndMethInd,   // End-to-end method indicator
+     BIT1 InterworkInd,      // Interworking indicator
+     BIT1 EndToEndInfoInd,   // End-to-end INFormation indicator
+     BIT1 ISUPInd,           // ISDN User Part indicator
+     BIT2 ISUPPreferenceInd, // ISDN User Part preference indicator
+     BIT1 ISDNAccessInd, // ISDN access indicator
+     BIT2 SCCPMethodInd, // SCCP method indicator
+     BIT1 Spare,         // Spare
+     BIT2 Reserved,      // Reserved
+     BIT2 VPNCallInd     // VPN call indicator (national use)
+    } with { variant "" };
+
+
+//************************************************************************
+// Forward GVNS
+// Ericsson Specification Reference: Chapter 2.3.3.34
+// Standard Reference ISUP         : Chapter 3.66
+//************************************************************************
+ type record Forward_GVNS
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     INT4b OPSP_Len,        // OPSP length indicator
+     BIT3 OPSP_Spare,      // Spare
+     BIT1 OPSP_OddEven,    // Odd/even indicator
+     HEX1_32 OPSP_AddSign optional, // Digits and Filler if odd digits
+     HEX1 OPSP_Filler optional,
+     INT4b GUG_Len,           // GUG length indicator
+     BIT3 GUG_Spare,         // Spare
+     BIT1 GUG_OddEven,       // Odd/even indicator
+     HEX1_32 GUG_AddSign optional,    // Digits and Filler if odd digits
+     HEX1 GUG_Filler optional,
+     INT4b TNRN_Len,        // TNRN length indicator
+     BIT3 TNRN_NumPlanInd, // Numbering plan indicator
+     BIT1 TNRN_OddEven,    // Odd/even indicator
+     BIT7 TNRN_NatOfAddInd optional, // Nature of address indicator
+     BIT1 TNRN_Spare       optional, // Spare
+     HEX1_32 TNRN_AddSign  optional, // Digits and Filler if odd digits
+     HEX1 TNRN_Filler optional
+    } with { variant (OPSP_Len) "LENGTHTO(OPSP_AddSign,OPSP_Filler)";
+             variant (GUG_Len)  "LENGTHTO(GUG_AddSign,GUG_Filler)";
+             variant (TNRN_Len) "LENGTHTO(TNRN_NatOfAddInd,TNRN_Spare,
+                                          TNRN_AddSign,TNRN_Filler)";
+             variant (OPSP_AddSign) "HEXORDER(low)";
+             variant (GUG_AddSign)  "HEXORDER(low)";
+             variant (TNRN_AddSign) "HEXORDER(low)";
+             variant "PRESENCE( id = '01001100'B)";
+             variant (lengthField)"LENGTHTO(OPSP_Len,OPSP_Spare,OPSP_OddEven,
+                                            OPSP_AddSign,OPSP_Filler,GUG_Len,
+                                            GUG_Spare,GUG_OddEven,GUG_AddSign,
+                                            GUG_Filler,TNRN_Len,TNRN_NumPlanInd,
+                                            TNRN_OddEven,TNRN_NatOfAddInd,
+                                            TNRN_Spare,TNRN_AddSign,
+                                            TNRN_Filler)";
+           };
+
+
+//************************************************************************
+// Freephone Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.35
+//************************************************************************
+  type record Freephone_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 FreephoneInd, // Freephone indicator
+     BIT7 Spare         // Spare
+    } with { variant "PRESENCE( id = '01000001'B)";
+             variant (lengthField)"LENGTHTO(FreephoneInd,Spare)";
+           };
+
+
+//************************************************************************
+// Generic Digits
+// Ericsson Specification Reference: Chapter 2.3.3.36
+// Standard Reference ISUP         : Chapter 3.24
+//************************************************************************
+  type record Generic_digits
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT5 TypeOfDigits,   // Type of digits
+     BIT3 EncodingScheme, // Encoding scheme
+     HEX1_32 Digits       // Digits
+    } with { variant "PRESENCE( id = '11000001'B)";
+             variant (lengthField)"LENGTHTO(TypeOfDigits,EncodingScheme,
+                                            Digits)";
+           };
+
+  type set of Generic_digits Generic_digits_set
+      with { variant "" };
+
+
+//************************************************************************
+// Generic Notification Indicator
+// Ericsson Specification Reference: Chapter 2.3.3.37
+// Standard Reference ISUP         : Chapter 3.25
+//************************************************************************
+  type record Generic_notification_indicator
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NotificationInd, // Notification indicator
+     BIT1 ExtInd           // Extension indicator
+    } with { variant "PRESENCE( id = '00101100'B)";
+             variant (lengthField)"LENGTHTO(NotificationInd,ExtInd)";
+           };
+
+  type set of Generic_notification_indicator 
+                 Generic_notification_indicator_set
+      with { variant "" };
+
+
+//************************************************************************
+// Generic Number
+// Ericsson Specification Reference: Chapter 2.3.3.38
+// Standard Reference ISUP         : Chapter 3.26
+//************************************************************************
+  type record Generic_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT8 NumQualifier,   // Number qualifier indicator
+     BIT7 NatureOfAddrInd, // Nature of address indicator
+     BIT1 Odd_Even,        // Odd/even indicator
+     BIT2 ScreeningInd,       // Screening indicator
+     BIT2 AddrPresentRestInd, // Address presesntation REStricted indicator
+     BIT3 NumberingPlanInd,   // Numbering plan indicator
+     BIT1 NIInd,              // Number incomplete indicator
+     HEX1_32 AddrSignals optional, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '11000000'B)";
+             variant (lengthField)"LENGTHTO(NumQualifier,NatureOfAddrInd,
+                                            Odd_Even,ScreeningInd,
+                                            AddrPresentRestInd,NumberingPlanInd,
+                                            NIInd,AddrSignals,Filler)";
+           };
+
+  type set of Generic_number Generic_number_set
+      with { variant "" };
+
+
+  //************************************************************************
+// HTR Information
+// Standard Reference ISUP         : Chapter 3.89
+//************************************************************************
+  type record HTR_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd, // Nature of address indicator
+     BIT1 OddEven,         // Odd/even indicator
+     BIT4 spare_1,           // Spare
+     BIT3 NumberingPlanInd,  // Numbering plan indicator
+     BIT1 spare_2,           // Spare
+     HEX1_32 AddrSignals, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '10000010'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,spare_1,
+                                            NumberingPlanInd,spare_2,
+                                            AddrSignals,Filler)";
+           };
+
+//************************************************************************
+// Hop Counter
+// Ericsson Specification Reference: Chapter 2.3.3.39
+// Standard Reference ISUP         : Chapter 3.80
+//************************************************************************
+  type record Hop_counter
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT5 HopCount, // Hop counter
+     BIT3 spare // Spare
+    } with { variant "PRESENCE( id = '00111101'B)";
+             variant (lengthField)"LENGTHTO(HopCount,spare)";
+           };
+
+
+//************************************************************************
+// Information Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.40
+// Standard Reference ISUP         : Chapter 3.28
+//************************************************************************
+  type record Information_indicators    
+    {
+     BIT2 CallingPartyAddrRespInd, // Calling party address RESponse indicator
+     BIT1 HoldProvidedInd,         // Hold provided indicator
+     BIT2 Spare1,                  // Spare
+     BIT1 CallingPartyCatRespInd,  // Calling party's category RESponse ind.
+     BIT1 Reserved1,               // Reserved
+     BIT1 SolicitedInfoInd,        // Solicited INFormation indicator
+     BIT4 Spare2,   // Spare
+     BIT4 Reserved2 // Reserved 2
+    } with { variant "" };
+
+
+//************************************************************************
+// Information Request Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.41
+// Standard Reference ISUP         : Chapter 3.29
+//************************************************************************
+  type record Information_request_indicators    
+    {
+     BIT1 CallingPartyAddrRequestInd,// Calling party address request ind.
+     BIT1 HoldingInd_or_Spare,       // Holding indicator
+     BIT1 Spare1,                    // Spare
+     BIT1 CallingPartyCatRequestInd, // Calling party's category request ind.
+     BIT1 Reserved1,                 // Charge INFormation request ind.
+     BIT2 Spare2,                    // Spare
+     BIT1 MCIDReqInd_or_Spare, // Malicious call identification request ind.
+     BIT4 Spare3,   // Spare
+     BIT4 Reserved2 // Reserved
+    } with { variant "" };
+
+
+//************************************************************************
+// Location Number
+// Ericsson Specification Reference: Chapter 2.3.3.42
+// Standard Reference ISUP         : Chapter 3.30
+//************************************************************************
+  type record Location_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd, // Nature of address indicator
+     BIT1 OddEven,         // Odd/Even indicator
+     BIT2 ScreeningInd,       // Screening indicator
+     BIT2 AddrPresentRestInd, // Address presentation REStricted indicator
+     BIT3 NumberingPlanInd,   // Numbering plan indicator
+     BIT1 INNInd,             // Internal network number indicator
+     HEX1_32 AddrSignals optional, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '00111111'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,
+                                            ScreeningInd,AddrPresentRestInd,
+                                            NumberingPlanInd,INNInd,
+                                            AddrSignals,Filler)";
+           };
+
+//************************************************************************
+// Loop Prevention Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.43
+// Standard Reference ISUP         : Chapter 3.67
+//************************************************************************
+  type record Loop_prevention_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 Type,                 // Type
+     BIT2 ResponseInd_or_Spare, // Response indicator or Spare
+     BIT5 Spare
+    } with { variant "PRESENCE( id = '01000100'B)";
+             variant (lengthField)"LENGTHTO(Type,ResponseInd_or_Spare,Spare)";
+           };
+
+//************************************************************************
+// MCID Request Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.44
+// Standard Reference ISUP         : Chapter 3.31
+//************************************************************************
+  type record MCID_request_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 MCIDReqInd, // MCID request indicator
+     BIT1 HoldingInd, // Holding indicator
+     BIT6 Spare       // Spare
+    } with { variant "PRESENCE( id = '00111011'B)";
+             variant (lengthField)"LENGTHTO(MCIDReqInd,HoldingInd,Spare)";
+           };
+
+
+//************************************************************************
+// MCID Response Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.45
+// Standard Reference ISUP         : Chapter 3.32
+//************************************************************************
+  type record MCID_response_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 MCIDRespInd,    // MCID RESponse indicator
+     BIT1 HoldingProvInd, // Hold provided indicator
+     BIT6 Spare           // Spare
+    } with { variant "PRESENCE( id = '00111100'B)";
+             variant (lengthField)"LENGTHTO(MCIDRespInd,HoldingProvInd,Spare)";
+           };
+
+
+//************************************************************************
+// Message Compatibility Information
+// Ericsson Specification Reference: Chapter 2.3.3.46
+// Standard Reference ISUP         : Chapter 3.33
+//************************************************************************
+  type record Message_compatibility_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 TransitIntermedExchInd, // Transit at intermediate exchange ind.
+     BIT1 ReleaseCallInd,         // Release call indicator
+     BIT1 SendNotificationInd,    // Send notification indicator
+     BIT1 DiscardMessageInd,      // Discard message indicator
+     BIT1 PassOnNotPossibleInd,   // Pass on not possible indicator
+     BIT2 BroadNarrowbandIwInd,   // Broadband/narrowband interworking ind.
+     BIT1 ExtInd1,                // Extension indicator
+     OCTN Spare2  optional
+    } with { variant "EXTENSION_BIT_GROUP (yes,TransitIntermedExchInd,Spare2)";
+             variant "PRESENCE( id = '00111000'B)";
+             variant (lengthField)"LENGTHTO(TransitIntermedExchInd,
+                                            ReleaseCallInd,SendNotificationInd,
+                                            DiscardMessageInd,
+                                            PassOnNotPossibleInd,
+                                            BroadNarrowbandIwInd,
+                                            ExtInd1,Spare2)";
+           };
+
+
+
+
+//************************************************************************
+// Meter Pulse Indicator
+// Ericsson Specification Reference: Chapter 2.3.3.47
+//************************************************************************
+  type record Meter_pulse_indicator
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT1 MeterPulse, // Meter pulse indicator
+     OCT1 Reserved    // Reserved
+    } with { variant "PRESENCE( id = '11111110'B)";
+             variant (lengthField)"LENGTHTO(MeterPulse,Reserved)";
+           };
+
+//************************************************************************
+// MLPP Precedence
+// Ericsson Specification Reference: Chapter 2.3.3.48
+// Standard Reference ISUP         : Chapter 3.34
+//************************************************************************
+  type record MLPP_precedence
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT4 PreLev,  // Precedence level
+     BIT1 spare_1, // Spare
+     BIT2 LFB,     // Look ahead for busy
+     BIT1 spare_2, // Spare
+     OCT2 NI,       // Network identity
+     OCT3 ServDom   // MLPP service domain
+    } with { variant "PRESENCE( id = '00111010'B)";
+             variant (lengthField)"LENGTHTO(PreLev,spare_1,LFB,spare_2,NI,
+                                            ServDom)";
+           };
+
+
+//************************************************************************
+// Nature Of Connection Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.49
+// Standard Reference ISUP         : Chapter 3.35
+//************************************************************************
+  type record Nature_of_connection_indicators    
+    {
+     BIT2 SatelliteInd,       // Satellite indicator
+     BIT2 ContinuityCheckInd, // Continuity check indicator
+     BIT1 EchoControlDevInd,  // Echo CONtrol device indicator
+     BIT3 Spare               // Spare
+    } with { variant "" };
+
+
+//************************************************************************
+// Network Call Reference
+// Ericsson Specification Reference: Chapter 2.3.3.50
+//************************************************************************
+  type record Network_call_reference
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT3 CallIdentity, // Call identity
+     BIT14 SwitchId, // Switch identity
+     BIT2 Spare // Spare
+    } with { variant "PRESENCE( id = '11110100'B)";
+             variant (lengthField)"LENGTHTO(CallIdentity,SwitchId,Spare)";
+           };
+
+
+//************************************************************************
+// Network Management Controls
+// Standard Reference ISUP         : Chapter 3.68
+//************************************************************************
+  type record Network_management_controls
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 TAR_indicator, // Temporary alternate routing indicator
+     BIT6 spare,         // Temporary alternate routing indicator
+     BIT1 ExtI           // Extension indicator
+    } with { variant "PRESENCE( id = '01011011'B)";
+             variant (lengthField)"LENGTHTO(TAR_indicator,spare,ExtI)";
+           };
+
+
+//************************************************************************
+// Network Routing Number
+// Standard Reference ISUP         : Chapter 3.90
+//************************************************************************
+  type record Network_routing_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT4 NatureOfAddrInd,  // Nature of address indicator
+     BIT3 NumberingPlanInd, // Numbering plan indicator
+     BIT1 OddEven,          // Odd/even indicator
+     HEX1_32 AddrSignals, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '10000100'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,NumberingPlanInd,
+                                            OddEven,AddrSignals,Filler)";
+           };
+
+//************************************************************************
+// Network Specific Facility
+// Ericsson Specification Reference: Chapter 2.3.3.51
+// Standard Reference ISUP         : Chapter 3.36
+//************************************************************************
+  type record Network_specific_facility
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     INT1 LenOfNetwId, // Length of network identification
+     BIT4 NetworkIdPlan optional,   // Network identification plan
+     BIT3 TypeofNetworkId optional, // Type of network identification
+     BIT1 One optional,
+     OCTN NetworkId optional,   // Network id. First bit in octets is 0
+     OCTN NetworkSpecificFacility // network-specific FACility indicator
+    } with { variant (LenOfNetwId) "LENGTHTO(NetworkIdPlan,TypeofNetworkId,
+                                             One,NetworkId)";
+             variant "PRESENCE( id = '00101111'B)";
+             variant (lengthField)"LENGTHTO(LenOfNetwId,NetworkIdPlan,
+                                            TypeofNetworkId,One,NetworkId,
+                                            NetworkSpecificFacility)";
+           };
+
+
+//************************************************************************
+// Number Portability Forward Information
+// Standard Reference ISUP         : Chapter 3.101
+//************************************************************************
+  type record Number_portability_forward_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT4 NbPStInd, // Number portability status indicator
+     BIT3 spare,    // Spare
+     BIT1 ExtI      // Extension indicator
+    } with { variant "PRESENCE( id = '10001101'B)";
+             variant (lengthField)"LENGTHTO(NbPStInd,spare,ExtI)";
+           };
+
+
+//************************************************************************
+// Optional Backward Call Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.52
+// Standard Reference ISUP         : Chapter 3.37
+//************************************************************************
+  type record Optional_backward_call_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 InBandInfoInd,            // In-band INFormation indicator
+     BIT1 CallDiversionMayOccurInd, // Call diversion may occur indicator
+     BIT1 SimpleSegmentationInd,    // Simple segmentation indicator
+     BIT1 MLPPUserInd,              // MLPP User Indicator
+     BIT2 Reserved,                 // Reserved
+     BIT1 TimeSupervBeforeAnsInd,   // Time supervision before answerind.
+     BIT1 LastPartyRelInd           // Last party release indicator
+    } with { variant "PRESENCE( id = '00101001'B)";
+             variant (lengthField)"LENGTHTO(InBandInfoInd,
+                                            CallDiversionMayOccurInd,
+                                            SimpleSegmentationInd,MLPPUserInd,
+                                            Reserved,TimeSupervBeforeAnsInd,
+                                            LastPartyRelInd)";
+           };
+
+
+//************************************************************************
+// Optional Forward Call Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.53
+// Standard Reference ISUP         : Chapter 3.38
+//************************************************************************
+  type record Optional_forward_call_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 CUGCallInd,            // Closed user group call indicator
+     BIT1 SimpleSegmentationInd, // Simple segmentation indicator
+     BIT4 Spare,                 // Spare
+     BIT1 ConnLineReqInd         // Connected line identity request indicator
+    } with { variant "PRESENCE( id = '00001000'B)";
+             variant (lengthField)"LENGTHTO(CUGCallInd,SimpleSegmentationInd,
+                                            Spare,ConnLineReqInd)";
+           };
+
+
+//************************************************************************
+// Original Called Number
+// Ericsson Specification Reference: Chapter 2.3.3.54
+// Standard Reference ISUP         : Chapter 3.39
+//************************************************************************
+  type record Original_called_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd, // Nature of address indicator
+     BIT1 OddEven,         // Odd/even indicator
+     BIT2 Spare_1,            // Spare
+     BIT2 AddrPresentRestInd, // Address presentation REStricted indicator
+     BIT3 NumberingPlanInd,   // Numbering plan indicator
+     BIT1 Spare_2,            // Spare
+     HEX1_32 AddrSignals optional, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '00101000'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,Spare_1,
+                                            AddrPresentRestInd,NumberingPlanInd,
+                                            Spare_2,AddrSignals,Filler)";
+           };
+
+//************************************************************************
+// Original Called IN Number
+// Standard Reference ISUP         : Chapter 3.87
+//************************************************************************
+  type record Original_called_IN_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd, // Nature of address indicator
+     BIT1 OddEven,         // Odd/even indicator
+     BIT2 spare_1,            // Spare
+     BIT2 AddrPresentRestInd, // Address presentation REStricted indicator
+     BIT3 NumberingPlanInd,   // Numbering plan indicator
+     BIT1 spare_2,            // Spare
+     HEX1_32 AddrSignals optional, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '01111111'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,spare_1,
+                                            AddrPresentRestInd,NumberingPlanInd,
+                                            spare_2,AddrSignals,Filler)";
+           };
+
+//************************************************************************
+// Origination ISC Point Code
+// Ericsson Specification Reference: Chapter 2.3.3.55
+// Standard Reference ISUP         : Chapter 3.40
+//************************************************************************
+  type record Origination_ISC_point_code
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT2 OriISC_contents // Signalling point code
+    } with { variant "PRESENCE( id = '00101011'B)";
+             variant (lengthField)"LENGTHTO(OriISC_contents)";
+           };
+
+
+//************************************************************************
+// Parameter Compatibility Information
+// Ericsson Specification Reference: Chapter 2.3.3.56
+// Standard Reference ISUP         : Chapter 3.41
+//************************************************************************
+  type record Parameter_compatibility_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT8 FirstUpgradParam, // Upgraded parameter name
+     BIT7 InstructIndFirst, // all instruction indicators for parameter 1
+     BIT1 ExtInd1, // Extension indicator
+     BIT8 SecondUpgradParam optional,
+     BIT7 InstructIndSecond optional, // all instruction indicators for param. 2
+     BIT1 ExtInd2 optional, // Extension indicator
+     BIT8 ThirdUpgradParam optional,
+     BIT7 InstructIndThird optional, // all instruction indicators for param. 3
+     BIT1 ExtInd3 optional, // Extension indicator
+     BIT8 FourthUpgradParam optional,
+     BIT7 InstructIndFourth optional, // all instruction indicators for param. 4
+     BIT1 ExtInd4 optional, // Extension indicator
+     BIT8 FifthUpgradParam optional,
+     BIT7 InstructIndFifth optional, // all instruction indicators for param. 5
+     BIT1 ExtInd5 optional// Extension indicator
+    } with { variant "PRESENCE( id = '00111001'B)";
+             variant (lengthField)"LENGTHTO(FirstUpgradParam,InstructIndFirst,
+                                            ExtInd1,SecondUpgradParam,
+                                            InstructIndSecond,ExtInd2,
+                                            ThirdUpgradParam,InstructIndThird,
+                                            ExtInd3,FourthUpgradParam,
+                                            InstructIndFourth,ExtInd4,
+                                            FifthUpgradParam,InstructIndFifth,
+                                            ExtInd5)";
+           };
+
+
+//************************************************************************
+// Pivot Capability
+// Standard Reference ISUP         : Chapter 3.84
+//************************************************************************
+  type record Pivot_capability
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT3 PivPosInd,  // Pivot possible indicator
+     BIT3 spare,      // Spare
+     BIT1 IwRedirInd, // Interworking to redirection indicator
+     BIT1 ExtI        // Extension indicator
+    } with { variant "PRESENCE( id = '01111011'B)";
+             variant (lengthField)"LENGTHTO(PivPosInd,spare,IwRedirInd,ExtI)";
+           };
+
+
+//************************************************************************
+// Pivot Counter
+// Standard Reference ISUP         : Chapter 3.93
+//************************************************************************
+  type record Pivot_counter
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT5 PivCount, // Pivot counter
+     BIT3 spare // spare
+    } with { variant "PRESENCE( id = '10000111'B)";
+             variant (lengthField)"LENGTHTO(PivCount,spare)";
+           };
+
+
+//************************************************************************
+// Pivot Routing Backward Information
+// Standard Reference ISUP         : Chapter 3.95
+//************************************************************************
+  type record Pivot_routing_backward_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     ISUP_Information_type_set PivotInfo
+    } with { variant "PRESENCE( id = '10001001'B)";
+             variant (lengthField)"LENGTHTO(PivotInfo)";
+           };
+
+  type record ISUP_Information_type
+    {
+     BIT8 infoTypeTag,
+     INT1 infoTypeLength,
+     OCTN infoTypeValue
+    } with { variant (infoTypeLength)"LENGTHTO(infoTypeValue)";
+           };
+
+  type set of ISUP_Information_type ISUP_Information_type_set
+      with { variant "" };
+
+
+//************************************************************************
+// Pivot Routing Forward Information
+// Standard Reference ISUP         : Chapter 3.94
+//************************************************************************
+  type record Pivot_routing_forward_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     ISUP_Information_type_set PivotInfo
+    } with { variant "PRESENCE( id = '10001000'B)";
+             variant (lengthField)"LENGTHTO(PivotInfo)";
+           };
+
+
+//************************************************************************
+// Pivot Routing Indicators
+// Standard Reference ISUP         : Chapter 3.85
+//************************************************************************
+  type record Pivot_routing_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 PivRoutInd, // Pivot routing indicators
+     BIT1 ExtI        // Extension indicator
+    } with { variant "PRESENCE( id = '01111100'B)";
+             variant (lengthField)"LENGTHTO(PivRoutInd,ExtI)";
+           };
+
+
+//************************************************************************
+// Pivot Status
+// Standard Reference ISUP         : Chapter 3.92
+//************************************************************************
+  type record Pivot_status
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 PivStInd, // Pivot status indicator
+     BIT5 spare, // Spare
+     BIT1 ExtI // Extension indicator
+    } with { variant "PRESENCE( id = '10000110'B)";
+             variant (lengthField)"LENGTHTO(PivStInd,spare,ExtI)";
+           };
+
+
+//************************************************************************
+// Propagation Delay Counter
+// Ericsson Specification Reference: Chapter 2.3.3.57
+// Standard Reference ISUP         : Chapter 3.42
+//************************************************************************
+  type record Propagation_delay_counter
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT2 PropagationDelayValue
+    } with { variant "PRESENCE( id = '00110001'B)";
+             variant (lengthField)"LENGTHTO(PropagationDelayValue)";
+           };
+
+
+//************************************************************************
+// Query On Release Capability
+// Standard Reference ISUP         : Chapter 3.91
+//************************************************************************
+  type record Query_on_release_capability
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 QoRCapInd, // Query on RELease capability indicator
+     BIT6 spare,     // Spare
+     BIT1 ExtI       // Extension indicator
+    } with { variant "PRESENCE( id = '10000101'B)";
+             variant (lengthField)"LENGTHTO(QoRCapInd,spare,ExtI)";
+           };
+
+
+//************************************************************************
+// Range And Status
+// Ericsson Specification Reference: Chapter 2.3.3.58
+// Standard Reference ISUP         : Chapter 3.43
+//************************************************************************
+  type record Range_and_status    
+    {
+     INT1 lengthField,
+
+     OCT1 Range,         // Range
+     OCTN Status optional// Status
+    } with { variant (lengthField)"LENGTHTO(Range,Status)";
+           };
+
+
+//************************************************************************
+// Redirect Backward Information
+// Standard Reference ISUP         : Chapter 3.100
+//************************************************************************
+  type record Redirect_backward_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     ISUP_Information_type_set RedirInfo
+    } with { variant "PRESENCE( id = '10001100'B)";
+             variant (lengthField)"LENGTHTO(RedirInfo)";
+           };
+
+
+//************************************************************************
+// Redirect Capability
+// Standard Reference ISUP         : Chapter 3.96
+//************************************************************************
+  type record Redirect_capability
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT3 RedirPosInd, // Redirect possible indicator
+     BIT4 spare,       // Spare
+     BIT1 ExtI         // Extension indicator
+    } with { variant "PRESENCE( id = '01001110'B)";
+             variant (lengthField)"LENGTHTO(RedirPosInd,spare,ExtI)";
+           };
+
+
+//************************************************************************
+// Redirect Counter
+// Standard Reference ISUP         : Chapter 3.97
+//************************************************************************
+  type record Redirect_counter
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT5 RedirCount, // Redirect counter
+     BIT3 spare       // Spare
+    } with { variant "PRESENCE( id = '01110111'B)";
+             variant (lengthField)"LENGTHTO(RedirCount,spare)";
+           };
+
+
+//************************************************************************
+// Redirect Forward Information
+// Standard Reference ISUP         : Chapter 3.99
+//************************************************************************
+  type record Redirect_forward_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     ISUP_Information_type_set RedirInfo
+    } with { variant "PRESENCE( id = '10001011'B)";
+             variant (lengthField)"LENGTHTO(RedirInfo)";
+           };
+
+
+//************************************************************************
+// Redirect Status
+// Standard Reference ISUP         : Chapter 3.98
+//************************************************************************
+  type record Redirect_status
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 RedirStInd, // Redirect status indicator
+     BIT5 spare,      // Spare
+     BIT1 ExtI        // Extension indicator
+    } with { variant "PRESENCE( id = '10001010'B)";
+             variant (lengthField)"LENGTHTO(RedirStInd,spare,ExtI)";
+           };
+
+
+//************************************************************************
+// Redirecting Number
+// Ericsson Specification Reference: Chapter 2.3.3.59
+// Standard Reference ISUP         : Chapter 3.44
+//************************************************************************
+  type record Redirecting_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd, // Nature of address indicator
+     BIT1 OddEven,         // Odd/even indicator
+     BIT2 Spare1,              // Spare
+     BIT2 AddrPresentRestInd, // Address presentation REStricted indicator
+     BIT3 NumberingPlanInd,   // Numbering plan indicator
+     BIT1 Spare,              // Spare
+     HEX1_32 AddrSignals optional, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '00001011'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,
+                                            Spare1,AddrPresentRestInd,
+                                            NumberingPlanInd,Spare,AddrSignals,
+                                            Filler)";
+           };
+
+
+
+//************************************************************************
+// Redirection Information
+// Ericsson Specification Reference: Chapter 2.3.3.60
+// Standard Reference ISUP         : Chapter 3.45
+//************************************************************************
+  type record Redirection_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT3 RedirectionInd,            // Redirecting indicator
+     BIT1 Spare1,                    // Redirecting indicator
+     BIT4 OriginalRedirectionReason, // Original redirection reason
+     BIT3 RedirectionCounter optional, // Redirection counter
+     BIT1 Spare2 optional,             // Spare
+     BIT4 RedirectingReason optional   // Redirecting reason
+    } with { variant "PRESENCE( id = '00010011'B)";
+             variant (lengthField)"LENGTHTO(RedirectionInd,Spare1,
+                                            OriginalRedirectionReason,
+                                            RedirectionCounter,Spare2,
+                                            RedirectingReason)";
+           };
+
+
+//************************************************************************
+// Redirection Number
+// Ericsson Specification Reference: Chapter 2.3.3.61
+// Standard Reference ISUP         : Chapter 3.46
+//************************************************************************
+  type record Redirection_number
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 NatureOfAddrInd, // Nature of address indicator
+     BIT1 OddEven,         // Odd/even indicator
+     BIT4 Spare,              // spare
+     BIT3 NumberingPlanInd,   // Numbering plan indicator
+     BIT1 INNInd,             // Internal network number indicator
+     HEX1_32 AddrSignals, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '00001100'B)";
+             variant (lengthField)"LENGTHTO(NatureOfAddrInd,OddEven,Spare,
+                                            NumberingPlanInd,INNInd,
+                                            AddrSignals,Filler)";
+           };
+
+//************************************************************************
+// Redirection Number Restriction
+// Ericsson Specification Reference: Chapter 2.3.3.62
+// Standard Reference ISUP         : Chapter 3.47
+//************************************************************************
+  type record Redirection_number_restriction
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 PresRestInd, // Presentation REStricted indicator
+     BIT6 Spare        // Spare
+    } with { variant "PRESENCE( id = '01000000'B)";
+             variant (lengthField)"LENGTHTO(PresRestInd,Spare)";
+           };
+
+
+//************************************************************************
+// Remote Operations
+// Standard Reference ISUP         : Chapter 3.48
+//************************************************************************
+  type record Remote_operations
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT5 ProtProf, // Protocol profile
+     BIT2 spare,    //  Spare
+     BIT1 ExtI,     // Extension indicator
+     OCTN Comp      // Components
+    } with { variant "PRESENCE( id = '00110010'B)";
+             variant (lengthField)"LENGTHTO(ProtProf,spare,ExtI,Comp)";
+           };
+
+
+//************************************************************************
+// Route Identity
+// Ericsson Specification Reference: Chapter 2.3.3.63
+//************************************************************************
+  type record Route_identity
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT2 RouteIdentity
+    } with { variant "PRESENCE( id = '11111100'B)";
+             variant (lengthField)"LENGTHTO(RouteIdentity)";
+           };
+
+
+//************************************************************************
+// SCF Id
+// Ericsson Specification Reference: Chapter 2.3.3.64
+// Standard Reference ISUP         : Chapter 3.71
+//************************************************************************
+  type record SCF_id
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCTN SCFId
+    } with { variant "PRESENCE( id = '01100110'B)";
+             variant (lengthField)"LENGTHTO(SCFId)";
+           };
+
+
+//************************************************************************
+// Service Activation
+// Ericsson Specification Reference: Chapter 2.3.3.65
+// Standard Reference ISUP         : Chapter 3.49
+//************************************************************************
+  type record Service_activation
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCTN ServAct_contents
+    } with { variant "PRESENCE( id = '00110011'B)";
+             variant (lengthField)"LENGTHTO(ServAct_contents)";
+           };
+
+
+//************************************************************************
+// Signalling Point Code
+// Standard Reference ISUP         : Chapter 3.50
+//************************************************************************
+  type record Signalling_point_code
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT2 SPC_contents // Signalling point code
+    } with { variant "PRESENCE( id = '00011110'B)";
+             variant (lengthField)"LENGTHTO(SPC_contents)";
+           };
+
+
+//************************************************************************
+// Subsequent Number
+// Ericsson Specification Reference: Chapter 2.3.3.66
+// Standard Reference ISUP         : Chapter 3.51
+//************************************************************************
+  type record Subsequent_number_OPT
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT7 Spare,   // Spare
+     BIT1 OddEven, // Odd/even inicator
+     HEX1_32 AddrSignals, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant "PRESENCE( id = '00000101'B)";
+             variant (lengthField)"LENGTHTO(Spare,OddEven,AddrSignals,Filler)";
+           };
+
+  type record Subsequent_number    
+    {
+     INT1 lengthField,
+
+     BIT7 Spare,   // Spare
+     BIT1 OddEven, // Odd/even inicator
+     HEX1_32 AddrSignals, // Address signals and Filler if odd addr.signals
+     HEX1 Filler optional
+    } with { variant (AddrSignals) "HEXORDER(low)";
+             variant (lengthField)"LENGTHTO(Spare,OddEven,AddrSignals,Filler)";
+           };
+
+
+//************************************************************************
+// Suspend Resume Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.67
+// Standard Reference ISUP         : Chapter 3.52
+//************************************************************************
+  type record Suspend_resume_indicators    
+    {
+     BIT1 SUSRESInd, // Suspend/resume indicator
+     BIT7 Spare      // Spare
+    } with { variant "" };
+
+
+//************************************************************************
+// Tariff Indicator
+// Ericsson Specification Reference: Chapter 2.3.3.68
+//************************************************************************
+  type record Tariff_indicator
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCT1 TariffInd, // Tariff indicator
+     OCT1 Reserved optional// Reserved
+    } with { variant "PRESENCE( id = '11111101'B)";
+             variant (lengthField)"LENGTHTO(TariffInd,Reserved)";
+           };
+
+
+//************************************************************************
+// Transit Network Selection
+// Ericsson Specification Reference: Chapter 2.3.3.69
+// Standard Reference ISUP         : Chapter 3.53
+//************************************************************************
+  type record Transit_network_selection
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT4 NetIdPlan,   //  Network identification plan
+     BIT3 TypeOfNetId, // Type of network identification
+     BIT1 OddEvenInd,  // Odd/even inicator
+     OCTN NetId // Network identification
+    } with { variant "PRESENCE( id = '00100011'B)";
+             variant (lengthField)"LENGTHTO(NetIdPlan,TypeOfNetId,OddEvenInd,
+                                            NetId)";
+           };
+
+
+//************************************************************************
+// Transmission Medium Requirement
+// Ericsson Specification Reference: Chapter 2.3.3.70
+// Standard Reference ISUP         : Chapter 3.54
+//************************************************************************
+  type record Transmission_medium_requirement    
+    {
+     BIT8 TMR
+    } with { variant "" };
+
+//************************************************************************
+// Transmission Medium Requirement Prime
+// Ericsson Specification Reference: Chapter 2.3.3.71
+// Standard Reference ISUP         : Chapter 3.55
+//************************************************************************
+  type record Transmission_medium_requirement_prime
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT8 TMRp_field
+    } with { variant "PRESENCE( id = '00111110'B)";
+             variant (lengthField)"LENGTHTO(TMRp_field)";
+           };
+
+//************************************************************************
+// Transmission Medium Used
+// Ericsson Specification Reference: Chapter 2.3.3.72
+// Standard Reference ISUP         : Chapter 3.56
+//************************************************************************
+  type record Transmission_medium_used
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT8 TMU_field
+    } with { variant "PRESENCE( id = '00110101'B)";
+             variant (lengthField)"LENGTHTO(TMU_field)";
+           };
+
+
+//************************************************************************
+// UID Action Indicators
+// Standard Reference ISUP         : Chapter 3.78
+//************************************************************************
+  type record UID_action_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 ThConInsInd, // Through CONnection instruction indicator
+     BIT1 T9InsInd,    // T9 timer instruction indicator
+     BIT5 spare,       // Spare
+     BIT1 ExtI         // Extension indicator
+    } with { variant "PRESENCE( id = '01110100'B)";
+             variant (lengthField)"LENGTHTO(ThConInsInd,T9InsInd,spare,ExtI)";
+           };
+
+
+//************************************************************************
+// UID Capability Indicators
+// Standard Reference ISUP         : Chapter 3.79
+//************************************************************************
+  type record UID_capability_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 through_connection_indicator, // Through CONnection indicator
+     BIT1 T9_timer_indicator, // T9 timer indicator
+     BIT5 spare, // T9 timer indicator
+     BIT1 ExtI // Extension indicator
+    } with { variant "PRESENCE( id = '01110101'B)";
+             variant (lengthField)"LENGTHTO(through_connection_indicator,
+                                            T9_timer_indicator,spare,ExtI)";
+           };
+
+
+//************************************************************************
+// User Service Information
+// Ericsson Specification Reference: Chapter 2.3.3.73
+// Standard Reference ISUP         : Chapter 3.57
+//************************************************************************
+  type record User_service_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT5 InfTrC, // Information transfer capability
+     BIT2 CodS,   // Coding standard
+     BIT1 ExtI_1, // Extension indicator (1)
+  //EXT GR1 start
+     BIT5 infTR,    // Information transfer rate
+     BIT2 TrMod,    // Transfer mode
+     BIT1 ExtI_2,   // Extension indicator (0/1)
+
+     BIT2 establishment optional, // demand
+     BIT2 configuration optional, // point-to-point
+     BIT3 structure optional,     // default
+     BIT1 ext2a optional,
+
+     BIT5 infoTransRate optional, //used for packet-mode calls
+     BIT2 symmetry optional,      // bi-directional symmetric
+     BIT1 ext2b optional,
+   //EXT GR1 end
+     BIT7 RatMul optional,   // Rate multiplier
+     BIT1 ExtI_2_1 optional, // Extension indicator (1)
+
+     Layer1_info  layer1 optional,
+     Layer2_info  layer2 optional,
+     Layer3_info  layer3 optional
+    } with { variant "EXTENSION_BIT_GROUP(yes,infTR,ext2b)";
+             variant (RatMul) "PRESENCE(infTR = '11000'B)";
+             variant (ExtI_2_1) "PRESENCE(infTR = '11000'B)";
+             variant "TAG ( layer1, layer_id = '01'B;	
+                            layer2, layer_id = '10'B;	
+                            layer3, layer_id = '11'B;)"
+             variant "PRESENCE( id = '00011101'B)";
+             variant (lengthField)"LENGTHTO(InfTrC,CodS,ExtI_1,infTR,TrMod,
+                                            ExtI_2,establishment,configuration,
+                                            structure,ext2a,infoTransRate,
+                                            symmetry,ext2b,RatMul,ExtI_2_1,
+                                            layer1,layer2,layer3)";
+           };
+
+  type record Layer1_info
+    {
+     BIT5 UInf1,    // User INFormation layer 1 protocol
+     BIT2 layer_id, // Layer identification
+     BIT1 ExtI_3,   // Extension indicator (0/1)
+
+     BIT5 UsrRate optional, // User rate
+     BIT1 Negot optional,   // Negotiation
+     BIT1 SynAsyn optional, // Synchronous/Asynchronous
+     BIT1 ExtI_3a optional, // Extension indicator (0/1)
+
+     //Note: the content of this field depends on field UInf1 - see Q.931 4.5.5
+     BIT7 Bits_3b optional,  // info bits in octet 3b
+     BIT1 ExtI_3b optional,    // Extension indicator (0/1)
+
+     //BIT1 Spare_1 optional, // Spare
+     //BIT1 FlCtrRx optional, // Flow control on Rx
+     //BIT1 FlCtrTx optional, // Flow control on Tx
+     //BIT1 NICRx optional,   // Network independent clock on RX
+     //BIT1 NICTx optional,   // Network independent clock on TX
+     //BIT2 IntRate optional, // Intermediate rate
+     //BIT1 ExtI_6 optional,  // Extension indicator (0/1)
+
+     //BIT1 Spare_2 optional,  // Spare
+     //BIT1 InBndNeg optional, // In-band/out-band negotiation
+     //BIT1 Ass optional,      // Assignor/assignee
+     //BIT1 LLINeg optional,   // Logical link identifier negotiation
+     //BIT1 Mode optional,     // Mode of operation
+
+     //BIT1 MultFr optional,// Multiple frame establishment support in data link
+     //BIT1 Hdr optional,   // Rate adaption header/no header
+     //BIT1 ExtI_7 optional,// Extension indicator (0/1)
+
+     BIT3 Prty optional,    // Parity INFormation
+     BIT2 NDatBit optional, // Number of data bits excluding parity bit if pres.
+     BIT2 NStpBit optional, // Number of stop bits
+     BIT1 ExtI_3c optional,  // Extension indicator (0/1)
+
+     BIT6 MdmTyp optional, // Modem type
+     BIT1 DupMod optional, // Mode duplex
+     BIT1 ExtI_3d optional  // Extension indicator (1)
+     } with { variant "EXTENSION_BIT(yes)"}
+
+  type record Layer2_info
+    {
+     BIT5 uInf2,    // User information layer 2 protocol
+     BIT2 layer_id, // Layer identification
+     BIT1 extI_10   // Extension indicator (1)
+    } with { variant "" };
+
+  type record Layer3_info
+    {
+     BIT5 uInf3,    // User information layer 3 protocol
+     BIT2 layer_id, // Layer identification
+     BIT1 extI_11   // Extension indicator (1)
+    } with { variant "" };
+
+
+//************************************************************************
+// User Service Information Prime
+// Ericsson Specification Reference: Chapter 2.3.3.74
+// Standard Reference ISUP         : Chapter 3.58
+//************************************************************************
+  type record User_service_information_prime
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT5 InfTrC, // Information transfer capability
+     BIT2 CodS,   // Coding standard
+     BIT1 ExtI_1, // Extension indicator (1)
+  //EXT GR1 start
+     BIT5 infTR,    // Information transfer rate
+     BIT2 TrMod,    // Transfer mode
+     BIT1 ExtI_2,   // Extension indicator (0/1)
+
+     BIT2 establishment optional, // demand
+     BIT2 configuration optional, // point-to-point
+     BIT3 structure optional,     // default
+     BIT1 ext2a optional,
+
+     BIT5 infoTransRate optional, //used for packet-mode calls
+     BIT2 symmetry optional,      // bi-directional symmetric
+     BIT1 ext2b optional,
+   //EXT GR1 end
+     BIT7 RatMul optional,   // Rate multiplier
+     BIT1 ExtI_2_1 optional, // Extension indicator (1)
+
+     Layer1_info  layer1 optional,
+     Layer2_info  layer2 optional,
+     Layer3_info  layer3 optional
+    } with { variant "EXTENSION_BIT_GROUP(yes,infTR,ext2b)";
+             variant (RatMul) "PRESENCE(infTR = '11000'B)";
+             variant (ExtI_2_1) "PRESENCE(infTR = '11000'B)";
+             variant "TAG ( layer1, layer_id = '01'B;	
+                            layer2, layer_id = '10'B;	
+                            layer3, layer_id = '11'B;)"
+             variant "PRESENCE( id = '00110000'B)";
+             variant (lengthField)"LENGTHTO(InfTrC,CodS,ExtI_1,infTR,TrMod,
+                                            ExtI_2,establishment,configuration,
+                                            structure,ext2a,infoTransRate,
+                                            symmetry,ext2b,RatMul,ExtI_2_1,
+                                            layer1,layer2,layer3)";
+            };
+/* The old version is commented out because it could cause decoding problems.
+  type record User_service_information    // 3.57 / Q.763
+    {
+     BIT5 InfTrC, // Information transfer capability
+     BIT2 CodS, // Coding standard
+     BIT1 ExtI_1, // Extension indicator (1)
+     BIT5 InfTR, // Information transfer rate
+     BIT2 TrMod, // Transfer mode
+     BIT1 ExtI_2, // Extension indicator (0/1)
+     BIT8 RatMul optional, // Rate multiplier
+     BIT1 ExtI_3 optional, // Extension indicator (1)
+     BIT5 UInf1 optional, // User INFormation layer 1 protocol
+     BIT2 Lay1 optional, // Layer identification
+     BIT1 ExtI_4 optional, // Extension indicator (0/1)
+     BIT5 UsrRate optional, // User rate
+     BIT1 Negot optional, // Negotiation
+     BIT1 SynAsyn optional, // Synchronous/Asynchronous
+     BIT1 ExtI_5 optional, // Extension indicator (0/1)
+     BIT1 Spare_1 optional, // Spare
+     BIT1 FlCtrRx optional, // Flow control on Rx
+     BIT1 FlCtrTx optional, // Flow control on Tx
+     BIT1 NICRx optional, // Network independent clock on RX
+     BIT1 NICTx optional, // Network independent clock on TX
+     BIT2 IntRate optional, // Intermediate rate
+     BIT1 ExtI_6 optional, // Extension indicator (0/1)
+     BIT1 Spare_2 optional, // Spare
+     BIT1 InBndNeg optional, // In-band/out-band negotiation
+     BIT1 Ass optional, // Assignor/assignee
+     BIT1 LLINeg optional, // Logical link identifier negotiation
+     BIT1 Mode optional, // Mode of operation
+     BIT1 MultFr optional, // Multiple frame establishment support in data link
+     BIT1 Hdr optional, // Rate adaption header/no header
+     BIT1 ExtI_7 optional, // Extension indicator (0/1)
+     BIT3 Prty optional, // Parity INFormation
+     BIT2 NDatBit optional, // Number of data bits excluding parity bit if pres.
+     BIT2 NStpBit optional, // Number of stop bits
+     BIT1 ExtI_8 optional, // Extension indicator (1)
+     BIT6 MdmTyp optional, // Modem type
+     BIT1 DupMod optional, // Mode duplex
+     BIT1 ExtI_9 optional, // Extension indicator (1)
+     BIT5 UInf2 optional, // User INFormation layer 2 protocol
+     BIT2 Lay2 optional, // Layer identification
+     BIT1 ExtI_10 optional, // Extension indicator (1)
+     BIT5 UInf3 optional, // User INFormation layer 3 protocol
+     BIT2 Lay3 optional, // Layer identification
+     BIT1 ExtI_11 optional // Extension indicator (1)
+    } with { variant "" };
+
+
+  type record User_service_information_prime    // 3.58 / Q.763
+    {
+     BIT5 InfTrC, // Information transfer capability
+     BIT2 CodS, // Coding standard
+     BIT1 ExtI_1, // Extension indicator (1)
+     BIT5 InfTR, // Information transfer rate
+     BIT2 TrMod, // Transfer mode
+     BIT1 ExtI_2, // Extension indicator (0/1)
+     BIT8 RatMul optional, // Rate multiplier
+     BIT1 ExtI_3 optional, // Extension indicator (1)
+     BIT5 UInf1 optional, // User INFormation layer 1 protocol
+     BIT2 Lay1 optional, // Layer identification
+     BIT1 ExtI_4 optional, // Extension indicator (0/1)
+     BIT5 UsrRate optional, // User rate
+     BIT1 Negot optional, // Negotiation
+     BIT1 SynAsyn optional, // Synchronous/Asynchronous
+     BIT1 ExtI_5 optional, // Extension indicator (0/1)
+     BIT1 Spare_1 optional, // Spare
+     BIT1 FlCtrRx optional, // Flow control on Rx
+     BIT1 FlCtrTx optional, // Flow control on Tx
+     BIT1 NICRx optional, // Network independent clock on RX
+     BIT1 NICTx optional, // Network independent clock on TX
+     BIT2 IntRate optional, // Intermediate rate
+     BIT1 ExtI_6 optional, // Extension indicator (0/1)
+     BIT1 Spare_2 optional, // Spare
+     BIT1 InBndNeg optional, // In-band/out-band negotiation
+     BIT1 Ass optional, // Assignor/assignee
+     BIT1 LLINeg optional, // Logical link identifier negotiation
+     BIT1 Mode optional, // Mode of operation
+     BIT1 MultFr optional, // Multiple frame establishment support in data link
+     BIT1 Hdr optional, // Rate adaption header/no header
+     BIT1 ExtI_7 optional, // Extension indicator (0/1)
+     BIT3 Prty optional, // Parity INFormation
+     BIT2 NDatBit optional, // Number of data bits excluding parity bit if pres.
+     BIT2 NStpBit optional, // Number of stop bits
+     BIT1 ExtI_8 optional, // Extension indicator (1)
+     BIT6 MdmTyp optional, // Modem type
+     BIT1 DupMod optional, // Mode duplex
+     BIT1 ExtI_9 optional, // Extension indicator (1)
+     BIT5 UInf2 optional, // User INFormation layer 2 protocol
+     BIT2 Lay2 optional, // Layer identification
+     BIT1 ExtI_10 optional, // Extension indicator (1)
+     BIT5 UInf3 optional, // User INFormation layer 3 protocol
+     BIT2 Lay3 optional, // Layer identification
+     BIT1 ExtI_11 optional // Extension indicator (1)
+    } with { variant "" };
+*/
+
+
+//************************************************************************
+// User Teleservice Information
+// Ericsson Specification Reference: Chapter 2.3.3.75
+// Standard Reference ISUP         : Chapter 3.59
+//************************************************************************
+  type record User_teleservice_information
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT2 Pres,     // Presentation
+     BIT3 Interpr,  // Interpretation
+     BIT2 CodS,     // Coding standard
+     BIT1 ExtI_1,   // Extention indicator, always 1
+     BIT7 HLChrInf,   // High layer characteristics identification
+     BIT1 ExtI_2,     // Extension indicator, (0/1)
+     BIT7 ExHLChrInf optional, // Extended high layer characteristics id.
+     BIT1 ExtI_3 optional      // Extention indicator, always 1
+    } with { variant (ExHLChrInf) "PRESENCE(ExtI_2 = '0'B)";
+             variant (ExtI_3) "PRESENCE(ExtI_2 = '0'B)";
+             variant "PRESENCE( id = '00110100'B)";
+             variant (lengthField)"LENGTHTO(Pres,Interpr,CodS,ExtI_1,HLChrInf,
+                                            ExtI_2,ExHLChrInf,ExtI_3)";
+           };
+
+//************************************************************************
+// User To User Indicators
+// Ericsson Specification Reference: Chapter 2.3.3.76
+// Standard Reference ISUP         : Chapter 3.60
+//************************************************************************
+  type record User_to_user_indicators
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     BIT1 Type, //  type
+     BIT2 Service1, // Service 1
+     BIT2 Service2, // Service 2
+     BIT2 Service3, // Service 3
+     BIT1 NetworkDiscardInd //Network discard ind. (spare if Type = request)
+    } with { variant "PRESENCE( id = '00101010'B)";
+             variant (lengthField)"LENGTHTO(Type,Service1,Service2,Service3,
+                                            NetworkDiscardInd)";
+           };
+
+
+//************************************************************************
+// User To User Information
+// Ericsson Specification Reference: Chapter 2.3.3.77
+// Standard Reference ISUP         : Chapter 3.61
+//************************************************************************
+  type record User_to_user_information_OPT
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     OCTN UserInfo
+    } with { variant "PRESENCE( id = '00100000'B)";
+             variant (lengthField)"LENGTHTO(UserInfo)";
+           };
+
+  type record User_to_user_information    
+    {
+     INT1 lengthField,
+
+     OCTN UserInfo
+    } with { variant (lengthField)"LENGTHTO(UserInfo)";
+           };
+
+
+//************************************************************************
+// Global Call Reference
+// GCR included in ISUP market variants based on EED/X 1056-174 Uen - Global
+// Call reference for ISUP and BICC, MSC R12.
+// It is used in the IAM message.  See section 3.1.1 for details.
+//************************************************************************
+  type record Global_call_reference
+    {
+     BIT8 id,
+     INT1 lengthField,
+
+     INT1 netwIdLenInd, // Network ID length indicator
+     OCTN netwId, // Network ID
+     INT1 nodeIdLenInd, // Node ID length indicator
+     OCTN nodeId, // Node ID
+     INT1 callRefLenInd, // Call Reference length indicator
+     OCTN callRefId // Call Reference ID
+    } with { variant (netwIdLenInd) "LENGTHTO (netwId)";
+             variant (nodeIdLenInd) "LENGTHTO(nodeId)";
+             variant (callRefLenInd) "LENGTHTO (callRefId)";
+             variant "PRESENCE( id = '10100100'B)";
+             variant (lengthField)"LENGTHTO(netwIdLenInd,netwId,nodeIdLenInd,
+                                            nodeId,callRefLenInd,callRefId)";
+           };
+} // END Group ISUP_parameters
+
+
+//************************************************************************
+//************************************************************************
+//************************************************************************
+//************************************************************************
+//************************************************************************
+
+
+//************************************************************************
+// ACM - Address complete
+// Ericsson Specification Reference: Chapter 2.2.2.1
+// Standard Reference ISUP         : Chapter 4, Table 21
+//************************************************************************
+  type set ACM_optional_part
+    {
+     Optional_backward_call_indicators      optBackwardCallInd optional,
+     Cause_indicators_OPT                   causeInd optional,
+     User_to_user_indicators                userToUserInd optional,
+     User_to_user_information_OPT           userToUserInfo optional,
+     Access_transport                       accessTransport optional,
+     Generic_notification_indicator_set     genericNotificationInd optional,
+     Transmission_medium_used               transMediumUsed optional,
+     Access_delivery_information            accessDeliveryInfo optional,
+     Redirection_number                     redirectionNum optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     Call_diversion_information             callDiversionInfo optional,
+     Network_specific_facility              networkFacility optional,
+     Redirection_number_restriction         redirectionNumRest optional,
+     Route_identity                         routeIdentity optional,
+     Call_transfer_treatment_indicators     callTransferTreatmentInd optional,
+     Conference_treatment_indicators        conferenceTreatmentInd optional,
+
+     Call_reference                         callReference optional,
+     Echo_control_information               echoControlInfo optional,
+     Remote_operations                      remoteOperations optional,
+     Service_activation                     serviceActivation optional,
+     UID_action_indicators                  UIDAcInd optional,
+     Application_transport_parameter_set    ATPP optional,
+     CCNR_possible_indicator                CCNRP optional,
+     HTR_information                        HTRInfo optional,
+     Pivot_routing_backward_information     PRBI optional,
+     Redirect_status                        RedirSt optional
+    } with { variant (ATPP,genericNotificationInd) "REPEATABLE(yes)";};
+
+
+  type record ACM_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Backward_call_indicators       backwardCallInd,
+     Pointer                        opt_part_ptr,
+     ACM_optional_part              acmOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (acmOptionals)"};
+
+
+//************************************************************************
+// ANM - Answer
+// Ericsson Specification Reference: Chapter 2.2.2.2
+// Standard Reference ISUP         : Chapter 4, Table 22
+//************************************************************************
+  type set ANM_optional_part
+    {
+     Backward_call_indicators_OPT           backwardCallInd optional,
+     Optional_backward_call_indicators      optBackwardCallInd optional,
+     User_to_user_indicators                userToUserInd optional,
+     User_to_user_information_OPT           userToUserInfo optional,
+     Connected_number                       connectedNum optional,
+     Access_transport                       accessTransport optional,
+     Access_delivery_information            accessDeliveryInfo optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     Backward_GVNS                          backwardGVNS optional,
+     Call_history_information               callHistoryInfo optional,
+     Generic_number_set                     genericNum optional,
+     Transmission_medium_used               transMediumUsed optional,
+     Network_specific_facility              networkFacility optional,
+     Redirection_number_restriction         redirectionNumRest optional,
+     Call_transfer_treatment_indicators     callTransferTreatmentInd optional,
+     Conference_treatment_indicators        conferenceTreatmentInd optional,
+
+     Call_reference                         callReference optional,
+     Generic_notification_indicator_set     genericNotificationInd optional,
+     Remote_operations                      remoteOperations optional,
+     Redirection_number                     redirectionNum optional,
+     Service_activation                     serviceActivation optional,
+     Echo_control_information               echoControlInfo optional,
+     Display_information                    DisInf optional,
+     Application_transport_parameter_set    ATPP optional,
+     Pivot_routing_backward_information     PRBI optional,
+     Redirect_status                        RedirSt optional
+    } with { variant (ATPP,genericNotificationInd,genericNum) "REPEATABLE(yes)";};
+
+
+  type record ANM_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     ANM_optional_part              anmOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr)"POINTERTO (anmOptionals)";
+           };
+
+
+//************************************************************************
+// APM - Application Transport
+// Standard Reference ISUP         : Chapter 4, Table 51
+//************************************************************************
+  type set APM_optional_part
+    {
+     Message_compatibility_information      MCI optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     Application_transport_parameter_set    ATPP optional
+    } with { variant (ATPP) "REPEATABLE(yes)";};
+
+
+  type record APM_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     APM_optional_part              apmOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (apmOptionals)";
+           };
+
+
+//************************************************************************
+// BLO - Blocking
+// Ericsson Specification Reference: Chapter 2.2.2.3
+// Standard Reference ISUP         : Chapter 4, Table 39
+//************************************************************************
+  type record BLO_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType
+    } with { variant "" };
+
+
+//************************************************************************
+// BLA - Blocking Acknowledgement
+// Ericsson Specification Reference: Chapter 2.2.2.4
+// Standard Reference ISUP         : Chapter 4, Table 39
+//************************************************************************
+  type record BLA_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType
+    } with { variant "" };
+
+
+//************************************************************************
+// CPG - Call Progress
+// Ericsson Specification Reference: Chapter 2.2.2.5
+// Standard Reference ISUP         : Chapter 4, Table 23
+//************************************************************************
+  type set CPG_optional_part
+    {
+     Cause_indicators_OPT                   causeInd optional,
+     Backward_call_indicators_OPT           backwardCallInd optional,
+     Optional_backward_call_indicators      optBackwardCallInd optional,
+     Access_transport                       accessTransport optional,
+     User_to_user_indicators                userToUserInd optional,
+     Redirection_number                     redirectionNum optional,
+     User_to_user_information_OPT           userToUserInfo optional,
+     Generic_notification_indicator_set     genericNotificationInd optional,
+     Network_specific_facility              networkFacility optional,
+     Transmission_medium_used               transMediumUsed optional,
+     Access_delivery_information            accessDeliveryInfo optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     Call_diversion_information             callDiversionInfo optional,
+     Redirection_number_restriction         redirectionNumRest optional,
+     Call_transfer_number                   callTransferNumber optional,
+     Call_transfer_treatment_indicators     callTransferTreatmentInd optional,
+     Conference_treatment_indicators        conferenceTreatmentInd optional,
+
+     Call_reference                         callReference optional,
+     Remote_operations                      remoteOperations optional,
+     Service_activation                     serviceActivation optional,
+     Echo_control_information               echoControlInfo optional,
+     Connected_number                       connectedNum optional,
+     Backward_GVNS                          backwardGVNS optional,
+     Generic_number_set                     genericNum optional,
+     Call_history_information               callHistoryInfo optional,
+     UID_action_indicators                  UIDAcInd optional,
+     Application_transport_parameter_set    ATPP optional,
+     CCNR_possible_indicator                CCNRP optional,
+     Pivot_routing_backward_information     PRBI optional,
+     Redirect_status                        RedirSt optional
+    } with { variant (ATPP,genericNotificationInd,genericNum) "REPEATABLE(yes)";};
+
+
+  type record CPG_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Event_information              eventInfo,
+     Pointer                        opt_part_ptr,
+     CPG_optional_part              cpgOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (cpgOptionals)";
+           };
+
+
+//************************************************************************
+// CRG - Charge Information
+// Ericsson Specification Reference: Chapter 2.2.2.6
+//************************************************************************
+  type set CRG_optional_part
+    {
+     Meter_pulse_indicator                  meterPulseInd optional,
+     Tariff_indicator                       tariffInd optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional
+    } with { variant "" };
+
+
+  type record CRG_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     CRG_optional_part              crgOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr)"POINTERTO (crgOptionals)";
+           };
+
+
+//************************************************************************
+// CGB - Circuit Group Blocking
+// Ericsson Specification Reference: Chapter 2.2.2.7
+// Standard Reference ISUP         : Chapter 4, Table 40
+//************************************************************************
+  type record CGB_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Circuit_group_supervision_message_type_indicator  circuitGroupSupervMsgInd,
+     Pointer                        var_part_ptr,
+     Range_and_status               rangeAndStatus
+    } with { variant (var_part_ptr) "POINTERTO (rangeAndStatus)";
+           };
+
+
+//************************************************************************
+// CGBA - Circuit Group Blocking Acknowledgement
+// Ericsson Specification Reference: Chapter 2.2.2.8
+// Standard Reference ISUP         : Chapter 4, Table 40
+//************************************************************************
+  type record CGBA_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Circuit_group_supervision_message_type_indicator  circuitGroupSupervMsgInd,
+     Pointer                        var_part_ptr,
+     Range_and_status               rangeAndStatus
+    } with { variant (var_part_ptr) "POINTERTO (rangeAndStatus)";
+           };
+
+
+//************************************************************************
+// CQM - Circuit Group Query
+// Ericsson Specification Reference: Chapter 2.2.2.9
+// Standard Reference ISUP         : Chapter 4, Table 41
+//************************************************************************
+  type record CQM_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        var_part_ptr,
+     Range_and_status               rangeAndStatus
+     } with { variant (var_part_ptr) "POINTERTO (rangeAndStatus)";
+            };
+
+
+//************************************************************************
+// CQR - Circuit Group Query Response
+// Ericsson Specification Reference: Chapter 2.2.2.10
+// Standard Reference ISUP         : Chapter 4, Table 24
+//************************************************************************
+  type record CQR_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        var1_part_ptr,
+     Pointer                        var2_part_ptr,
+     Range_and_status               rangeAndStatus,
+     Circuit_state_indicator        circuitStateInd
+     } with { variant (var1_part_ptr) "POINTERTO (rangeAndStatus)";
+              variant (var2_part_ptr) "POINTERTO (circuitStateInd)";
+            };
+
+
+//************************************************************************
+// GRS - Circuit Group Reset
+// Ericsson Specification Reference: Chapter 2.2.2.11
+// Standard Reference ISUP         : Chapter 4, Table 41
+//************************************************************************
+  type record GRS_parameters
+     {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        var_part_ptr,
+     Range_and_status               rangeAndStatus
+     } with { variant (var_part_ptr) "POINTERTO (rangeAndStatus)";
+            };
+
+
+//************************************************************************
+// GRA - Circuit Group Reset Acknowledgement
+// Ericsson Specification Reference: Chapter 2.2.2.12
+// Standard Reference ISUP         : Chapter 4, Table 25
+//************************************************************************
+  type record GRA_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        var_part_ptr,
+     Range_and_status               rangeAndStatus
+     } with { variant (var_part_ptr) "POINTERTO (rangeAndStatus)";
+            };
+
+//************************************************************************
+// GGU - Circuit Group Unblocking
+// Ericsson Specification Reference: Chapter 2.2.2.13
+// Standard Reference ISUP         : Chapter 4, Table 40
+//************************************************************************
+  type record CGU_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Circuit_group_supervision_message_type_indicator  circuitGroupSupervMsgInd,
+     Pointer                        var_part_ptr,
+     Range_and_status               rangeAndStatus
+    } with { variant (var_part_ptr) "POINTERTO (rangeAndStatus)";
+           };
+
+
+//************************************************************************
+// CGUA - Circuit Group Unblocking Acknowledgement
+// Ericsson Specification Reference: Chapter 2.2.2.14
+// Standard Reference ISUP         : Chapter 4, Table 40
+//************************************************************************
+  type record CGUA_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Circuit_group_supervision_message_type_indicator  circuitGroupSupervMsgInd,
+     Pointer                        var_part_ptr,
+     Range_and_status               rangeAndStatus
+    } with { variant (var_part_ptr)"POINTERTO (rangeAndStatus)";
+           };
+
+
+//************************************************************************
+// CFN - Confusion
+// Ericsson Specification Reference: Chapter 2.2.2.15
+// Standard Reference ISUP         : Chapter 4, Table 26
+//************************************************************************
+  type record CFN_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        var_part_ptr,
+     Pointer                        opt_part_ptr,
+     Cause_indicators               causeInd,
+     End_of_optional_parameters_indicator endOfOp
+    } with { variant (var_part_ptr)"POINTERTO (causeInd)";
+             variant (opt_part_ptr)"POINTERTO (endOfOp)";
+           };
+
+
+//************************************************************************
+// CON - Connect
+// Ericsson Specification Reference: Chapter 2.2.2.16
+// Standard Reference ISUP         : Chapter 4, Table 27
+//************************************************************************
+  type set CON_optional_part
+    {
+     Optional_backward_call_indicators      optBackwardCallInd optional,
+     Backward_GVNS                          backwardGVNS optional,
+     Connected_number                       connectedNum optional,
+     User_to_user_indicators                userToUserInd optional,
+     User_to_user_information_OPT           userToUserInfo optional,
+     Access_transport                       accessTransport optional,
+     Network_specific_facility              networkFacility optional,
+     Transmission_medium_used               transMediumUsed optional,
+     Access_delivery_information            accessDeliveryInfo optional,
+     Call_history_information               callHistoryInfo optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     Generic_number_set                     genericNum optional,
+     Route_identity                         routeIdentity optional,
+     Redirection_number_restriction         redirectionNumRest optional,
+     Call_transfer_treatment_indicators     callTransferTreatmentInd optional,
+     Conference_treatment_indicators        conferenceTreatmentInd optional,
+
+     Call_reference                         callReference optional,
+     Generic_notification_indicator_set     genericNotificationInd optional,
+     Remote_operations                      remoteOperations optional,
+     Echo_control_information               echoControlInfo optional,
+     Service_activation                     serviceActivation optional,
+     Application_transport_parameter_set    ATPP optional,
+     HTR_information                        HTRInfo optional,
+     Pivot_routing_backward_information     PRBI optional,
+     Redirect_status                        RedirSt optional
+    } with { variant (ATPP,genericNotificationInd,genericNum) "REPEATABLE(yes)";};
+
+
+  type record CON_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Backward_call_indicators       backwardCallInd,
+     Pointer                        opt_part_ptr,
+     CON_optional_part              conOptionals optional,
+     End_of_optional_parameters_indicator endOfOp  optional
+    } with { variant (opt_part_ptr) "POINTERTO (conOptionals)";
+           };
+
+
+//************************************************************************
+// COT - Continuity
+// Ericsson Specification Reference: Chapter 2.2.2.17
+// Standard Reference ISUP         : Chapter 4, Table 28
+//************************************************************************
+  type record COT_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Continuity_indicators          continuityInd
+    } with { variant "" };
+
+
+//************************************************************************
+// CCR - Continuity Check Request
+// Ericsson Specification Reference: Chapter 2.2.2.18
+// Standard Reference ISUP         : Chapter 4, Table 39
+//************************************************************************
+  type record CCR_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType
+    } with { variant "" };
+
+
+//************************************************************************
+// FAC - Facility
+// Ericsson Specification Reference: Chapter 2.2.2.19
+// Standard Reference ISUP         : Chapter 4, Table 45
+//************************************************************************
+  type set FAC_optional_part
+    {
+     Message_compatibility_information      messageCompatibilityInfo optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     Service_activation                     serviceActivation optional,
+     Call_transfer_number                   callTransferNumber optional,
+     Access_transport                       accessTransport optional,
+     Generic_notification_indicator_set     genericNotificationInd optional,
+
+     Remote_operations                      remoteOperations optional,
+     Redirection_number                     redirectionNum optional,
+     Pivot_routing_indicators               PRInd optional,
+     Pivot_status                           PSts optional,
+     Pivot_counter                          PCount optional,
+     Pivot_routing_backward_information     PRBI optional,
+     Redirect_status                        RedirSt optional
+    } with { variant (genericNotificationInd) "REPEATABLE(yes)";};
+
+
+  type record FAC_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     FAC_optional_part              facOptionals optional,
+     End_of_optional_parameters_indicator endOfOp   optional
+    } with { variant (opt_part_ptr)"POINTERTO (facOptionals)";
+           };
+
+
+//************************************************************************
+// FAA - Facility Accepted
+// Ericsson Specification Reference: Chapter 2.2.2.20
+// Standard Reference ISUP         : Chapter 4, Table 42
+//************************************************************************
+  type set FAA_optional_part
+    {
+     User_to_user_indicators                userToUserInd optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+
+     Call_reference                         callReference optional,
+     Connection_request                     connectionRequest optional
+    } with { variant "" };
+
+
+  type record FAA_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Facility_indicator             facilityInd,
+     Pointer                        opt_part_ptr,
+     FAA_optional_part              faaOptionals optional,
+     End_of_optional_parameters_indicator endOfOp  optional
+    } with { variant (opt_part_ptr) "POINTERTO (faaOptionals)";
+           };
+
+
+//************************************************************************
+// FRJ - Facility Reject
+// Ericsson Specification Reference: Chapter 2.2.2.21
+// Standard Reference ISUP         : Chapter 4, Table 29
+//************************************************************************
+  type set FRJ_optional_part
+    {
+     User_to_user_indicators                userToUserInd optional
+    }  with { variant "" };
+
+
+  type record FRJ_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Facility_indicator             facilityInd,
+     Pointer                        var_part_ptr,
+     Pointer                        opt_part_ptr,
+     Cause_indicators               causeInd,
+     FRJ_optional_part              frjOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (var_part_ptr) "POINTERTO (causeInd)";
+             variant (opt_part_ptr) "POINTERTO (frjOptionals)";
+           };
+
+
+//************************************************************************
+// FAR - Facility Request
+// Ericsson Specification Reference: Chapter 2.2.2.22
+// Standard Reference ISUP         : Chapter 4, Table 42
+//************************************************************************
+  type set FAR_optional_part
+    {
+     User_to_user_indicators                userToUserInd optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+
+     Call_reference                         callReference optional,
+     Connection_request                     connectionRequest optional
+    } with { variant "" };
+
+
+  type record FAR_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Facility_indicator             facilityInd,
+     Pointer                        opt_part_ptr,
+     FAR_optional_part              farOptionals optional,
+     End_of_optional_parameters_indicator endOfOp  optional
+    } with { variant (opt_part_ptr) "POINTERTO (farOptionals)";
+           };
+
+
+//************************************************************************
+// FOT - Forward Transfer
+// Ericsson Specification Reference: Chapter 2.2.2.23
+// Standard Reference ISUP         : Chapter 4, Table 37
+//************************************************************************
+  type set FOT_optional_part
+    {
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+
+     Call_reference                         callReference optional
+    } with { variant "" };
+
+
+  type record FOT_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     FOT_optional_part              fotOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (fotOptionals)";
+           };
+
+
+//************************************************************************
+// IDR - Identification Request
+// Ericsson Specification Reference: Chapter 2.2.2.24
+// Standard Reference ISUP         : Chapter 4, Table 47
+//************************************************************************
+  type set IDR_optional_part
+    {
+     MCID_request_indicators                MCIDReqInd optional,
+     Message_compatibility_information      messageCompatibilityInfo optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional
+    } with { variant "" };
+
+
+  type record IDR_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     IDR_optional_part              idrOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (idrOptionals)";
+           };
+
+
+//************************************************************************
+// IRS - Identification Response
+// Ericsson Specification Reference: Chapter 2.2.2.25
+// Standard Reference ISUP         : Chapter 4, Table 48
+//************************************************************************
+  type set IRS_optional_part
+    {
+     MCID_response_indicators               MCIDRpInd optional,
+     Message_compatibility_information      messageCompatibilityInfo optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     Calling_party_number                   callingPartyNum optional,
+     Access_transport                       accessTransport optional,
+     Generic_number_set                     genericNum optional,
+     Charged_party_identification           ChPId optional
+    } with { variant (genericNum) "REPEATABLE(yes)";};
+
+
+  type record IRS_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     IRS_optional_part              irsOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (irsOptionals)";
+           };
+
+
+//************************************************************************
+// INF - Information
+// Ericsson Specification Reference: Chapter 2.2.2.26
+// Standard Reference ISUP         : Chapter 4, Table 30
+//************************************************************************
+  type set INF_optional_part
+    {
+     Calling_partys_category_OPT            callingPartyCat optional,
+     Calling_party_number                   callingPartyNum optional,
+     Access_transport                       accessTransport optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     Network_specific_facility              networkFacility optional,
+     Display_information                    displayInfo optional,
+
+     Call_reference                         callReference optional,
+     Connection_request                     connectionRequest optional
+    } with { variant "" };
+
+
+  type record  INF_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Information_indicators         informationInd,
+     Pointer                        opt_part_ptr,
+     INF_optional_part              infOptionals optional,
+     End_of_optional_parameters_indicator endOfOp  optional
+    } with { variant (opt_part_ptr) "POINTERTO (infOptionals)";
+           };
+
+
+//************************************************************************
+// INR - Information Request
+// Ericsson Specification Reference: Chapter 2.2.2.27
+// Standard Reference ISUP         : Chapter 4, Table 31
+//************************************************************************
+  type set INR_optional_part
+    {
+     Network_specific_facility              networkFacility optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+
+     Call_reference                         callReference optional
+    } with { variant "" };
+
+
+  type record  INR_parameters
+    {
+     Circuit_identification_code        cic optional,
+     ISUP_Message_type                  messageType,
+     Information_request_indicators     InfRqInd,
+     Pointer                            opt_part_ptr,
+     INR_optional_part                  inrOptionals optional,
+     End_of_optional_parameters_indicator endOfOp   optional
+    } with { variant (opt_part_ptr) "POINTERTO (inrOptionals)";
+           };
+
+
+//************************************************************************
+// IAM - Initial Address Message
+// Ericsson Specification Reference: Chapter 2.2.2.28
+// Standard Reference ISUP         : Chapter 4, Table 32
+//************************************************************************
+  type set IAM_optional_part
+    {
+     Transit_network_selection              transitNetworkSel optional,
+     Calling_party_number                   callingPartyNum optional,
+     Optional_forward_call_indicators       optForwardCallInd optional,
+     Redirecting_number                     redirectingNum optional,
+     Redirection_information                redirectionInfo optional,
+     Closed_user_group_interlock_code       cUGInterlockCode optional,
+     Original_called_number                 originalCalledNum optional,
+     User_to_user_information_OPT           userToUserInfo optional,
+     Access_transport                       accessTransport optional,
+     User_service_information               userServiceInfo optional,
+     User_to_user_indicators                userToUserInd optional,
+     Generic_number_set                     genericNum optional,
+     Propagation_delay_counter              propDelayCounter optional,
+     User_service_information_prime         userServiceInfoPrime optional,
+     Network_specific_facility              networkFacility optional,
+     Generic_digits_set                     genericDigits optional,
+     Origination_ISC_point_code             origISCPointCode optional,
+     User_teleservice_information           userTeleServiceInfo optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     MLPP_precedence                        mLPPprecedence optional,
+     Route_identity                         routeIdentity optional,
+     Transmission_medium_requirement_prime  transMediumReqPrime optional,
+     Location_number                        locationNum optional,
+     Forward_GVNS                           forwardGVNS optional,
+     Freephone_indicators                   freePhoneInd optional,
+     CCSS_parameter                         ccssPar optional,
+     Distributed_dynamic_routing_indicators distrDynRoutInd optional,
+     Additional_charging_information        addChargeInfo optional,
+     Additional_routing_information         addRoutInfo optional,
+     Correlation_id                         correlationId optional,
+     SCF_id                                 SCFId optional,
+     Call_transfer_treatment_indicators     callTransferTreatmentInd optional,
+     Conference_treatment_indicators        conferenceTreatmentInd optional,
+     Call_offering_treatment_indicators     callOfferingTreatmentInd optional,
+     Call_diversion_treatment_indicators    callDiversionTreatmentInd optional,
+     Network_call_reference                 netwCallRef optional,
+     Calling_name_identity                  cgNameId optional,
+     Hop_counter                            HopCnt optional,
+
+     Call_reference                         callReference optional,
+     Connection_request                     connectionRequest optional,
+     Remote_operations                      remoteOperations optional,
+     Generic_notification_indicator_set     genericNotificationInd optional,
+     Service_activation                     serviceActivation optional,
+     Network_management_controls            NetManCon optional,
+     Circuit_assignment_map                 CctAssMap optional,
+     Called_IN_number                       CdINnum optional,
+     UID_capability_indicators              UIDcapInd optional,
+     Echo_control_information               echoControlInfo optional,
+     Collect_call_request                   ColCReq optional,
+     Application_transport_parameter_set    ATPP optional,
+     Pivot_capability                       PivCap optional,
+     Called_directory_number                CDirNb optional,
+     Original_called_IN_number              OCINNb optional,
+     Calling_geodetic_location              CGeoLoc optional,
+     Network_routing_number                 NRNb optional,
+     Query_on_release_capability            QoRCap optional,
+     Pivot_counter                          PCount optional,
+     Pivot_routing_forward_information      PRFI optional,
+     Redirect_capability                    RedirCap optional,
+     Redirect_counter                       RedirCount optional,
+     Redirect_status                        RedirSt optional,
+     Redirect_forward_information           RedirFI optional,
+     Number_portability_forward_information NPFI optional,
+     Global_call_reference                  GCRef optional
+    } with { variant (ATPP,genericNotificationInd,genericNum,genericDigits) 
+                      "REPEATABLE(yes)";};
+
+
+  type record IAM_parameters
+    {
+     Circuit_identification_code          cic optional,
+     ISUP_Message_type                    messageType,
+     Nature_of_connection_indicators      natureOfConnInd,
+     Forward_call_indicators              forwardCallInd,
+     Calling_partys_category              callingPartyCat,
+     Transmission_medium_requirement      transmissionMediumReq,
+     Pointer                              var_part_ptr,
+     Pointer                              opt_part_ptr,
+     Called_party_number                  calledPartyNum,
+     IAM_optional_part                    iamOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (var_part_ptr) "POINTERTO (calledPartyNum)";
+             variant (opt_part_ptr) "POINTERTO (iamOptionals)";
+           };
+
+
+//************************************************************************
+// IAM_PTSO - Initial Address Message
+// Ericsson Specification Reference: Chapter 2.2.2.28
+// Standard Reference ISUP         : Chapter 4, Table 32
+//************************************************************************
+/*
+  type record PAR_GD
+    {
+     OCT1 parameter_type,
+     OCT1 lengthf,
+     Generic_digits parameter_contents
+    } with { variant "" };
+
+
+  type record PAR_OISCP
+    {
+     OCT1 parameter_type,
+     OCT1 lengthf,
+     Origination_ISC_point_code parameter_contents
+    } with { variant "" };
+
+
+  type record PAR_AT
+    {
+     OCT1 parameter_type,
+     OCT1 lengthf,
+     Access_transport parameter_contents
+    } with { variant "" };
+
+
+  type record PAR_CPN
+    {
+     OCT1 parameter_type,
+     OCT1 lengthf,
+     Called_party_number parameter_contents
+    } with { variant "" };
+
+
+  type record PAR_CGPN
+    {
+     OCT1 parameter_type,
+     OCT1 lengthf,
+     Called_party_number parameter_contents
+    } with { variant "" };
+
+
+
+  type set IAM_PTSO_optional_part
+    {
+     PAR_CGPN  callingPartyNum,
+     PAR_AT    accessTransport,
+     PAR_GD    genericDigits,
+     PAR_OISCP origISCPointCode
+    } with { variant "" };
+
+
+type record IAM_PTSO_parameters
+    {
+     Circuit_identification_code     cic optional,
+     ISUP_Message_type               messageType,
+     Nature_of_connection_indicators natureOfConnInd,
+     Forward_call_indicators             forwardCallInd,
+     Calling_partys_category             callingPartyCat,
+     Transmission_medium_requirement     transmissionMediumReq,
+     Pointer                         var_part_ptr,
+     Pointer                         opt_part_ptr,
+     INT1                            calledPartyNum_length,
+     PAR_CPN                         calledPartyNum,
+     IAM_PTSO_optional_part          iamOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (var_part_ptr) "POINTERTO (calledPartyNum_length)";
+             variant (opt_part_ptr) "POINTERTO (iamOptionals)";
+             variant (calledPartyNum_length) "LENGTHTO (calledPartyNum)";
+           };
+
+*/
+
+
+//************************************************************************
+// LPA - Loop Back Acknowledgement
+// Standard Reference ISUP         : Chapter 4, Table 39
+//************************************************************************
+  type record LPA_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType
+    } with { variant "" };
+
+
+//************************************************************************
+// LOP - Loop Prevention
+// Ericsson Specification Reference: Chapter 2.2.2.29
+// Standard Reference ISUP         : Chapter 4, Table 50
+//************************************************************************
+  type set LOP_optional_part
+    {
+     Message_compatibility_information      messageCompatibilityInfo optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     Call_transfer_reference                callTransferReference optional,
+     Loop_prevention_indicators             loopPreventionInd optional
+    } with { variant "" };
+
+
+  type record LOP_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     LOP_optional_part              lopOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (lopOptionals)";
+           };
+
+
+//************************************************************************
+// NRM - Network Resource Management
+// Standard Reference ISUP         : Chapter 4, Table 46
+//************************************************************************
+  type set NRM_optional_part
+    {
+     Message_compatibility_information      messageCompatibilityInfo optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     Echo_control_information               echoControlInfo optional
+    } with { variant "" };
+
+
+  type record NRM_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     NRM_optional_part              nrmOptionals optional,
+     End_of_optional_parameters_indicator endOfOp  optional
+    } with { variant (opt_part_ptr) "POINTERTO (nrmOptionals)";
+           };
+
+
+//************************************************************************
+// OLM - Overload
+// Standard Reference ISUP         : Chapter 4, Table 39
+//************************************************************************
+  type record OLM_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType
+    } with { variant "" };
+
+
+
+//************************************************************************
+// OPQ - Operator Queue   FS: 2.2.2.32 / 61/15517-CRT 212 31 Uen Rev. A
+//************************************************************************
+/*
+  type set OPQ_optional_part
+    {
+     Message_compatibility_information messageCompatibilityInfo optional
+    } with { variant "" };
+
+  type record OPQ_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     OPQ_optional_part           opqOptionals optional,
+     End_of_optional_parameters_indicator endOfOp   optional
+    } with { variant (opt_part_ptr) "POINTERTO (opqOptionals)" };
+
+*/
+
+
+//************************************************************************
+// OPR - Operator
+// Ericsson Specification Reference: Chapter 2.2.2.30
+//************************************************************************
+  type set OPR_optional_part
+    {
+     Message_compatibility_information      messageCompatibilityInfo optional
+    } with { variant "" };
+
+
+  type record OPR_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     OPR_optional_part              oprOptionals optional,
+     End_of_optional_parameters_indicator endOfOp   optional
+    } with { variant (opt_part_ptr) "POINTERTO (oprOptionals)";
+           };
+
+
+//************************************************************************
+// PAM - Pass-along
+// Standard Reference ISUP         : Chapter 4, Table 43
+//************************************************************************
+  type record PAM_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     OCTN                           contents optional
+    } with { variant (opt_part_ptr) "POINTERTO (contents)";
+           };
+
+
+//************************************************************************
+// PRI - Pre-release Information
+// Standard Reference ISUP         : Chapter 4, Table 52
+//************************************************************************
+  type set PRI_optional_part
+    {
+     Message_compatibility_information      messageCompatibilityInfo optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+     Optional_forward_call_indicators       optForwardCallInd optional,
+     Optional_backward_call_indicators      optBackwardCallInd optional,
+     Application_transport_parameter_set    ATPP optional
+    } with { variant (ATPP)"REPEATABLE(yes)";};
+
+
+  type record PRI_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     PRI_optional_part              priOptionals optional,
+     End_of_optional_parameters_indicator endOfOp  optional
+    } with { variant (opt_part_ptr) "POINTERTO (priOptionals)";
+           };
+
+
+//************************************************************************
+// REL - Release
+// Ericsson Specification Reference: Chapter 2.2.2.31
+// Standard Reference ISUP         : Chapter 4, Table 33
+//************************************************************************
+  type set REL_optional_part
+    {
+     Access_transport                       accessTransport optional,
+     User_to_user_indicators                userToUserInd optional,
+     User_to_user_information_OPT           userToUserInfo optional,
+     Automatic_congestion_level             autCongLevel optional,
+     Network_specific_facility              networkFacility optional,
+     Access_delivery_information            accessDeliveryInfo optional,
+     Redirection_number                     redirectionNum optional,
+     Redirection_information                redirectionInfo optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+
+     Signalling_point_code                  sigPointCode optional,
+     Display_information                    displayInfo optional,
+     Remote_operations                      remoteOperations optional,
+     HTR_information                        HTRInfo optional,
+     Redirect_counter                       RedirCount optional,
+     Redirection_number_restriction         redirectionNumRest optional,
+     Redirect_backward_information          RedirBI optional
+    } with { variant "" };
+
+  type record REL_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        var_part_ptr,
+     Pointer                        opt_part_ptr,
+     Cause_indicators               causeInd,
+     REL_optional_part              relOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (var_part_ptr) "POINTERTO (causeInd)";
+             variant (opt_part_ptr) "POINTERTO (relOptionals)";
+           };
+
+
+//************************************************************************
+// RLC - Release Complete
+// Ericsson Specification Reference: Chapter 2.2.2.32
+// Standard Reference ISUP         : Chapter 4, Table 34
+//************************************************************************
+  type set RLC_optional_part
+    {
+     Cause_indicators_OPT                   causeInd optional
+    } with { variant "" };
+
+
+  type record RLC_parameters
+     {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     RLC_optional_part              rlcOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (rlcOptionals)";
+           };
+
+
+//************************************************************************
+// RSC - Reset Circuit
+// Ericsson Specification Reference: Chapter 2.2.2.33
+// Standard Reference ISUP         : Chapter 4, Table 39
+//************************************************************************
+  type record RSC_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType
+    } with { variant "" };
+
+
+//************************************************************************
+// RES - Resume
+// Ericsson Specification Reference: Chapter 2.2.2.34
+// Standard Reference ISUP         : Chapter 4, Table 38
+//************************************************************************
+  type set RES_optional_part
+    {
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+
+     Call_reference                         callReference optional
+    } with { variant "" };
+
+
+  type record RES_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Suspend_resume_indicators      SUSRESInd,
+     Pointer                        opt_part_ptr,
+     RES_optional_part              resOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (resOptionals)";
+           };
+
+
+//************************************************************************
+// SGM - Segmentation
+// Ericsson Specification Reference: Chapter 2.2.2.35
+// Standard Reference ISUP         : Chapter 4, Table 49
+//************************************************************************
+  type set SGM_optional_part
+    {
+     Access_transport                       accessTransport optional,
+     User_to_user_information_OPT           userToUserInfo optional,
+     Message_compatibility_information      messageCompatibilityInfo optional,
+     Generic_digits_set                     genericDigits optional,
+     Generic_notification_indicator_set     genericNotificationInd optional,
+     Generic_number_set                     genericNum optional,
+     Calling_name_identity                  cgNameId optional
+    } with { variant (genericNotificationInd,genericNum,genericDigits) 
+                      "REPEATABLE(yes)";};
+
+
+  type record SGM_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     SGM_optional_part              sgmOptionals optional,
+     End_of_optional_parameters_indicator endOfOp   optional
+    } with { variant (opt_part_ptr) "POINTERTO (sgmOptionals)";
+           };
+
+
+//************************************************************************
+// SCB - Special Clear Back
+// Ericsson Specification Reference: Chapter 2.2.2.36
+//************************************************************************
+  type set SCB_optional_part
+    {
+     Message_compatibility_information      messageCompatibilityInfo optional
+    } with { variant "" };
+
+
+  type record SCB_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     SCB_optional_part              scbOptionals optional,
+     End_of_optional_parameters_indicator endOfOp  optional
+    } with { variant (opt_part_ptr) "POINTERTO (scbOptionals)";
+           };
+
+
+//************************************************************************
+// SAM - Subsequent Address
+// Ericsson Specification Reference: Chapter 2.2.2.37
+// Standard Reference ISUP         : Chapter 4, Table 35
+//************************************************************************
+  type record SAM_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        var_part_ptr,
+     Pointer                        opt_part_ptr,
+     Subsequent_number              subsequentNum,
+     End_of_optional_parameters_indicator endOfOp
+    } with { variant (var_part_ptr) "POINTERTO (subsequentNum)";
+             variant (opt_part_ptr) "POINTERTO (endOfOp)";
+           };
+
+
+//************************************************************************
+// SDM - Subsequent Directory Number
+// Standard Reference ISUP         : Chapter 4, Table 53
+//************************************************************************
+  type set SDM_optional_part
+    {
+     Subsequent_number_OPT                  subsequentNum optional,
+     Message_compatibility_information      messageCompatibilityInfo optional
+    } with { variant "" };
+
+
+  type record SDM_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     SDM_optional_part              sdmOptionals optional,
+     End_of_optional_parameters_indicator endOfOp  optional
+    } with { variant (opt_part_ptr) "POINTERTO (sdmOptionals)";
+           };
+
+
+//************************************************************************
+// SUS - Suspend
+// Ericsson Specification Reference: Chapter 2.2.2.38
+// Standard Reference ISUP         : Chapter 4, Table 38
+//************************************************************************
+  type set SUS_optional_part
+    {
+     Parameter_compatibility_information    paramCompatibilityInfo optional,
+
+     Call_reference                         callReference optional
+    } with { variant "" };
+
+
+  type record SUS_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Suspend_resume_indicators      SUSRESInd,
+     Pointer                        opt_part_ptr,
+     SUS_optional_part              susOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (susOptionals)";
+           };
+
+
+//************************************************************************
+// UBL - Unblocking
+// Ericsson Specification Reference: Chapter 2.2.2.39
+// Standard Reference ISUP         : Chapter 4, Table 39
+//************************************************************************
+  type record UBL_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType
+    } with { variant "" };
+
+
+//************************************************************************
+// UBA - Unblocking Acknowledgement
+// Ericsson Specification Reference: Chapter 2.2.2.40
+// Standard Reference ISUP         : Chapter 4, Table 39
+//************************************************************************
+  type record UBA_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType
+    } with { variant "" };
+
+
+//***************************************************************************
+// UCIC - Unequipped Circuit Identification Code
+// Ericsson Specification Reference: Chapter 2.2.2.41
+// Standard Reference ISUP         : Chapter 4, Table 39
+//***************************************************************************
+  type record UCIC_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType
+    } with { variant "" };
+
+
+//************************************************************************
+// UPA - User Part Available
+// Ericsson Specification Reference: Chapter 2.2.2.42
+// Standard Reference ISUP         : Chapter 4, Table 44
+//************************************************************************
+  type set UPA_optional_part
+    {
+     Parameter_compatibility_information    paramCompatibilityInfo optional
+    } with { variant ""};
+
+
+  type record UPA_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     UPA_optional_part              upaOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (upaOptionals)";
+           };
+
+
+//************************************************************************
+// UPT - User Part Test
+// Ericsson Specification Reference: Chapter 2.2.2.43
+// Standard Reference ISUP         : Chapter 4, Table 44
+//************************************************************************
+  type set UPT_optional_part
+    {
+     Parameter_compatibility_information    paramCompatibilityInfo optional
+    } with { variant "" };
+
+
+  type record UPT_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        opt_part_ptr,
+     UPT_optional_part              uptOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (opt_part_ptr) "POINTERTO (uptOptionals)";
+           };
+
+
+//************************************************************************
+// USR - User-to-user Information
+// Ericsson Specification Reference: Chapter 2.2.2.44
+// Standard Reference ISUP         : Chapter 4, Table 36
+//************************************************************************
+  type set USR_optional_part
+    {
+     Access_transport                       accessTransport optional,
+     Parameter_compatibility_information    paramCompatibilityInfo optional
+    } with { variant "" };
+
+
+  type record USR_parameters
+    {
+     Circuit_identification_code    cic optional,
+     ISUP_Message_type              messageType,
+     Pointer                        var_part_ptr,
+     Pointer                        opt_part_ptr,
+     User_to_user_information       userToUserInfo,
+     USR_optional_part              usrOptionals optional,
+     End_of_optional_parameters_indicator endOfOp optional
+    } with { variant (var_part_ptr) "POINTERTO (userToUserInfo)";
+             variant (opt_part_ptr) "POINTERTO (usrOptionals)";
+           };
+
+
+//************************************************************************
+//************************************************************************
+//************************************************************************
+//************************************************************************
+//************************************************************************
+
+//************************************************************************
+// Top level PDU
+//************************************************************************
+  type union PDU_ISUP
+    {
+     ACM_parameters  ISUP_ACM,   //Address complete
+     ANM_parameters  ISUP_ANM,   //Answer
+     APM_parameters  ISUP_APM,   //Application transport
+     BLO_parameters  ISUP_BLO,   //Blocking
+     BLA_parameters  ISUP_BLA,   //Blocking acknowledgement
+     CPG_parameters  ISUP_CPG,   //Call progress
+     CGB_parameters  ISUP_CGB,   //Circuit group BLOcking
+     CGBA_parameters ISUP_CGBA,  //Circuit group BLOcking acknowledgement
+     CQM_parameters  ISUP_CQM,   //Circuit group query
+     CQR_parameters  ISUP_CQR,   //Circuit group query RESponse
+     GRS_parameters  ISUP_GRS,   //Circuit group RESet
+     GRA_parameters  ISUP_GRA,   //Circuit group RESet acknowledge
+     CGU_parameters  ISUP_CGU,   //Circuit group unblocking
+     CGUA_parameters ISUP_CGUA,  //Circuit group unblocking acknowledgement
+     CRG_parameters  ISUP_CRG,   //Charge INFormation
+     CFN_parameters  ISUP_CFN,   //Confusion
+     CON_parameters  ISUP_CON,   //Connect
+     COT_parameters  ISUP_COT,   //Continuity
+     CCR_parameters  ISUP_CCR,   //Continuity check request
+     FAC_parameters  ISUP_FAC,   //Facility
+     FAA_parameters  ISUP_FAA,   //Facility accepted
+     FRJ_parameters  ISUP_FRJ,   //Facility reject
+     FAR_parameters  ISUP_FAR,   //Facility request
+     FOT_parameters  ISUP_FOT,   //Forward transfer
+     IDR_parameters  ISUP_IDR,   //Identification request
+     IRS_parameters  ISUP_IRS,   //Identification RESponse
+     INF_parameters  ISUP_INF,   //Information
+     INR_parameters  ISUP_INR,   //Information request
+     IAM_parameters  ISUP_IAM,   //Initial address
+//     IAM_PTSO_parameters  ISUP_IAM_PTSO,   //Modified Initial address
+     LPA_parameters  ISUP_LPA,   //Loop back acknowlwdgement
+     LOP_parameters  ISUP_LOP,   //Loop prevention
+     NRM_parameters  ISUP_NRM,   //Network RESource management
+     OLM_parameters  ISUP_OLM,   //Overload
+//     OPQ_parameters  ISUP_OPQ,   //Operator Queue
+     OPR_parameters  ISUP_OPR,   //Operator
+     PAM_parameters  ISUP_PAM,   //Pass-along
+     PRI_parameters  ISUP_PRI,   //Pre-release INFormation
+     REL_parameters  ISUP_REL,   //Release
+     RLC_parameters  ISUP_RLC,   //Release complete
+     RSC_parameters  ISUP_RSC,   //Reset circuit
+     RES_parameters  ISUP_RES,   //Resume
+     SGM_parameters  ISUP_SGM,   //Segmentation
+     SAM_parameters  ISUP_SAM,   //Subsequent
+     SCB_parameters  ISUP_SCB,   //Special Clear Back
+     SDM_parameters  ISUP_SDM,   //Subsequent Directory Number
+     SUS_parameters  ISUP_SUS,   //Suspend
+     UBL_parameters  ISUP_UBL,   //Unblocking
+     UBA_parameters  ISUP_UBA,   //Unblocking acknowledge
+     UCIC_parameters ISUP_UCIC,  //Unequipped cic
+     UPA_parameters  ISUP_UPA,   //User part available
+     UPT_parameters  ISUP_UPT,   //User part test
+     USR_parameters  ISUP_USR    //User-to-user INFormation
+    } with { variant "TAG(
+                       ISUP_ACM,   messageType = '00000110'B;
+                       ISUP_ANM,   messageType = '00001001'B;
+                       ISUP_APM,   messageType = '01000001'B;
+                       ISUP_BLO,   messageType = '00010011'B;
+                       ISUP_BLA,   messageType = '00010101'B;
+                       ISUP_CPG,   messageType = '00101100'B;
+                       ISUP_CGB,   messageType = '00011000'B;
+                       ISUP_CGBA,  messageType = '00011010'B;
+                       ISUP_CQM,   messageType = '00101010'B;
+                       ISUP_CQR,   messageType = '00101011'B;
+                       ISUP_GRS,   messageType = '00010111'B;
+                       ISUP_GRA,   messageType = '00101001'B;
+                       ISUP_CGU,   messageType = '00011001'B;
+                       ISUP_CGUA,  messageType = '00011011'B;
+                       ISUP_CRG,   messageType = '00110001'B;
+                       ISUP_CFN,   messageType = '00101111'B;
+                       ISUP_CON,   messageType = '00000111'B;
+                       ISUP_COT,   messageType = '00000101'B;
+                       ISUP_CCR,   messageType = '00010001'B;
+                       ISUP_FAC,   messageType = '00110011'B;
+                       ISUP_FAA,   messageType = '00100000'B;
+                       ISUP_FRJ,   messageType = '00100001'B;
+                       ISUP_FAR,   messageType = '00011111'B;
+                       ISUP_FOT,   messageType = '00001000'B;
+                       ISUP_IDR,   messageType = '00110110'B;
+                       ISUP_IRS,   messageType = '00110111'B;
+                       ISUP_INF,   messageType = '00000100'B;
+                       ISUP_INR,   messageType = '00000011'B;
+                       ISUP_IAM,   messageType = '00000001'B;
+//                       ISUP_IAM_PTSO,   messageType = '00000001'B;
+                       ISUP_LPA,   messageType = '00100100'B;
+                       ISUP_LOP,   messageType = '01000000'B;
+                       ISUP_NRM,   messageType = '00110010'B;
+                       ISUP_OLM,   messageType = '00110000'B;
+//                       ISUP_OPQ,   messageType = '11111110'B;
+                       ISUP_OPR,   messageType = '11111111'B;
+                       ISUP_PAM,   messageType = '00101000'B;
+                       ISUP_PRI,   messageType = '01000010'B;
+                       ISUP_REL,   messageType = '00001100'B;
+                       ISUP_RLC,   messageType = '00010000'B;
+                       ISUP_RSC,   messageType = '00010010'B;
+                       ISUP_RES,   messageType = '00001110'B;
+                       ISUP_SGM,   messageType = '00111000'B;
+                       ISUP_SAM,   messageType = '00000010'B;
+                       ISUP_SCB,   messageType = '11111001'B;
+                       ISUP_SDM,   messageType = '01000011'B;
+                       ISUP_SUS,   messageType = '00001101'B;
+                       ISUP_UBL,   messageType = '00010100'B;
+                       ISUP_UBA,   messageType = '00010110'B;
+                       ISUP_UCIC,  messageType = '00101110'B;
+                       ISUP_UPA,   messageType = '00110101'B;
+                       ISUP_UPT,   messageType = '00110100'B;
+                       ISUP_USR,   messageType = '00101101'B)"
+           };
+
+
+//************************************************************************
+//************************************************************************
+//************************************************************************
+//************************************************************************
+//************************************************************************
+}with{ encode "RAW"}//end module