diff --git a/gen-assemble-fcts.sh b/gen-assemble-fcts.sh
new file mode 100755
index 0000000000000000000000000000000000000000..711151e2940b50ab4fc4d753f069a1910d2cf770
--- /dev/null
+++ b/gen-assemble-fcts.sh
@@ -0,0 +1,90 @@
+#! /bin/sh
+
+if test "$#" -eq 4
+then
+    DST_DOWB_ST=$1
+    SRC_DOWB_ST=$1
+    LALT_DOWB_ST=$2
+    LB_DOWB_ST=$3
+    C_DOWB_ST=$4
+elif test "$#" -eq 2
+then
+    DST_DOWB_ST=$1
+    SRC_DOWB_ST=$2
+    LALT_DOWB_ST=$2
+    LB_DOWB_ST=$2
+    C_DOWB_ST=$2
+else
+    exec 1>&2
+    echo $0 DST_TYPE SRC_TYPE
+    echo *** or ***
+    echo $0 DST_TYPE LALt_TYPE LB_TYPE C_TYPE
+    exit 1
+fi
+
+SED_STRING=""
+for target in DST SRC LALT LB C; do
+    DOWB_ST=${target}_DOWB_ST
+    TYPE=${target}_TYPE
+    RET_TYPE=${target}_RET_TYPE
+    PTR_TYPE=${target}_PTR_TYPE
+    DOWB_NAME=${target}_DOWB_NAME
+    CONSTCAST=${target}_CONSTCAST
+    type=`eval echo \$\{${DOWB_ST}\}`
+    SED_STRING="${SED_STRING} -e 's|@${DOWB_ST}@|${type}|g'"
+    case ${type} in
+	M)
+	case ${target} in
+	    LALT)
+	    SED_STRING="${SED_STRING} -e 's|@${RET_TYPE}@|const REAL_BDD *|g'"
+	    ;;
+	    LB)
+	    SED_STRING="${SED_STRING} -e 's|@${RET_TYPE}@|const REAL_DD *|g'"
+	    ;;
+	    C)
+	    SED_STRING="${SED_STRING} -e 's|@${RET_TYPE}@|const REAL_D *|g'"
+	    ;;
+	esac
+	SED_STRING="${SED_STRING} -e 's|@${TYPE}@|REAL_DD|g'"
+	SED_STRING="${SED_STRING} -e 's|@${PTR_TYPE}@|REAL_D *|g'"
+	SED_STRING="${SED_STRING} -e 's|@${DOWB_NAME}@|full|g'"
+	SED_STRING="${SED_STRING} -e 's|@${CONSTCAST}@|(const REAL_D *)|g'"
+	;;
+	DM)
+	case ${target} in
+	    LALT)
+	    SED_STRING="${SED_STRING} -e 's|@${RET_TYPE}@|const REAL_BD *|g'"
+	    ;;
+	    LB)
+	    SED_STRING="${SED_STRING} -e 's|@${RET_TYPE}@|const REAL_D *|g'"
+	    ;;
+	    C)
+	    SED_STRING="${SED_STRING} -e 's|@${RET_TYPE}@|const REAL *|g'"
+	    ;;
+	esac
+	SED_STRING="${SED_STRING} -e 's|@${TYPE}@|REAL_D|g'"
+	SED_STRING="${SED_STRING} -e 's|@${PTR_TYPE}@|REAL *|g'"
+	SED_STRING="${SED_STRING} -e 's|@${DOWB_NAME}@|diag|g'"
+	SED_STRING="${SED_STRING} -e 's|@${CONSTCAST}@|/**/|g'"
+	;;
+	SCM)
+	case ${target} in
+	    LALT)
+	    SED_STRING="${SED_STRING} -e 's|@${RET_TYPE}@|const REAL_B *|g'"
+	    ;;
+	    LB)
+	    SED_STRING="${SED_STRING} -e 's|@${RET_TYPE}@|const REAL *|g'"
+	    ;;
+	    C)
+	    SED_STRING="${SED_STRING} -e 's|@${RET_TYPE}@|REAL |g'"
+	    ;;
+	esac
+	SED_STRING="${SED_STRING} -e 's|@${TYPE}@|REAL|g'"
+	SED_STRING="${SED_STRING} -e 's|@${PTR_TYPE}@|NOT_NEEDED|g'"
+	SED_STRING="${SED_STRING} -e 's|@${DOWB_NAME}@|scal|g'"
+	SED_STRING="${SED_STRING} -e 's|@${CONSTCAST}@|/**/|g'"
+	;;
+    esac
+done
+eval sed ${SED_STRING}
+