diff --git a/CTP/daVarRpc.h b/CTP/daVarRpc.h
new file mode 100644
index 0000000000000000000000000000000000000000..9f012ce095ff58a3e89da3a74733dd86d44673a0
--- /dev/null
+++ b/CTP/daVarRpc.h
@@ -0,0 +1,164 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#ifndef _DAVARRPC_H_RPCGEN
+#define _DAVARRPC_H_RPCGEN
+
+#include <rpc/rpc.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <time.h>
+#define _xdr_result xdr_result
+#define _xdr_argument xdr_argument
+#define DAVARINT_RPC 1
+#define DAVARFLOAT_RPC 2
+#define DAVARDOUBLE_RPC 3
+#define DAVARSTRING_RPC 4
+#define DAVARERROR_RPC 999
+
+typedef char *PNAME;
+
+typedef struct {
+	u_int NAMELIST_len;
+	PNAME *NAMELIST_val;
+} NAMELIST;
+
+struct any {
+	int valtype;
+	union {
+		struct {
+			u_int i_len;
+			int *i_val;
+		} i;
+		struct {
+			u_int r_len;
+			float *r_val;
+		} r;
+		struct {
+			u_int d_len;
+			double *d_val;
+		} d;
+		char *s;
+		int error;
+	} any_u;
+};
+typedef struct any any;
+
+struct wany {
+	PNAME name;
+	any *val;
+};
+typedef struct wany wany;
+
+typedef struct {
+	u_int RVALLIST_len;
+	any *RVALLIST_val;
+} RVALLIST;
+
+typedef struct {
+	u_int WVALLIST_len;
+	wany *WVALLIST_val;
+} WVALLIST;
+
+typedef struct {
+	u_int ERRLIST_len;
+	int *ERRLIST_val;
+} ERRLIST;
+
+struct TESTNAMELIST {
+	char *test_condition;
+	int max_time_wait;
+	int max_event_wait;
+	int prog;
+	int vers;
+	NAMELIST *NAMELISTP;
+};
+typedef struct TESTNAMELIST TESTNAMELIST;
+
+#define DAVARSVR 0x2c0daFF8
+#define DAVARVERS 1
+
+#if defined(__STDC__) || defined(__cplusplus)
+#define DAVAR_ACKMESSAGE 101
+extern  int * davar_ackmessage_1(char **, CLIENT *);
+extern  int * davar_ackmessage_1_svc(char **, struct svc_req *);
+#define DAVAR_GETLIST 102
+extern  NAMELIST * davar_getlist_1(char **, CLIENT *);
+extern  NAMELIST * davar_getlist_1_svc(char **, struct svc_req *);
+#define DAVAR_READMULTIPLE 103
+extern  RVALLIST * davar_readmultiple_1(NAMELIST *, CLIENT *);
+extern  RVALLIST * davar_readmultiple_1_svc(NAMELIST *, struct svc_req *);
+#define DAVAR_WRITEMULTIPLE 104
+extern  ERRLIST * davar_writemultiple_1(WVALLIST *, CLIENT *);
+extern  ERRLIST * davar_writemultiple_1_svc(WVALLIST *, struct svc_req *);
+#define DAVAR_READMULTIPLE_TEST 105
+extern  int * davar_readmultiple_test_1(TESTNAMELIST *, CLIENT *);
+extern  int * davar_readmultiple_test_1_svc(TESTNAMELIST *, struct svc_req *);
+#define DAVAR_READMULTIPLE_TEST_CB 106
+extern  int * davar_readmultiple_test_cb_1(RVALLIST *, CLIENT *);
+extern  int * davar_readmultiple_test_cb_1_svc(RVALLIST *, struct svc_req *);
+#define DAVAR_READPATTERNMATCH 107
+extern  WVALLIST * davar_readpatternmatch_1(char **, CLIENT *);
+extern  WVALLIST * davar_readpatternmatch_1_svc(char **, struct svc_req *);
+extern int davarsvr_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
+
+#else /* K&R C */
+#define DAVAR_ACKMESSAGE 101
+extern  int * davar_ackmessage_1();
+extern  int * davar_ackmessage_1_svc();
+#define DAVAR_GETLIST 102
+extern  NAMELIST * davar_getlist_1();
+extern  NAMELIST * davar_getlist_1_svc();
+#define DAVAR_READMULTIPLE 103
+extern  RVALLIST * davar_readmultiple_1();
+extern  RVALLIST * davar_readmultiple_1_svc();
+#define DAVAR_WRITEMULTIPLE 104
+extern  ERRLIST * davar_writemultiple_1();
+extern  ERRLIST * davar_writemultiple_1_svc();
+#define DAVAR_READMULTIPLE_TEST 105
+extern  int * davar_readmultiple_test_1();
+extern  int * davar_readmultiple_test_1_svc();
+#define DAVAR_READMULTIPLE_TEST_CB 106
+extern  int * davar_readmultiple_test_cb_1();
+extern  int * davar_readmultiple_test_cb_1_svc();
+#define DAVAR_READPATTERNMATCH 107
+extern  WVALLIST * davar_readpatternmatch_1();
+extern  WVALLIST * davar_readpatternmatch_1_svc();
+extern int davarsvr_1_freeresult ();
+#endif /* K&R C */
+
+/* the xdr functions */
+
+#if defined(__STDC__) || defined(__cplusplus)
+extern  bool_t xdr_PNAME (XDR *, PNAME*);
+extern  bool_t xdr_NAMELIST (XDR *, NAMELIST*);
+extern  bool_t xdr_any (XDR *, any*);
+extern  bool_t xdr_wany (XDR *, wany*);
+extern  bool_t xdr_RVALLIST (XDR *, RVALLIST*);
+extern  bool_t xdr_WVALLIST (XDR *, WVALLIST*);
+extern  bool_t xdr_ERRLIST (XDR *, ERRLIST*);
+extern  bool_t xdr_TESTNAMELIST (XDR *, TESTNAMELIST*);
+
+#else /* K&R C */
+extern bool_t xdr_PNAME ();
+extern bool_t xdr_NAMELIST ();
+extern bool_t xdr_any ();
+extern bool_t xdr_wany ();
+extern bool_t xdr_RVALLIST ();
+extern bool_t xdr_WVALLIST ();
+extern bool_t xdr_ERRLIST ();
+extern bool_t xdr_TESTNAMELIST ();
+
+#endif /* K&R C */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_DAVARRPC_H_RPCGEN */
diff --git a/CTP/daVarRpc_clnt.c b/CTP/daVarRpc_clnt.c
new file mode 100644
index 0000000000000000000000000000000000000000..fb294069701145a2bbd4a9b30955e31bac212f12
--- /dev/null
+++ b/CTP/daVarRpc_clnt.c
@@ -0,0 +1,103 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include <memory.h> /* for memset */
+#include "daVarRpc.h"
+#include <time.h>
+#define _xdr_result xdr_result
+#define _xdr_argument xdr_argument
+
+/* Default timeout can be changed using clnt_control() */
+static struct timeval TIMEOUT = { 25, 0 };
+
+int *
+davar_ackmessage_1(char **argp, CLIENT *clnt)
+{
+	static int clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, DAVAR_ACKMESSAGE,
+		(xdrproc_t) xdr_wrapstring, (caddr_t) argp,
+		(xdrproc_t) xdr_int, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+NAMELIST *
+davar_getlist_1(char **argp, CLIENT *clnt)
+{
+	static NAMELIST clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, DAVAR_GETLIST,
+		(xdrproc_t) xdr_wrapstring, (caddr_t) argp,
+		(xdrproc_t) xdr_NAMELIST, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+RVALLIST *
+davar_readmultiple_1(NAMELIST *argp, CLIENT *clnt)
+{
+	static RVALLIST clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, DAVAR_READMULTIPLE,
+		(xdrproc_t) xdr_NAMELIST, (caddr_t) argp,
+		(xdrproc_t) xdr_RVALLIST, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+ERRLIST *
+davar_writemultiple_1(WVALLIST *argp, CLIENT *clnt)
+{
+	static ERRLIST clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, DAVAR_WRITEMULTIPLE,
+		(xdrproc_t) xdr_WVALLIST, (caddr_t) argp,
+		(xdrproc_t) xdr_ERRLIST, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+int *
+davar_readmultiple_test_1(TESTNAMELIST *argp, CLIENT *clnt)
+{
+	static int clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, DAVAR_READMULTIPLE_TEST,
+		(xdrproc_t) xdr_TESTNAMELIST, (caddr_t) argp,
+		(xdrproc_t) xdr_int, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+WVALLIST *
+davar_readpatternmatch_1(char **argp, CLIENT *clnt)
+{
+	static WVALLIST clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, DAVAR_READPATTERNMATCH,
+		(xdrproc_t) xdr_wrapstring, (caddr_t) argp,
+		(xdrproc_t) xdr_WVALLIST, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
diff --git a/CTP/daVarRpc_svc.c b/CTP/daVarRpc_svc.c
new file mode 100644
index 0000000000000000000000000000000000000000..d0a56db48781f799a49084df8261f1b81bf7e49b
--- /dev/null
+++ b/CTP/daVarRpc_svc.c
@@ -0,0 +1,103 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include "daVarRpc.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <rpc/pmap_clnt.h>
+#include <string.h>
+#include <memory.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+#ifndef SIG_PF
+#define SIG_PF void(*)(int)
+#endif
+#include <time.h>
+#define _xdr_result xdr_result
+#define _xdr_argument xdr_argument
+
+void
+davarsvr_1(struct svc_req *rqstp, register SVCXPRT *transp)
+{
+	union {
+		char *davar_ackmessage_1_arg;
+		char *davar_getlist_1_arg;
+		NAMELIST davar_readmultiple_1_arg;
+		WVALLIST davar_writemultiple_1_arg;
+		TESTNAMELIST davar_readmultiple_test_1_arg;
+		RVALLIST davar_readmultiple_test_cb_1_arg;
+		char *davar_readpatternmatch_1_arg;
+	} argument;
+	char *result;
+	xdrproc_t _xdr_argument, _xdr_result;
+	char *(*local)(char *, struct svc_req *);
+
+	switch (rqstp->rq_proc) {
+	case NULLPROC:
+		(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
+		return;
+
+	case DAVAR_ACKMESSAGE:
+		_xdr_argument = (xdrproc_t) xdr_wrapstring;
+		_xdr_result = (xdrproc_t) xdr_int;
+		local = (char *(*)(char *, struct svc_req *)) davar_ackmessage_1_svc;
+		break;
+
+	case DAVAR_GETLIST:
+		_xdr_argument = (xdrproc_t) xdr_wrapstring;
+		_xdr_result = (xdrproc_t) xdr_NAMELIST;
+		local = (char *(*)(char *, struct svc_req *)) davar_getlist_1_svc;
+		break;
+
+	case DAVAR_READMULTIPLE:
+		_xdr_argument = (xdrproc_t) xdr_NAMELIST;
+		_xdr_result = (xdrproc_t) xdr_RVALLIST;
+		local = (char *(*)(char *, struct svc_req *)) davar_readmultiple_1_svc;
+		break;
+
+	case DAVAR_WRITEMULTIPLE:
+		_xdr_argument = (xdrproc_t) xdr_WVALLIST;
+		_xdr_result = (xdrproc_t) xdr_ERRLIST;
+		local = (char *(*)(char *, struct svc_req *)) davar_writemultiple_1_svc;
+		break;
+
+	case DAVAR_READMULTIPLE_TEST:
+		_xdr_argument = (xdrproc_t) xdr_TESTNAMELIST;
+		_xdr_result = (xdrproc_t) xdr_int;
+		local = (char *(*)(char *, struct svc_req *)) davar_readmultiple_test_1_svc;
+		break;
+
+	case DAVAR_READMULTIPLE_TEST_CB:
+		_xdr_argument = (xdrproc_t) xdr_RVALLIST;
+		_xdr_result = (xdrproc_t) xdr_int;
+		local = (char *(*)(char *, struct svc_req *)) davar_readmultiple_test_cb_1_svc;
+		break;
+
+	case DAVAR_READPATTERNMATCH:
+		_xdr_argument = (xdrproc_t) xdr_wrapstring;
+		_xdr_result = (xdrproc_t) xdr_WVALLIST;
+		local = (char *(*)(char *, struct svc_req *)) davar_readpatternmatch_1_svc;
+		break;
+
+	default:
+		svcerr_noproc (transp);
+		return;
+	}
+	memset ((char *)&argument, 0, sizeof (argument));
+	if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
+		svcerr_decode (transp);
+		return;
+	}
+	result = (*local)((char *)&argument, rqstp);
+	if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) {
+		svcerr_systemerr (transp);
+	}
+	if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
+		fprintf (stderr, "%s", "unable to free arguments");
+		exit (1);
+	}
+	return;
+}
diff --git a/CTP/daVarRpc_xdr.c b/CTP/daVarRpc_xdr.c
new file mode 100644
index 0000000000000000000000000000000000000000..6c2a0e33411d80353ca586e466a33dd7cc43cff7
--- /dev/null
+++ b/CTP/daVarRpc_xdr.c
@@ -0,0 +1,181 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include "daVarRpc.h"
+#include <time.h>
+#define _xdr_result xdr_result
+#define _xdr_argument xdr_argument
+
+bool_t
+xdr_PNAME (XDR *xdrs, PNAME *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_string (xdrs, objp, ~0))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_NAMELIST (XDR *xdrs, NAMELIST *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_array (xdrs, (char **)&objp->NAMELIST_val, (u_int *) &objp->NAMELIST_len, ~0,
+		sizeof (PNAME), (xdrproc_t) xdr_PNAME))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_any (XDR *xdrs, any *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_int (xdrs, &objp->valtype))
+		 return FALSE;
+	switch (objp->valtype) {
+	case DAVARINT_RPC:
+		 if (!xdr_array (xdrs, (char **)&objp->any_u.i.i_val, (u_int *) &objp->any_u.i.i_len, ~0,
+			sizeof (int), (xdrproc_t) xdr_int))
+			 return FALSE;
+		break;
+	case DAVARFLOAT_RPC:
+		 if (!xdr_array (xdrs, (char **)&objp->any_u.r.r_val, (u_int *) &objp->any_u.r.r_len, ~0,
+			sizeof (float), (xdrproc_t) xdr_float))
+			 return FALSE;
+		break;
+	case DAVARDOUBLE_RPC:
+		 if (!xdr_array (xdrs, (char **)&objp->any_u.d.d_val, (u_int *) &objp->any_u.d.d_len, ~0,
+			sizeof (double), (xdrproc_t) xdr_double))
+			 return FALSE;
+		break;
+	case DAVARSTRING_RPC:
+		 if (!xdr_string (xdrs, &objp->any_u.s, ~0))
+			 return FALSE;
+		break;
+	case DAVARERROR_RPC:
+		 if (!xdr_int (xdrs, &objp->any_u.error))
+			 return FALSE;
+		break;
+	default:
+		break;
+	}
+	return TRUE;
+}
+
+bool_t
+xdr_wany (XDR *xdrs, wany *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_PNAME (xdrs, &objp->name))
+		 return FALSE;
+	 if (!xdr_pointer (xdrs, (char **)&objp->val, sizeof (any), (xdrproc_t) xdr_any))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_RVALLIST (XDR *xdrs, RVALLIST *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_array (xdrs, (char **)&objp->RVALLIST_val, (u_int *) &objp->RVALLIST_len, ~0,
+		sizeof (any), (xdrproc_t) xdr_any))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_WVALLIST (XDR *xdrs, WVALLIST *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_array (xdrs, (char **)&objp->WVALLIST_val, (u_int *) &objp->WVALLIST_len, ~0,
+		sizeof (wany), (xdrproc_t) xdr_wany))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_ERRLIST (XDR *xdrs, ERRLIST *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_array (xdrs, (char **)&objp->ERRLIST_val, (u_int *) &objp->ERRLIST_len, ~0,
+		sizeof (int), (xdrproc_t) xdr_int))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_TESTNAMELIST (XDR *xdrs, TESTNAMELIST *objp)
+{
+	register int32_t *buf;
+
+
+	if (xdrs->x_op == XDR_ENCODE) {
+		 if (!xdr_string (xdrs, &objp->test_condition, ~0))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->max_time_wait))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->max_event_wait))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->prog))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->vers))
+				 return FALSE;
+
+		} else {
+		IXDR_PUT_LONG(buf, objp->max_time_wait);
+		IXDR_PUT_LONG(buf, objp->max_event_wait);
+		IXDR_PUT_LONG(buf, objp->prog);
+		IXDR_PUT_LONG(buf, objp->vers);
+		}
+		 if (!xdr_pointer (xdrs, (char **)&objp->NAMELISTP, sizeof (NAMELIST), (xdrproc_t) xdr_NAMELIST))
+			 return FALSE;
+		return TRUE;
+	} else if (xdrs->x_op == XDR_DECODE) {
+		 if (!xdr_string (xdrs, &objp->test_condition, ~0))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->max_time_wait))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->max_event_wait))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->prog))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->vers))
+				 return FALSE;
+
+		} else {
+		objp->max_time_wait = IXDR_GET_LONG(buf);
+		objp->max_event_wait = IXDR_GET_LONG(buf);
+		objp->prog = IXDR_GET_LONG(buf);
+		objp->vers = IXDR_GET_LONG(buf);
+		}
+		 if (!xdr_pointer (xdrs, (char **)&objp->NAMELISTP, sizeof (NAMELIST), (xdrproc_t) xdr_NAMELIST))
+			 return FALSE;
+	 return TRUE;
+	}
+
+	 if (!xdr_string (xdrs, &objp->test_condition, ~0))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->max_time_wait))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->max_event_wait))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->prog))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->vers))
+		 return FALSE;
+	 if (!xdr_pointer (xdrs, (char **)&objp->NAMELISTP, sizeof (NAMELIST), (xdrproc_t) xdr_NAMELIST))
+		 return FALSE;
+	return TRUE;
+}
diff --git a/Makefile b/Makefile
index 5dbb92cda497c3ffd93bb7494c4a1c0285fe51c0..b577087a93603c0cf45c877610554d34241100a3 100644
--- a/Makefile
+++ b/Makefile
@@ -59,7 +59,8 @@ ifeq ($(MYOS),Linux)
 #  CERN_ROOT = /usr/lib/cernlib/2006
 # 64 bit, standard Fedora distributuion
 #  CERN_ROOT =  /usr/lib64/cernlib/2006 
-  FFLAGSA=-O -w -ffixed-line-length-132 -ff2c -fno-automatic -fdefault-real-8 -fallow-argument-mismatch
+  FFLAGSA=-O -w -ffixed-line-length-132 -ff2c -fno-automatic -fdefault-real-8 
+  #-fallow-argument-mismatch
   INCLUDES=-I.
   FFLAGS= $(INCLUDES) $(FFLAGSA)
   FFLAG1=$(FFLAGS) -c