diff --git a/ne1600App/Db/ne1600.db b/ne1600App/Db/ne1600.db
index 6a887c54a40c1427ba6bdf1ea591b85db1f4bf54..e5a8b1b18b4061872e4a1d793d77c5bd7f8a107c 100644
--- a/ne1600App/Db/ne1600.db
+++ b/ne1600App/Db/ne1600.db
@@ -21,11 +21,11 @@
 # -----------------------------------------------------------------------------
 record(stringin, $(P):STATUS) {
     field(DESC, "Pump status char")
-    field(FLNK, "$(P):STATUS:TRANSLATE:SCALC CP")
+    field(FLNK, "$(P):STS_S2N_SCALC__ CP")
 }
 
-record(scalcout, $(P):STATUS:TRANSLATE:SCALC) {
-    field(DESC, "Select status text")
+record(scalcout, $(P):STS_S2N_SCALC__) {
+    field(DESC, "(int.) String to number")
     field(INAA, "$(P):STATUS CP")
     field(BB,   "I")
     field(CC,   "W")
@@ -35,21 +35,22 @@ record(scalcout, $(P):STATUS:TRANSLATE:SCALC) {
     field(GG,   "U")
     field(HH,   "X")
     field(CALC, "AA==BB?0:(AA==CC?1:(AA==DD?2:(AA==EE?3:(AA==FF?4:(AA==GG?5:(AA==HH?6:7))))))")
-    field(OUT,  "$(P):STATUS:TRANSLATE:SELECTED CP")
+    field(OUT,  "$(P):STS_N2E_SEL__ CP")
 }
 
-record(ai, $(P):STATUS:TRANSLATE:SELECTED) {
-    field(DESC, "Translating status")
-    field(FLNK, "$(P):STATUS:TEXT:SCALC CP")
+record(ai, $(P):STS_N2E_SEL__) {
+    field(DESC, "(int.) Number to enum")
+    field(FLNK, "$(P):STS_TXT_SCALC__ CP")
 }
 
-record(scalcout, $(P):STATUS:TEXT:SCALC) {
-    field(INPA, "$(P):STATUS:TRANSLATE:SELECTED CP")
+record(scalcout, $(P):STS_TXT_SCALC__) {
+    field(DESC, "(int.) Number to enum")
+    field(INPA, "$(P):STS_N2E_SEL__ CP")
     field(CALC, "PRINTF('%d',A)")
-    field(OUT,  "$(P):STATUS:TEXT CP")
+    field(OUT,  "$(P):STATUS_TEXT CP")
 }
 
-record(mbbi, $(P):STATUS:TEXT) {
+record(mbbi, $(P):STATUS_TEXT) {
     field(DESC, "Pump status string")
     field(DTYP, "Soft Channel")
     field(ZRVL, "0")
@@ -80,11 +81,11 @@ record(mbbi, $(P):STATUS:TEXT) {
 # -----------------------------------------------------------------------------
 record(stringin, $(P):MESSAGE) {
     field(DESC, "Message")
-    field(FLNK, "$(P):MESSAGE:TRANSLATE:SCALC CP")
+    field(FLNK, "$(P):MSG_S2N_SCALC__ CP")
 }
 
-record(scalcout, $(P):MESSAGE:TRANSLATE:SCALC) {
-    field(DESC, "Select status text")
+record(scalcout, $(P):MSG_S2N_SCALC__) {
+    field(DESC, "(int.) String to number")
     field(INAA, "$(P):MESSAGE CP")
     field(BB,   "?")
     field(CC,   "?NA")
@@ -93,21 +94,22 @@ record(scalcout, $(P):MESSAGE:TRANSLATE:SCALC) {
     field(FF,   "?IGN")
     field(GG,   "")
     field(CALC, "AA==BB?0:(AA==CC?1:(AA==DD?2:(AA==EE?3:(AA==FF?4:(AA==GG?5:6)))))")
-    field(OUT,  "$(P):MESSAGE:TRANSLATE:SELECTED CP")
+    field(OUT,  "$(P):MSG_N2E_SEL__ CP")
 }
 
-record(ai, $(P):MESSAGE:TRANSLATE:SELECTED) {
-    field(DESC, "Translating message")
-    field(FLNK, "$(P):MESSAGE:TEXT:SCALC CP")
+record(ai, $(P):MSG_N2E_SEL__) {
+    field(DESC, "(int.) Number to enum")
+    field(FLNK, "$(P):MSG_TXT_SCALC__ CP")
 }
 
-record(scalcout, $(P):MESSAGE:TEXT:SCALC) {
-    field(INPA, "$(P):MESSAGE:TRANSLATE:SELECTED CP")
+record(scalcout, $(P):MSG_TXT_SCALC__) {
+    field(DESC, "(int.) Number to enum")
+    field(INPA, "$(P):MSG_N2E_SEL__ CP")
     field(CALC, "PRINTF('%d',A)")
-    field(OUT,  "$(P):MESSAGE:TEXT CP")
+    field(OUT,  "$(P):MESSAGE_TEXT CP")
 }
 
-record(mbbi, $(P):MESSAGE:TEXT) {
+record(mbbi, $(P):MESSAGE_TEXT) {
     field(DESC, "Pump error string")
     field(DTYP, "Soft Channel")
     field(ZRVL, "0")
@@ -126,8 +128,8 @@ record(mbbi, $(P):MESSAGE:TEXT) {
     field(SXST, "Unknown error")
 }
 
-record(stringout, $(P):MESSAGE:CLEAR) {
-    field(DESC, "Message")
+record(stringout, $(P):MSG_CLEAR__) {
+    field(DESC, "(int.) Message clear")
     field(VAL,  "")
     field(OUT,  "$(P):MESSAGE PP")
 }
@@ -152,6 +154,7 @@ record(ai, $(P):RATE) {
     field(INP,  "@ne1600.proto get_rate($(P):STATUS,$(P):RATE_UNITS) $(PORT) $(ADDR)")
     field(SCAN, "$(SCAN) second")
     field(PINI, "YES")
+    field(FLNK, "$(P):DIRECTION")
 }
 
 record(mbbi, $(P):RATE_UNITS) {
@@ -176,74 +179,80 @@ record(mbbi, $(P):RATE_UNITS) {
 record(ao, $(P):SET_RATE) {
     field(DESC, "Input for pumping rate")
     field(DTYP, "Soft Channel")
-    field(FLNK, "$(P):SET_RATE:RESET")
+    field(FLNK, "$(P):RATE_RST__")
 }
 
-record(fanout, $(P):SET_RATE:RESET) {
-    field(LNK1, "$(P):MESSAGE:CLEAR")
-    field(LNK2, "$(P):SET_RATE:CLEAR_ALARM")
+record(fanout, $(P):RATE_RST__) {
+    field(DESC, "(int.) Rate reset")
+    field(LNK1, "$(P):MSG_CLEAR__")
+    field(LNK2, "$(P):RATE_CLR_ALARM__")
 }
 
-record(calcout, $(P):SET_RATE:CHECK_ALARM) {
-    field(INPA, "$(P):SET_RATE:OUT:3DIGITS.SEVR")
-    field(INPB, "$(P):SET_RATE:OUT:2DIGITS.SEVR")
-    field(INPC, "$(P):SET_RATE:OUT:1DIGIT.SEVR")
+record(calcout, $(P):RATE_CHK_ALARM__) {
+    field(DESC, "(int.) Rate alarm")
+    field(INPA, "$(P):RATE_SET_3D__.SEVR")
+    field(INPB, "$(P):RATE_SET_2D__.SEVR")
+    field(INPC, "$(P):RATE_SET_1D__.SEVR")
     field(CALC, "((A=3)&&(B=3)&&(C=3))")
     field(OOPT, "When Non-zero")
-    field(OUT,  "$(P):SET_RATE:SET_ALARM.PROC")
+    field(OUT,  "$(P):RATE_SET_ALARM__.PROC")
 }
 
-record(ao, $(P):SET_RATE:SET_ALARM) {
+record(ao, $(P):RATE_SET_ALARM__) {
+    field(DESC, "(int.) Rate alarm set")
     field(VAL, "3")
     field(OUT, "$(P):SET_RATE.HHSV")
 }
 
-record(ao, $(P):SET_RATE:CLEAR_ALARM) {
+record(ao, $(P):RATE_CLR_ALARM__) {
+    field(DESC, "(int.) Rate alarm clear")
     field(VAL,  "0")
     field(OUT, "$(P):SET_RATE.HHSV")
 }
 
-record(ao, $(P):SET_RATE:OUT:3DIGITS) {
-    field(DESC, "Set the pumping rate")
+record(ao, $(P):RATE_SET_3D__) {
+    field(DESC, "(int.) Set rate 3 digits")
     field(DTYP, "stream")
     field(DOL,  "$(P):SET_RATE CP")
     field(OMSL, "closed_loop")
-    field(OUT,  "@ne1600.proto set_rate_3digits($(P):STATUS,$(P):SET_RATE_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
-    field(FLNK, "$(P):SET_RATE:CHECK:3DIGITS")
+    field(OUT,  "@ne1600.proto set_rate_3decimal_points($(P):STATUS,$(P):SET_RATE_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):RATE_CHK_3D__")
 }
 
-record(calcout, $(P):SET_RATE:CHECK:3DIGITS) {
-    field(INPA, "$(P):SET_RATE:OUT:3DIGITS.SEVR")
+record(calcout, $(P):RATE_CHK_3D__) {
+    field(DESC, "(int.) Set rate 3 digits")
+    field(INPA, "$(P):RATE_SET_3D__.SEVR")
     field(CALC, "A#3")
     field(OOPT, "When Zero")
-    field(OUT,  "$(P):SET_RATE:OUT:2DIGITS.PROC")
-    field(FLNK, "$(P):MESSAGE:CLEAR")
+    field(OUT,  "$(P):RATE_SET_2D__.PROC")
+    field(FLNK, "$(P):MSG_CLEAR__")
 }
 
-record(ao, $(P):SET_RATE:OUT:2DIGITS) {
-    field(DESC, "Set the pumping rate")
+record(ao, $(P):RATE_SET_2D__) {
+    field(DESC, "(int.) Set rate 2 digits")
     field(DTYP, "stream")
     field(DOL,  "$(P):SET_RATE")
     field(OMSL, "closed_loop")
-    field(OUT,  "@ne1600.proto set_rate_2digits($(P):STATUS,$(P):SET_RATE_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
-    field(FLNK, "$(P):SET_RATE:CHECK:2DIGITS")
+    field(OUT,  "@ne1600.proto set_rate_2decimal_points($(P):STATUS,$(P):SET_RATE_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):RATE_CHK_2D__")
 }
 
-record(calcout, $(P):SET_RATE:CHECK:2DIGITS) {
-    field(INPA, "$(P):SET_RATE:OUT:2DIGITS.SEVR")
+record(calcout, $(P):RATE_CHK_2D__) {
+    field(DESC, "(int.) Set rate 2 digits")
+    field(INPA, "$(P):RATE_SET_2D__.SEVR")
     field(CALC, "A#3")
     field(OOPT, "When Zero")
-    field(OUT,  "$(P):SET_RATE:OUT:1DIGIT.PROC")
-    field(FLNK, "$(P):MESSAGE:CLEAR")
+    field(OUT,  "$(P):RATE_SET_1D__.PROC")
+    field(FLNK, "$(P):MSG_CLEAR__")
 }
 
-record(ao, $(P):SET_RATE:OUT:1DIGIT) {
-    field(DESC, "Set the pumping rate")
+record(ao, $(P):RATE_SET_1D__) {
+    field(DESC, "(int.) Set rate 1 digit")
     field(DTYP, "stream")
     field(DOL,  "$(P):SET_RATE")
     field(OMSL, "closed_loop")
-    field(OUT,  "@ne1600.proto set_rate_1digit($(P):STATUS,$(P):SET_RATE_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
-    field(FLNK, "$(P):SET_RATE:CHECK_ALARM")
+    field(OUT,  "@ne1600.proto set_rate_1decimal_point($(P):STATUS,$(P):SET_RATE_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):RATE_CHK_ALARM__")
 }
 
 record(mbbo, $(P):SET_RATE_UNITS) {
@@ -257,13 +266,14 @@ record(mbbo, $(P):SET_RATE_UNITS) {
     field(THVL, "3")
     field(THST, "mL / hour")
     field(UNSV, "MAJOR")
-    field(FLNK, "$(P):SET_RATE_UNITS:RESET")
+    field(FLNK, "$(P):RATE_UNITS_RST__")
 }
 
-record(fanout, $(P):SET_RATE_UNITS:RESET) {
-    field(LNK1, "$(P):MESSAGE:CLEAR")
-    field(LNK2, "$(P):SET_RATE:CLEAR_ALARM")
-    field(LNK3, "$(P):SET_RATE:OUT:3DIGITS")
+record(fanout, $(P):RATE_UNITS_RST__) {
+    field(DESC, "(int.) Rate units reset")
+    field(LNK1, "$(P):MSG_CLEAR__")
+    field(LNK2, "$(P):RATE_CLR_ALARM__")
+    field(LNK3, "$(P):RATE_SET_3D__")
 }
 
 # -----------------------------------------------------------------------------
@@ -282,8 +292,9 @@ record(mbbi, $(P):DIRECTION) {
     field(THVL, "3")
     field(THST, "Sticky")
     field(INP,  "@ne1600.proto get_direction($(P):STATUS) $(PORT) $(ADDR)")
-    field(SCAN, "$(SCAN) second")
+    field(SCAN, "Passive")
     field(PINI, "YES")
+    field(FLNK, "$(P):VOLUME")
 }
 
 record(mbbo, $(P):SET_DIRECTION) {
@@ -309,8 +320,9 @@ record(ai, $(P):VOLUME) {
     field(DESC, "Volume to be pumped")
     field(DTYP, "stream")
     field(INP,  "@ne1600.proto get_volume($(P):STATUS,$(P):VOLUME_UNITS) $(PORT) $(ADDR)")
-    field(SCAN, "$(SCAN) second")
+    field(SCAN, "Passive")
     field(PINI, "YES")
+    field(FLNK, "$(P):DIAMETER")
 }
 
 record(mbbi, $(P):VOLUME_UNITS) {
@@ -330,74 +342,80 @@ record(mbbi, $(P):VOLUME_UNITS) {
 record(ao, $(P):SET_VOLUME) {
     field(DESC, "Input for volume to infuse")
     field(DTYP, "Soft Channel")
-    field(FLNK, "$(P):SET_VOLUME:RESET")
+    field(FLNK, "$(P):VOL_RST__")
 }
 
-record(fanout, $(P):SET_VOLUME:RESET) {
-    field(LNK1, "$(P):MESSAGE:CLEAR")
-    field(LNK2, "$(P):SET_VOLUME:CLEAR_ALARM")
+record(fanout, $(P):VOL_RST__) {
+    field(DESC, "(int.) Volume reset")
+    field(LNK1, "$(P):MSG_CLEAR__")
+    field(LNK2, "$(P):VOL_CLR_ALARM__")
 }
 
-record(calcout, $(P):SET_VOLUME:CHECK_ALARM) {
-    field(INPA, "$(P):SET_VOLUME:OUT:3DIGITS.SEVR")
-    field(INPB, "$(P):SET_VOLUME:OUT:2DIGITS.SEVR")
-    field(INPC, "$(P):SET_VOLUME:OUT:1DIGIT.SEVR")
+record(calcout, $(P):VOL_CHK_ALARM__) {
+    field(DESC, "(int.) Volume alarm")
+    field(INPA, "$(P):VOL_SET_3D__.SEVR")
+    field(INPB, "$(P):VOL_SET_2D__.SEVR")
+    field(INPC, "$(P):VOL_SET_1D__.SEVR")
     field(CALC, "((A=3)&&(B=3)&&(C=3))")
     field(OOPT, "When Non-zero")
-    field(OUT,  "$(P):SET_VOLUME:SET_ALARM.PROC")
+    field(OUT,  "$(P):VOL_SET_ALARM__.PROC")
 }
 
-record(ao, $(P):SET_VOLUME:SET_ALARM) {
+record(ao, $(P):VOL_SET_ALARM__) {
+    field(DESC, "(int.) Volume alarm set")
     field(VAL, "3")
     field(OUT, "$(P):SET_VOLUME.HHSV")
 }
 
-record(ao, $(P):SET_VOLUME:CLEAR_ALARM) {
+record(ao, $(P):VOL_CLR_ALARM__) {
+    field(DESC, "(int.) Volume alarm clear")
     field(VAL,  "0")
     field(OUT, "$(P):SET_VOLUME.HHSV")
 }
 
-record(ao, $(P):SET_VOLUME:OUT:3DIGITS) {
-    field(DESC, "Set the volume of the syringe")
+record(ao, $(P):VOL_SET_3D__) {
+    field(DESC, "(int.) Set vol. 3 digits")
     field(DTYP, "stream")
     field(DOL,  "$(P):SET_VOLUME CP")
     field(OMSL, "closed_loop")
-    field(OUT,  "@ne1600.proto set_volume_3digits($(P):STATUS,$(P):SET_VOLUME_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
-    field(FLNK, "$(P):SET_VOLUME:CHECK:3DIGITS")
+    field(OUT,  "@ne1600.proto set_volume_3decimal_points($(P):STATUS,$(P):SET_VOLUME_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):VOL_CHK_3D__")
 }
 
-record(calcout, $(P):SET_VOLUME:CHECK:3DIGITS) {
-    field(INPA, "$(P):SET_VOLUME:OUT:3DIGITS.SEVR")
+record(calcout, $(P):VOL_CHK_3D__) {
+    field(DESC, "(int.) Set vol. 3 digits")
+    field(INPA, "$(P):VOL_SET_3D__.SEVR")
     field(CALC, "A#3")
     field(OOPT, "When Zero")
-    field(OUT,  "$(P):SET_VOLUME:OUT:2DIGITS.PROC")
-    field(FLNK, "$(P):MESSAGE:CLEAR")
+    field(OUT,  "$(P):VOL_SET_2D__.PROC")
+    field(FLNK, "$(P):MSG_CLEAR__")
 }
 
-record(ao, $(P):SET_VOLUME:OUT:2DIGITS) {
-    field(DESC, "Set the volume of the syringe")
+record(ao, $(P):VOL_SET_2D__) {
+    field(DESC, "(int.) Set vol. 2 digits")
     field(DTYP, "stream")
     field(DOL,  "$(P):SET_VOLUME")
     field(OMSL, "closed_loop")
-    field(OUT,  "@ne1600.proto set_volume_2digits($(P):STATUS,$(P):SET_VOLUME_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
-    field(FLNK, "$(P):SET_VOLUME:CHECK:2DIGITS")
+    field(OUT,  "@ne1600.proto set_volume_2decimal_points($(P):STATUS,$(P):SET_VOLUME_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):VOL_CHK_2D__")
 }
 
-record(calcout, $(P):SET_VOLUME:CHECK:2DIGITS) {
-    field(INPA, "$(P):SET_VOLUME:OUT:2DIGITS.SEVR")
+record(calcout, $(P):VOL_CHK_2D__) {
+    field(DESC, "(int.) Set vol. 2 digits")
+    field(INPA, "$(P):VOL_SET_2D__.SEVR")
     field(CALC, "A#3")
     field(OOPT, "When Zero")
-    field(OUT,  "$(P):SET_VOLUME:OUT:1DIGIT.PROC")
-    field(FLNK, "$(P):MESSAGE:CLEAR")
+    field(OUT,  "$(P):VOL_SET_1D__.PROC")
+    field(FLNK, "$(P):MSG_CLEAR__")
 }
 
-record(ao, $(P):SET_VOLUME:OUT:1DIGIT) {
-    field(DESC, "Set the volume of the syringe")
+record(ao, $(P):VOL_SET_1D__) {
+    field(DESC, "(int.) Set vol. 1 digit")
     field(DTYP, "stream")
     field(DOL,  "$(P):SET_VOLUME")
     field(OMSL, "closed_loop")
-    field(OUT,  "@ne1600.proto set_volume_1digit($(P):STATUS,$(P):SET_VOLUME_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
-    field(FLNK, "$(P):SET_VOLUME:CHECK_ALARM")
+    field(OUT,  "@ne1600.proto set_volume_1decimal_point($(P):STATUS,$(P):SET_VOLUME_UNITS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):VOL_CHK_ALARM__")
 }
 
 # -----------------------------------------------------------------------------
@@ -411,13 +429,14 @@ record(mbbo, $(P):SET_VOLUME_UNITS) {
     field(ONVL, "1")
     field(ONST, "mL")
     field(UNSV, "MAJOR")
-    field(FLNK, "$(P):SET_VOLUME_UNITS:RESET")
+    field(FLNK, "$(P):VOL_UNITS_RST__")
 }
 
-record(fanout, $(P):SET_VOLUME_UNITS:RESET) {
-    field(LNK1, "$(P):MESSAGE:CLEAR")
-    field(LNK2, "$(P):SET_VOLUME:CLEAR_ALARM")
-    field(LNK3, "$(P):SET_VOLUME:OUT:3DIGITS")
+record(fanout, $(P):VOL_UNITS_RST__) {
+    field(DESC, "(int.) Vol. units reset")
+    field(LNK1, "$(P):MSG_CLEAR__")
+    field(LNK2, "$(P):VOL_CLR_ALARM__")
+    field(LNK3, "$(P):VOL_SET_3D__")
 }
 
 # -----------------------------------------------------------------------------
@@ -428,69 +447,75 @@ record(ai, $(P):DIAMETER) {
     field(EGU,  "mm")
     field(DTYP, "stream")
     field(INP,  "@ne1600.proto get_diameter($(P):STATUS) $(PORT) $(ADDR)")
-    field(SCAN, "$(SCAN) second")
+    field(SCAN, "Passive")
     field(PINI, "YES")
+    field(FLNK, "$(P):VOLUME_INFUSED")
 }
 
 # -----------------------------------------------------------------------------
 # Set syringe DIAMETER
-#  - limits: 0.100 mm to 50.000 mm
+#  - limits: 0.100 mm to 50.00 mm
 #  - max 4 digits + 1 decimal point send;
 # -----------------------------------------------------------------------------
 record(ao, $(P):SET_DIAMETER) {
     field(DESC, "Input for inside diameter")
     field(DTYP, "Soft Channel")
     field(EGU,  "mm")
-    field(FLNK, "$(P):SET_DIAMETER:RESET")
+    field(FLNK, "$(P):DIA_RST__")
 }
 
-record(fanout, $(P):SET_DIAMETER:RESET) {
-    field(LNK1, "$(P):MESSAGE:CLEAR")
-    field(LNK2, "$(P):SET_DIAMETER:CLEAR_ALARM")
+record(fanout, $(P):DIA_RST__) {
+    field(DESC, "(int.) Diameter reset")
+    field(LNK1, "$(P):MSG_CLEAR__")
+    field(LNK2, "$(P):DIA_CLR_ALARM__")
 }
 
-record(calcout, $(P):SET_DIAMETER:CHECK_ALARM) {
-    field(INPA, "$(P):SET_DIAMETER:OUT:3DIGITS.SEVR")
-    field(INPB, "$(P):SET_DIAMETER:OUT:2DIGITS.SEVR")
+record(calcout, $(P):DIA_CHK_ALARM__) {
+    field(DESC, "(int.) Diameter alarm")
+    field(INPA, "$(P):DIA_SET_3D__.SEVR")
+    field(INPB, "$(P):DIA_SET_2D__.SEVR")
     field(CALC, "((A=3)&&(B=3))")
     field(OOPT, "When Non-zero")
-    field(OUT,  "$(P):SET_DIAMETER:SET_ALARM.PROC")
+    field(OUT,  "$(P):DIA_SET_ALARM__.PROC")
 }
 
-record(ao, $(P):SET_DIAMETER:SET_ALARM) {
+record(ao, $(P):DIA_SET_ALARM__) {
+    field(DESC, "(int.) Diam. alarm set")
     field(VAL, "3")
     field(OUT, "$(P):SET_DIAMETER.HHSV")
 }
 
-record(ao, $(P):SET_DIAMETER:CLEAR_ALARM) {
+record(ao, $(P):DIA_CLR_ALARM__) {
+    field(DESC, "(int.) Diam. alarm clear")
     field(VAL, "0")
     field(OUT, "$(P):SET_DIAMETER.HHSV")
 }
 
-record(ao, $(P):SET_DIAMETER:OUT:3DIGITS) {
-    field(DESC, "Set the diameter of the syringe")
+record(ao, $(P):DIA_SET_3D__) {
+    field(DESC, "(int.) Set diam. 3 digits")
     field(DTYP, "stream")
     field(DOL,  "$(P):SET_DIAMETER CP")
     field(OMSL, "closed_loop")
-    field(OUT,  "@ne1600.proto set_diameter_3digits($(P):STATUS,$(P):MESSAGE) $(PORT) $(ADDR)")
-    field(FLNK, "$(P):SET_DIAMETER:CHECK:3DIGITS")
+    field(OUT,  "@ne1600.proto set_diameter_3decimal_points($(P):STATUS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):DIA_CHK_3D__")
 }
 
-record(calcout, $(P):SET_DIAMETER:CHECK:3DIGITS) {
-    field(INPA, "$(P):SET_DIAMETER:OUT:3DIGITS.SEVR")
+record(calcout, $(P):DIA_CHK_3D__) {
+    field(DESC, "(int.) Set diam. 3 digits")
+    field(INPA, "$(P):DIA_SET_3D__.SEVR")
     field(CALC, "A#3")
     field(OOPT, "When Zero")
-    field(OUT,  "$(P):SET_DIAMETER:OUT:2DIGITS.PROC")
-    field(FLNK, "$(P):MESSAGE:CLEAR")
+    field(OUT,  "$(P):DIA_SET_2D__.PROC")
+    field(FLNK, "$(P):MSG_CLEAR__")
 }
 
-record(ao, $(P):SET_DIAMETER:OUT:2DIGITS) {
-    field(DESC, "Set the diameter of the syringe")
+record(ao, $(P):DIA_SET_2D__) {
+    field(DESC, "(int.) Set diam. 2 digits")
     field(DTYP, "stream")
     field(DOL,  "$(P):SET_DIAMETER")
     field(OMSL, "closed_loop")
-    field(OUT,  "@ne1600.proto set_diameter_2digits($(P):STATUS,$(P):MESSAGE) $(PORT) $(ADDR)")
-    field(FLNK, "$(P):SET_DIAMETER:CHECK_ALARM")
+    field(OUT,  "@ne1600.proto set_diameter_2decimal_points($(P):STATUS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):DIA_CHK_ALARM__")
 }
 
 # -----------------------------------------------------------------------------
@@ -500,7 +525,7 @@ record(ai, $(P):VOLUME_INFUSED) {
     field(DESC, "Volume infused so far")
     field(DTYP, "stream")
     field(INP,  "@ne1600.proto get_volume_dispensed($(P):STATUS,$(P):VOLUME_WITHDRAWN,$(P):VOLUME_DIS_UNIT) $(PORT) $(ADDR)")
-    field(SCAN, "$(SCAN) second")
+    field(SCAN, "Passive")
     field(PINI, "YES")
 }
 
@@ -524,7 +549,7 @@ record(mbbi, $(P):VOLUME_DIS_UNIT) {
 record(bo, $(P):CLEAR_V_DISPENSED) {
     field(DESC, "Zero volume withdrawn and infused")
     field(DTYP, "stream")
-    field(OUT,  "@ne1600.proto clear_volume_dispensed($(P):STATUS) $(PORT) $(ADDR)")
+    field(OUT,  "@ne1600.proto clear_volume_dispensed($(P):STATUS,$(P):MESSAGE) $(PORT) $(ADDR)")
     field(FLNK, "$(P):VOLUME_INFUSED")
 }
 
@@ -534,14 +559,138 @@ record(bo, $(P):CLEAR_V_DISPENSED) {
 record(bo, $(P):RUN) {
     field(DESC, "Start pumping")
     field(DTYP, "stream")
-    field(OUT,  "@ne1600.proto start_pumping($(P):STATUS) $(PORT) $(ADDR)")
+    field(OUT,  "@ne1600.proto start_pumping($(P):STATUS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):RUN_CHK_ALARM__")
+}
+
+record(calcout, $(P):RUN_CHK_ALARM__) {
+    field(DESC, "(int.) Run alarm")
+    field(INPA, "$(P):RUN.SEVR")
+    field(CALC, "(A=3)")
+    field(OOPT, "When Non-zero")
+    field(OUT,  "$(P):MSG_CLEAR__.PROC")
 }
 
 # -----------------------------------------------------------------------------
-# Stop pumping
+# Start to purge
+# -----------------------------------------------------------------------------
+record(bo, $(P):PURGE) {
+    field(DESC, "Start purge")
+    field(DTYP, "stream")
+    field(OUT,  "@ne1600.proto start_purge($(P):STATUS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):PURGE_CHK_ALARM__")
+}
+
+record(calcout, $(P):PURGE_CHK_ALARM__) {
+    field(DESC, "(int.) Purge alarm")
+    field(INPA, "$(P):PURGE.SEVR")
+    field(CALC, "(A=3)")
+    field(OOPT, "When Non-zero")
+    field(OUT,  "$(P):MSG_CLEAR__.PROC")
+}
+
+# -----------------------------------------------------------------------------
+# Stop pumping/purge
 # -----------------------------------------------------------------------------
 record(bo, $(P):STOP) {
     field(DESC, "Stop pumping")
     field(DTYP, "stream")
-    field(OUT,  "@ne1600.proto stop_pumping($(P):STATUS) $(PORT) $(ADDR)")
+    field(OUT,  "@ne1600.proto stop_pumping($(P):STATUS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):STOP_CHK_ALARM__")
+}
+
+record(calcout, $(P):STOP_CHK_ALARM__) {
+    field(DESC, "(int.) Stop alarm")
+    field(INPA, "$(P):STOP.SEVR")
+    field(CALC, "(A=3)")
+    field(OOPT, "When Non-zero")
+    field(OUT,  "$(P):MSG_CLEAR__.PROC")
+}
+
+# -----------------------------------------------------------------------------
+# Pause pumping operation
+# -----------------------------------------------------------------------------
+record(bo, $(P):PAUSE) {
+    field(DESC, "Pause pumping")
+    field(DTYP, "stream")
+    field(OUT,  "@ne1600.proto pause($(P):STATUS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):PAUSE_CHK_ALARM__")
+}
+
+record(calcout, $(P):PAUSE_CHK_ALARM__) {
+    field(DESC, "(int.) Pause alarm")
+    field(INPA, "$(P):PAUSE.SEVR")
+    field(CALC, "(A=3)")
+    field(OOPT, "When Non-zero")
+    field(OUT,  "$(P):MSG_CLEAR__.PROC")
+}
+
+# -----------------------------------------------------------------------------
+# Pause current running program for some seconds (<nn> or <n.n> seconds)
+# -----------------------------------------------------------------------------
+record(ao, $(P):SET_PAUSE) {
+    field(DESC, "Seconds to pause")
+    field(DTYP, "Soft Channel")
+    field(VAL,  "0")
+    field(EGU,  "s")
+}
+
+record(bo, $(P):PAUSE_PROG) {
+    field(DESC, "Pause program")
+    field(DTYP, "Soft Channel")
+    field(FLNK, "$(P):PAS_RST__")
+}
+
+record(fanout, $(P):PAS_RST__) {
+    field(DESC, "(int.) Pause reset")
+    field(LNK1, "$(P):MSG_CLEAR__")
+    field(LNK2, "$(P):PAS_CLR_ALARM__")
+}
+
+record(calcout, $(P):PAS_CHK_ALARM__) {
+    field(DESC, "(int.) Pause alarm")
+    field(INPA, "$(P):PAS_SET_1D__.SEVR")
+    field(INPB, "$(P):PAS_SET_0D__.SEVR")
+    field(CALC, "((A=3)&&(B=3))")
+    field(OOPT, "When Non-zero")
+    field(OUT,  "$(P):PAS_SET_ALARM__.PROC")
+}
+
+record(ao, $(P):PAS_SET_ALARM__) {
+    field(DESC, "(int.) Pause alarm set")
+    field(VAL,  "3")
+    field(OUT,  "$(P):SET_PAUSE.HHSV")
+}
+
+record(ao, $(P):PAS_CLR_ALARM__) {
+    field(DESC, "(int.) Pause alarm clear")
+    field(VAL,  "0")
+    field(OUT,  "$(P):SET_PAUSE.HHSV")
+}
+
+record(ao, $(P):PAS_SET_1D__) {
+    field(DESC, "(int.) Set pause 1 digit")
+    field(DTYP, "stream")
+    field(DOL,  "$(P):SET_PAUSE")
+    field(OMSL, "closed_loop")
+    field(OUT,  "@ne1600.proto pause_program_1decimal_digit($(P):STATUS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):PAS_CHK_1D__")
+}
+
+record(calcout, $(P):PAS_CHK_1D__) {
+    field(DESC, "(int.) Set pause 1-digit")
+    field(INPA, "$(P):PAS_SET_1D__.SEVR")
+    field(CALC, "A#3")
+    field(OOPT, "When Zero")
+    field(OUT,  "$(P):PAS_SET_0D__.PROC")
+    field(FLNK, "$(P):MSG_CLEAR__")
+}
+
+record(ao, $(P):PAS_SET_0D__) {
+    field(DESC, "(int.) Set pause 0-digit")
+    field(DTYP, "stream")
+    field(DOL,  "$(P):SET_PAUSE")
+    field(OMSL, "closed_loop")
+    field(OUT,  "@ne1600.proto pause_program_0decimal_digit($(P):STATUS,$(P):MESSAGE) $(PORT) $(ADDR)")
+    field(FLNK, "$(P):PAS_CHK_ALARM__")
 }
diff --git a/ne1600App/Db/ne1600.proto b/ne1600App/Db/ne1600.proto
index 992356ad1f485da569211915d3504071b711b2f8..65aed3376d45e30b2b8ab30ac3f312bf150b68d0 100644
--- a/ne1600App/Db/ne1600.proto
+++ b/ne1600App/Db/ne1600.proto
@@ -61,7 +61,7 @@ set_direction {
     direction = "%{INF|WDR|REV|STK}";
     out "DIR",${direction};
     in ${prompt};
-    @mismatch { in "%*/00S/%*/00S/%(\$2)s" };
+    @mismatch { in "%*/00[IWSPTUX]/%*/00[IWSPTUX]/%(\$2)s" };
     @init { get_direction; }
 }
 
@@ -85,30 +85,30 @@ get_rate {
 #    >  UH = μL / hr
 #    >  MH = mL / hr
 # -----------------------------------------------------------------------------
-set_rate_3digits {
+set_rate_3decimal_points {
     format = "%.3f";
     unit   = "%(\$2){UM|MM|UH|MH}";
     out "RAT",${format},${unit};
     in ${prompt};
-    @mismatch { in "%*/00S/%(\$3)s" };
+    @mismatch { in "%*/00[IWSPTUX]/%(\$3)s" };
     @init { get_rate; }
 }
 
-set_rate_2digits {
+set_rate_2decimal_points {
     format = "%.2f";
     unit   = "%(\$2){UM|MM|UH|MH}";
     out "RAT",${format},${unit};
     in ${prompt};
-    @mismatch { in "%*/00S/%(\$3)s" };
+    @mismatch { in "%*/00[IWSPTUX]/%(\$3)s" };
     @init { get_rate; }
 }
 
-set_rate_1digit {
+set_rate_1decimal_point {
     format = "%.1f";
     unit   = "%(\$2){UM|MM|UH|MH}";
     out "RAT",${format},${unit};
     in ${prompt};
-    @mismatch { in "%*/00S/%(\$3)s" };
+    @mismatch { in "%*/00[IWSPTUX]/%(\$3)s" };
     @init { get_rate; }
 }
 
@@ -130,36 +130,36 @@ get_volume {
 #    >  UL = μL (microliters)
 #    >  ML = mL (milliliters)
 # -----------------------------------------------------------------------------
-set_volume_3digits {
+set_volume_3decimal_points {
     format = "%.3f";
     unit   = "%(\$2){UL|ML}";
     out "VOL",${format};    # first set VALUE
     in ${prompt};
     out "VOL",${unit};      # then, set UNIT
     in ${prompt};
-    @mismatch { in "%*/00S/%(\$3)s" };
+    @mismatch { in "%*/00[IWSPTUX]/%(\$3)s" };
     @init { get_volume; }
 }
 
-set_volume_2digits {
+set_volume_2decimal_points {
     format = "%.2f";
     unit   = "%(\$2){UL|ML}";
     out "VOL",${format};    # first set VALUE
     in ${prompt};
     out "VOL",${unit};      # then, set UNIT
     in ${prompt};
-    @mismatch { in "%*/00S/%(\$3)s" };
+    @mismatch { in "%*/00[IWSPTUX]/%(\$3)s" };
     @init { get_volume; }
 }
 
-set_volume_1digit {
+set_volume_1decimal_point {
     format = "%.1f";
     unit   = "%(\$2){UL|ML}";
     out "VOL",${format};    # first set VALUE
     in ${prompt};
     out "VOL",${unit};      # then, set UNIT
     in ${prompt};
-    @mismatch { in "%*/00S/%(\$3)s" };
+    @mismatch { in "%*/00[IWSPTUX]/%(\$3)s" };
     @init { get_volume; }
 }
 
@@ -174,30 +174,30 @@ get_diameter {
 
 # -----------------------------------------------------------------------------
 # Set syringe DIAMETER
-#  - limits: 0.100 mm to 50.000 mm;
+#  - limits: 0.100 mm to 50.00 mm;
 #  - max 4 digits + 1 decimal point send;
 # -----------------------------------------------------------------------------
-set_diameter_3digits {
+set_diameter_3decimal_points {
     format = "%.3f";
     out "DIA",${format};
     in ${prompt};
-    @mismatch { in "%*/00S/%(\$2)s" };
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
     @init { get_diameter; }
 }
 
-set_diameter_2digits {
+set_diameter_2decimal_points {
     format = "%.2f";
     out "DIA",${format};
     in ${prompt};
-    @mismatch { in "%*/00S/%(\$2)s" };
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
     @init { get_diameter; }
 }
 
-set_diameter_1digit {
+set_diameter_1decimal_point {
     format = "%.1f";
     out "DIA",${format};
     in ${prompt};
-    @mismatch { in "%*/00S/%(\$2)s" };
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
     @init { get_diameter; }
 }
 
@@ -218,8 +218,10 @@ get_volume_dispensed {
 clear_volume_dispensed {
     out "CLD WDR";
     in ${prompt};
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
     out "CLD INF";
     in ${prompt};
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
 }
 
 # -----------------------------------------------------------------------------
@@ -228,14 +230,52 @@ clear_volume_dispensed {
 start_pumping {
     out "RUN";
     in ${prompt};
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
 }
 
 # -----------------------------------------------------------------------------
-# Stop pumping (must issue command twice)
+# Purge
+# -----------------------------------------------------------------------------
+start_purge {
+    out "PUR";
+    in ${prompt};
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
+}
+
+# -----------------------------------------------------------------------------
+# Stop pumping/purge (must issue command twice)
 # -----------------------------------------------------------------------------
 stop_pumping {
     out "STP";
     in ${prompt};
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
+    out "STP";
+    in ${prompt};
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
+}
+
+# -----------------------------------------------------------------------------
+# Pause pumping operation
+# -----------------------------------------------------------------------------
+pause {
     out "STP";
     in ${prompt};
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
+}
+
+# -----------------------------------------------------------------------------
+# Pause current running program for some seconds (<nn> or <n.n> seconds)
+# -----------------------------------------------------------------------------
+pause_program_1decimal_digit {
+    format = "%.1f";
+    out "PAS",${format};
+    in ${prompt};
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
+}
+
+pause_program_0decimal_digit {
+    format = "%.0f";
+    out "PAS",${format};
+    in ${prompt};
+    @mismatch { in "%*/00[IWSPTUX]/%(\$2)s" };
 }