]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
Initial revision
authorhadaq <hadaq>
Fri, 25 Apr 2008 16:56:09 +0000 (16:56 +0000)
committerhadaq <hadaq>
Fri, 25 Apr 2008 16:56:09 +0000 (16:56 +0000)
84 files changed:
ebctrl/ioc/Makefile [new file with mode: 0644]
ebctrl/ioc/bin/linux-x86/ebctrl [new file with mode: 0755]
ebctrl/ioc/configure/CONFIG [new file with mode: 0644]
ebctrl/ioc/configure/CONFIG_SITE [new file with mode: 0644]
ebctrl/ioc/configure/Makefile [new file with mode: 0644]
ebctrl/ioc/configure/O.linux-x86/CONFIG_APP_INCLUDE [new file with mode: 0644]
ebctrl/ioc/configure/O.linux-x86/Makefile [new file with mode: 0644]
ebctrl/ioc/configure/O.linux-x86/RULES_INCLUDE [new file with mode: 0644]
ebctrl/ioc/configure/RELEASE [new file with mode: 0644]
ebctrl/ioc/configure/RULES [new file with mode: 0644]
ebctrl/ioc/configure/RULES.ioc [new file with mode: 0644]
ebctrl/ioc/configure/RULES_DIRS [new file with mode: 0644]
ebctrl/ioc/configure/RULES_TOP [new file with mode: 0644]
ebctrl/ioc/db/dbExample1.db [new file with mode: 0644]
ebctrl/ioc/db/dbExample2.db [new file with mode: 0644]
ebctrl/ioc/db/dbSubExample.db [new file with mode: 0644]
ebctrl/ioc/db/evtbuild.db [new file with mode: 0644]
ebctrl/ioc/db/user.substitutions [new file with mode: 0644]
ebctrl/ioc/db/userHost.substitutions [new file with mode: 0644]
ebctrl/ioc/dbd/ebctrl.dbd [new file with mode: 0644]
ebctrl/ioc/dbd/genSubRecord.dbd [new file with mode: 0644]
ebctrl/ioc/dbd/xxxRecord.dbd [new file with mode: 0644]
ebctrl/ioc/dbd/xxxSupport.dbd [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/Db/Makefile [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/Db/O.linux-x86/Makefile [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/Db/dbExample1.db [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/Db/dbExample2.db [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/Db/dbSubExample.db [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/Db/evtbuild.db [new file with mode: 0755]
ebctrl/ioc/ebctrlApp/Db/user.substitutions [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/Db/userHost.substitutions [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/Makefile [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/Makefile [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd.depends [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.Common/ebctrlInclude.dbd [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.Common/genSubRecord.h [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.Common/xxxRecord.h [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/Makefile [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/MakefileInclude [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/devXxxSoft.depends [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl [new file with mode: 0755]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrlMain.depends [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl_registerRecordDeviceDriver.cpp [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl_registerRecordDeviceDriver.depends [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/evtbuild.depends [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/genSubRecord.depends [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/genrunid.depends [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/writerunid.depends [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/O.linux-x86/xxxRecord.depends [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/dbSubExample.c [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/dbSubExample.dbd [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/devXxxSoft.c [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/ebctrlHello.c [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/ebctrlHello.dbd [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/ebctrlMain.cpp [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/evtbuild.c [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/evtbuild.dbd [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/genSubRecord.c [new file with mode: 0755]
ebctrl/ioc/ebctrlApp/src/genSubRecord.dbd [new file with mode: 0755]
ebctrl/ioc/ebctrlApp/src/genrunid.c [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/genrunid.dbd [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/sncExample.dbd [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/sncExample.stt [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/sncProgram.st [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/writerunid.c [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/writerunid.dbd [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/xxxRecord.c [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/xxxRecord.dbd [new file with mode: 0644]
ebctrl/ioc/ebctrlApp/src/xxxSupport.dbd [new file with mode: 0644]
ebctrl/ioc/include/genSubRecord.h [new file with mode: 0644]
ebctrl/ioc/include/hadtu.h [new file with mode: 0644]
ebctrl/ioc/include/hadtuqueue.h [new file with mode: 0644]
ebctrl/ioc/include/hardware.h [new file with mode: 0644]
ebctrl/ioc/include/psxshm.h [new file with mode: 0644]
ebctrl/ioc/include/shmtrans.h [new file with mode: 0644]
ebctrl/ioc/include/subevt.h [new file with mode: 0644]
ebctrl/ioc/include/worker.h [new file with mode: 0644]
ebctrl/ioc/include/xxxRecord.h [new file with mode: 0644]
ebctrl/ioc/iocBoot/Makefile [new file with mode: 0644]
ebctrl/ioc/iocBoot/iocebctrl/Makefile [new file with mode: 0644]
ebctrl/ioc/iocBoot/iocebctrl/README [new file with mode: 0644]
ebctrl/ioc/iocBoot/iocebctrl/envPaths [new file with mode: 0644]
ebctrl/ioc/iocBoot/iocebctrl/st.cmd [new file with mode: 0644]

diff --git a/ebctrl/ioc/Makefile b/ebctrl/ioc/Makefile
new file mode 100644 (file)
index 0000000..bb27ec0
--- /dev/null
@@ -0,0 +1,9 @@
+#Makefile at top of application tree
+TOP = .
+include $(TOP)/configure/CONFIG
+DIRS := $(DIRS) $(filter-out $(DIRS), configure)
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *App))
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *app))
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard iocBoot))
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard iocboot))
+include $(TOP)/configure/RULES_TOP
diff --git a/ebctrl/ioc/bin/linux-x86/ebctrl b/ebctrl/ioc/bin/linux-x86/ebctrl
new file mode 100755 (executable)
index 0000000..71b0b6a
Binary files /dev/null and b/ebctrl/ioc/bin/linux-x86/ebctrl differ
diff --git a/ebctrl/ioc/configure/CONFIG b/ebctrl/ioc/configure/CONFIG
new file mode 100644 (file)
index 0000000..55ed7e8
--- /dev/null
@@ -0,0 +1,26 @@
+# CONFIG
+
+include $(TOP)/configure/RELEASE
+-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH)
+-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).Common
+ifdef T_A
+-include $(TOP)/configure/RELEASE.Common.$(T_A)
+-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A)
+endif
+
+CONFIG=$(EPICS_BASE)/configure
+include $(CONFIG)/CONFIG
+
+# Override for definition in base
+INSTALL_LOCATION = $(TOP)
+include $(TOP)/configure/CONFIG_SITE
+-include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH)
+-include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
+
+ifdef T_A
+ -include $(TOP)/configure/CONFIG_SITE.Common.$(T_A)
+ -include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
+
+ -include $(TOP)/configure/O.$(T_A)/CONFIG_APP_INCLUDE
+endif
+
diff --git a/ebctrl/ioc/configure/CONFIG_SITE b/ebctrl/ioc/configure/CONFIG_SITE
new file mode 100644 (file)
index 0000000..0a13fc6
--- /dev/null
@@ -0,0 +1,26 @@
+# CONFIG_SITE
+
+# Make any application-specific changes to the EPICS build
+# configuration variables in this file.
+#
+# Host/target specific settings can be specified in files named
+#  CONFIG_SITE.$(EPICS_HOST_ARCH).Common
+#  CONFIG_SITE.Common.$(T_A)
+#  CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
+
+# Set this when you only want to compile this application
+# for a subset of the cross-compiled target architectures
+# that Base is built for.
+#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
+
+# Set this when your IOC and the host use different paths
+# to access the application. This will be needed to boot
+# from a Microsoft FTP server or with some NFS mounts.
+# You must rebuild in the iocBoot directory for this to
+# take effect.
+#IOCS_APPL_TOP = <path to application top as seen by IOC>
+
+# If you don't want to install into $(TOP) then
+# define INSTALL_LOCATION here
+#INSTALL_LOCATION=<fullpathname>
+
diff --git a/ebctrl/ioc/configure/Makefile b/ebctrl/ioc/configure/Makefile
new file mode 100644 (file)
index 0000000..0052e7e
--- /dev/null
@@ -0,0 +1,19 @@
+# Makefile
+
+TOP=..
+
+include $(TOP)/configure/CONFIG
+
+# CHECK_RELEASE controls the consistency checking of the support
+# applications defined in the $(TOP)/configure/RELEASE* files.
+# Normally CHECK_RELEASE should be set to YES.
+# Set CHECK_RELEASE to NO to disable checking completely.
+# Set CHECK_RELEASE to WARN to perform consistency checking,
+# but continue the build even if conflicts are found.
+CHECK_RELEASE = YES
+
+TARGETS = $(CONFIG_TARGETS)
+CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS)))
+
+include $(TOP)/configure/RULES
+
diff --git a/ebctrl/ioc/configure/O.linux-x86/CONFIG_APP_INCLUDE b/ebctrl/ioc/configure/O.linux-x86/CONFIG_APP_INCLUDE
new file mode 100644 (file)
index 0000000..a8aea2d
--- /dev/null
@@ -0,0 +1,13 @@
+# Do not modify this file, changes made here will
+# be lost when the application is next rebuilt.
+
+export TOP
+export EPICS_BASE
+EPICS_BASE_HOST_BIN = $(strip $(EPICS_BASE))/bin/$(EPICS_HOST_ARCH)
+EPICS_BASE_HOST_LIB = $(strip $(EPICS_BASE))/bin/$(EPICS_HOST_ARCH)
+EPICS_BASE_BIN = $(strip $(EPICS_BASE))/bin/linux-x86
+EPICS_BASE_LIB = $(strip $(EPICS_BASE))/lib/linux-x86
+SHRLIB_SEARCH_DIRS += $(EPICS_BASE_LIB)
+RELEASE_INCLUDES += -I$(strip $(EPICS_BASE))/include/os/$(OS_CLASS)
+RELEASE_INCLUDES += -I$(strip $(EPICS_BASE))/include
+RELEASE_DBDFLAGS += -I $(strip $(EPICS_BASE))/dbd
diff --git a/ebctrl/ioc/configure/O.linux-x86/Makefile b/ebctrl/ioc/configure/O.linux-x86/Makefile
new file mode 100644 (file)
index 0000000..96ef7b7
--- /dev/null
@@ -0,0 +1,10 @@
+#This Makefile created by makeMakefile.pl
+
+
+all :
+       $(MAKE) -f ../Makefile TOP=../.. T_A=linux-x86  $@
+
+.DEFAULT: force
+       $(MAKE) -f ../Makefile TOP=../.. T_A=linux-x86  $@
+
+force:  ;
diff --git a/ebctrl/ioc/configure/O.linux-x86/RULES_INCLUDE b/ebctrl/ioc/configure/O.linux-x86/RULES_INCLUDE
new file mode 100644 (file)
index 0000000..73d9ca4
--- /dev/null
@@ -0,0 +1,3 @@
+# Do not modify this file, changes made here will
+# be lost when the application is next rebuilt.
+
diff --git a/ebctrl/ioc/configure/RELEASE b/ebctrl/ioc/configure/RELEASE
new file mode 100644 (file)
index 0000000..be96e63
--- /dev/null
@@ -0,0 +1,30 @@
+#RELEASE Location of external products
+#
+# IF YOU MAKE ANY CHANGES to this file you MUST at least run
+# "gnumake" in this directory afterwards; you usually need
+# to run "gnumake rebuild" in the application's top level
+# directory each time this file is changed.
+#
+# NOTE: The build does not check dependencies against files
+# that are outside this application, thus you should run
+# "gnumake distclean install" in the top directory each time
+# EPICS_BASE, SNCSEQ, or any other external module defined
+# in the RELEASE file is rebuilt.
+#
+# Host/target specific settings can be specified in files named
+#  RELEASE.$(EPICS_HOST_ARCH).Common
+#  RELEASE.Common.$(T_A)
+#  RELEASE.$(EPICS_HOST_ARCH).$(T_A)
+
+TEMPLATE_TOP=$(EPICS_BASE)/templates/makeBaseApp/top
+
+#If using the sequencer, point SNCSEQ at its top directory:
+#SNCSEQ=$(EPICS_BASE)/../modules/soft/seq
+
+# EPICS_BASE usually appears last so other apps can override stuff:
+EPICS_BASE=/home/scs/base-3.14.9
+
+#Capfast users may need the following definitions
+#CAPFAST_TEMPLATES=
+#SCH2EDIF_PATH=
+
diff --git a/ebctrl/ioc/configure/RULES b/ebctrl/ioc/configure/RULES
new file mode 100644 (file)
index 0000000..1f2cb5d
--- /dev/null
@@ -0,0 +1,6 @@
+# RULES
+
+include $(EPICS_BASE)/configure/RULES
+
+# Library should be rebuilt because LIBOBJS may have changed.
+$(LIBNAME): ../Makefile
diff --git a/ebctrl/ioc/configure/RULES.ioc b/ebctrl/ioc/configure/RULES.ioc
new file mode 100644 (file)
index 0000000..5ba1013
--- /dev/null
@@ -0,0 +1,2 @@
+#RULES.ioc
+include $(EPICS_BASE)/configure/RULES.ioc
diff --git a/ebctrl/ioc/configure/RULES_DIRS b/ebctrl/ioc/configure/RULES_DIRS
new file mode 100644 (file)
index 0000000..804faee
--- /dev/null
@@ -0,0 +1,2 @@
+#RULES_DIRS
+include $(EPICS_BASE)/configure/RULES_DIRS
diff --git a/ebctrl/ioc/configure/RULES_TOP b/ebctrl/ioc/configure/RULES_TOP
new file mode 100644 (file)
index 0000000..0620f08
--- /dev/null
@@ -0,0 +1,3 @@
+#RULES_TOP
+include $(EPICS_BASE)/configure/RULES_TOP
+
diff --git a/ebctrl/ioc/db/dbExample1.db b/ebctrl/ioc/db/dbExample1.db
new file mode 100644 (file)
index 0000000..4f16ada
--- /dev/null
@@ -0,0 +1,62 @@
+record(ai, "$(user):aiExample")
+{
+       field(DESC, "Analog input")
+       field(INP, "$(user):calcExample.VAL  NPP NMS")
+       field(EGUF, "10")
+       field(EGU, "Counts")
+       field(HOPR, "10")
+       field(LOPR, "0")
+       field(HIHI, "8")
+       field(HIGH, "6")
+       field(LOW, "4")
+       field(LOLO, "2")
+       field(HHSV, "MAJOR")
+       field(HSV, "MINOR")
+       field(LSV, "MINOR")
+       field(LLSV, "MAJOR")
+}
+record(calc, "$(user):calcExample")
+{
+       field(DESC, "Counter")
+       field(SCAN,"1 second")
+       field(FLNK, "$(user):aiExample")
+       field(CALC, "(A<B)?(A+C):D")
+       field(INPA, "$(user):calcExample.VAL  NPP NMS")
+       field(INPB, "9")
+       field(INPC, "1")
+       field(INPD, "0")
+       field(EGU, "Counts")
+       field(HOPR, "10")
+       field(HIHI, "8")
+       field(HIGH, "6")
+       field(LOW, "4")
+       field(LOLO, "2")
+       field(HHSV, "MAJOR")
+       field(HSV, "MINOR")
+       field(LSV, "MINOR")
+       field(LLSV, "MAJOR")
+}
+record(xxx, "$(user):xxxExample")
+{
+       field(DESC, "xxx record")
+       field(EGU, "Counts")
+       field(HOPR, "10")
+       field(HIHI, "8")
+       field(HIGH, "6")
+       field(LOW, "4")
+       field(LOLO, "2")
+       field(HHSV, "MAJOR")
+       field(HSV, "MINOR")
+       field(LSV, "MINOR")
+       field(LLSV, "MAJOR")
+}
+record(compress,"$(user):compressExample")
+{
+       field(DESC, "Circular buffer")
+       field(INP,"$(user):aiExample.VAL CP NMS")
+       field(ALG,"Circular Buffer")
+       field(NSAM,"10")
+       field(HOPR,"10")
+       field(EGU,"Counts")
+}
+
diff --git a/ebctrl/ioc/db/dbExample2.db b/ebctrl/ioc/db/dbExample2.db
new file mode 100644 (file)
index 0000000..836c53d
--- /dev/null
@@ -0,0 +1,38 @@
+record(calc, "$(user):calcExample$(no)")
+{
+       field(DESC, "Counter No. $(no)")
+       field(SCAN,"$(scan)")
+       field(FLNK, "$(user):aiExample$(no)")
+       field(CALC, "(A<B)?(A+C):D")
+       field(INPA, "$(user):calcExample$(no).VAL NPP NMS")
+       field(INPB, "9")
+       field(INPC, "1")
+       field(INPD, "0")
+       field(EGU, "Counts")
+       field(HOPR, "10")
+       field(HIHI, "8")
+       field(HIGH, "6")
+       field(LOW, "4")
+       field(LOLO, "2")
+       field(HHSV, "MAJOR")
+       field(HSV, "MINOR")
+       field(LSV, "MINOR")
+       field(LLSV, "MAJOR")
+}
+record(ai, "$(user):aiExample$(no)")
+{
+       field(DESC, "Analog input No. $(no)")
+       field(INP, "$(user):calcExample$(no).VAL NPP NMS")
+       field(EGUF, "10")
+       field(EGU, "Counts")
+       field(HOPR, "10")
+       field(LOPR, "0")
+       field(HIHI, "8")
+       field(HIGH, "6")
+       field(LOW, "4")
+       field(LOLO, "2")
+       field(HHSV, "MAJOR")
+       field(HSV, "MINOR")
+       field(LSV, "MINOR")
+       field(LLSV, "MAJOR")
+}
diff --git a/ebctrl/ioc/db/dbSubExample.db b/ebctrl/ioc/db/dbSubExample.db
new file mode 100644 (file)
index 0000000..96b8638
--- /dev/null
@@ -0,0 +1,5 @@
+record(sub,"$(user):subExample")
+{
+    field(INAM,"mySubInit")
+    field(SNAM,"mySubProcess")
+}
diff --git a/ebctrl/ioc/db/evtbuild.db b/ebctrl/ioc/db/evtbuild.db
new file mode 100644 (file)
index 0000000..b39319d
--- /dev/null
@@ -0,0 +1,124 @@
+record(genSub,"HAD:$(eb)") {\r
+    field(DESC,"General Subroutine Record")\r
+    field(SCAN,"1 second")\r
+    field(PINI,"NO")\r
+    field(PHAS,"0")\r
+    field(EVNT,"0")\r
+    field(DISV,"1")\r
+    field(LFLG,"IGNORE")\r
+    field(EFLG,"ALWAYS")\r
+    field(SDIS,"0.0000000000000000e+00")\r
+    field(DISS,"NO_ALARM")\r
+    field(PRIO,"LOW")\r
+    field(FLNK,"0.000000000000000e+00")\r
+    field(SUBL,"0.0000000000000000e+00")\r
+    field(BRSV,"NO_ALARM")\r
+    field(INAM,"evtbuild_init")\r
+    field(SNAM,"evtbuild_proc")\r
+    field(FTA,"LONG")\r
+    field(FTB,"LONG")\r
+    field(FTC,"LONG")\r
+    field(FTD,"LONG")\r
+    field(FTE,"LONG")\r
+    field(FTF,"LONG")\r
+    field(FTG,"LONG")\r
+    field(FTH,"LONG")\r
+    field(FTVA,"LONG")\r
+    field(FTVB,"LONG")\r
+    field(FTVC,"LONG")\r
+    field(FTVD,"LONG")\r
+    field(FTVE,"LONG")\r
+    field(FTVF,"LONG")\r
+    field(FTVG,"LONG")\r
+    field(FTVH,"LONG")\r
+    field(NOA,"50")\r
+    field(NOB,"50")\r
+    field(NOC,"50")\r
+    field(NOD,"50")\r
+    field(NOE,"50")\r
+    field(NOF,"50")\r
+    field(NOG,"50")\r
+    field(NOH,"50")\r
+    field(NOVA,"1")\r
+    field(NOVB,"1")\r
+    field(NOVC,"1")\r
+    field(NOVD,"1")\r
+    field(NOVE,"1")\r
+    field(NOVF,"1")\r
+    field(NOVG,"100")\r
+    field(NOVH,"1")\r
+    field(OUTA,"HAD:$(eb):nrOfMsgs PP NMS")\r
+    field(OUTB,"HAD:$(eb):byteWrit PP NMS")    \r
+    field(OUTC,"HAD:$(eb):evtsComp PP NMS")\r
+    field(OUTD,"HAD:$(eb):evtsDisc PP NMS")\r
+    field(OUTE,"HAD:$(eb):evtsDataErr PP NMS")\r
+    field(OUTF,"HAD:$(eb):evtsTagErr PP NMS")  \r
+    field(OUTG,"HAD:$(eb):evtbuildBuff PP NMS")\r
+    field(OUTH,"HAD:$(eb):status PP NMS")\r
+}\r
+record(longin,"HAD:$(eb):nrOfMsgs")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):byteWrit")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):evtsComp")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):evtsDisc")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):evtsDataErr")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):evtsTagErr")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):status")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(waveform,"HAD:$(eb):evtbuildBuff")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+    field(NELM,"100")\r
+    field(FTVL,"LONG")\r
+}\r
+record(sub,"HAD:genRunId") {\r
+                field(DESC, "subroutine")\r
+                field(SCAN, "1 second")\r
+                field(INPA, "HAD:$(eb):byteWrit")\r
+                field(INPB, "HAD:$(eb):status")\r
+                field(INAM, "genRunId_init")\r
+                field(SNAM, "genRunId_proc")\r
+}\r
+record(sub,"HAD:writeRunId") {\r
+                field(DESC, "subroutine")\r
+                field(SCAN, "1 second")\r
+                field(INPA, "HAD:genRunId")\r
+                field(INPB, "")\r
+                field(INAM, "writeRunId_init")\r
+                field(SNAM, "writeRunId_proc")\r
+}\r
diff --git a/ebctrl/ioc/db/user.substitutions b/ebctrl/ioc/db/user.substitutions
new file mode 100644 (file)
index 0000000..aea0cbf
--- /dev/null
@@ -0,0 +1,12 @@
+# Example substitutions file
+
+file "db/dbExample1.db" {
+    { user = "scs" }
+}
+
+file db/dbExample2.db {
+    pattern { user, no, scan }
+        { "scs", 1, "1 second" }
+        { "scs", 2, "2 second" }
+        { "scs", 3, "5 second" }
+}
diff --git a/ebctrl/ioc/db/userHost.substitutions b/ebctrl/ioc/db/userHost.substitutions
new file mode 100644 (file)
index 0000000..b0e3006
--- /dev/null
@@ -0,0 +1,12 @@
+# Example substitutions file
+
+file "db/dbExample1.db" {
+    { user = "scsHost" }
+}
+
+file db/dbExample2.db {
+    pattern { user, no, scan }
+        { "scsHost", 1, "1 second" }
+        { "scsHost", 2, "2 second" }
+        { "scsHost", 3, "5 second" }
+}
diff --git a/ebctrl/ioc/dbd/ebctrl.dbd b/ebctrl/ioc/dbd/ebctrl.dbd
new file mode 100644 (file)
index 0000000..ebabb25
--- /dev/null
@@ -0,0 +1,13320 @@
+menu(stringoutPOST) {
+       choice(stringoutPOST_OnChange,"On Change")
+       choice(stringoutPOST_Always,"Always")
+}
+menu(stringinPOST) {
+       choice(stringinPOST_OnChange,"On Change")
+       choice(stringinPOST_Always,"Always")
+}
+menu(seqSELM) {
+       choice(seqSELM_All,"All")
+       choice(seqSELM_Specified,"Specified")
+       choice(seqSELM_Mask,"Mask")
+}
+menu(selSELM) {
+       choice(selSELM_Specified,"Specified")
+       choice(selSELM_High_Signal,"High Signal")
+       choice(selSELM_Low_Signal,"Low Signal")
+       choice(selSELM_Median_Signal,"Median Signal")
+}
+menu(menuYesNo) {
+       choice(menuYesNoNO,"NO")
+       choice(menuYesNoYES,"YES")
+}
+menu(menuSimm) {
+       choice(menuSimmNO,"NO")
+       choice(menuSimmYES,"YES")
+       choice(menuSimmRAW,"RAW")
+}
+menu(menuScan) {
+       choice(menuScanPassive,"Passive")
+       choice(menuScanEvent,"Event")
+       choice(menuScanI_O_Intr,"I/O Intr")
+       choice(menuScan10_second,"10 second")
+       choice(menuScan5_second,"5 second")
+       choice(menuScan2_second,"2 second")
+       choice(menuScan1_second,"1 second")
+       choice(menuScan_5_second,".5 second")
+       choice(menuScan_2_second,".2 second")
+       choice(menuScan_1_second,".1 second")
+}
+menu(menuPriority) {
+       choice(menuPriorityLOW,"LOW")
+       choice(menuPriorityMEDIUM,"MEDIUM")
+       choice(menuPriorityHIGH,"HIGH")
+}
+menu(menuOmsl) {
+       choice(menuOmslsupervisory,"supervisory")
+       choice(menuOmslclosed_loop,"closed_loop")
+}
+menu(menuIvoa) {
+       choice(menuIvoaContinue_normally,"Continue normally")
+       choice(menuIvoaDon_t_drive_outputs,"Don't drive outputs")
+       choice(menuIvoaSet_output_to_IVOV,"Set output to IVOV")
+}
+menu(menuFtype) {
+       choice(menuFtypeSTRING,"STRING")
+       choice(menuFtypeCHAR,"CHAR")
+       choice(menuFtypeUCHAR,"UCHAR")
+       choice(menuFtypeSHORT,"SHORT")
+       choice(menuFtypeUSHORT,"USHORT")
+       choice(menuFtypeLONG,"LONG")
+       choice(menuFtypeULONG,"ULONG")
+       choice(menuFtypeFLOAT,"FLOAT")
+       choice(menuFtypeDOUBLE,"DOUBLE")
+       choice(menuFtypeENUM,"ENUM")
+}
+menu(menuConvert) {
+       choice(menuConvertNO_CONVERSION,"NO CONVERSION")
+       choice(menuConvertSLOPE,"SLOPE")
+       choice(menuConvertLINEAR,"LINEAR")
+       choice(menuConverttypeKdegF,"typeKdegF")
+       choice(menuConverttypeKdegC,"typeKdegC")
+       choice(menuConverttypeJdegF,"typeJdegF")
+       choice(menuConverttypeJdegC,"typeJdegC")
+       choice(menuConverttypeEdegF,"typeEdegF(ixe only)")
+       choice(menuConverttypeEdegC,"typeEdegC(ixe only)")
+       choice(menuConverttypeTdegF,"typeTdegF")
+       choice(menuConverttypeTdegC,"typeTdegC")
+       choice(menuConverttypeRdegF,"typeRdegF")
+       choice(menuConverttypeRdegC,"typeRdegC")
+       choice(menuConverttypeSdegF,"typeSdegF")
+       choice(menuConverttypeSdegC,"typeSdegC")
+}
+menu(menuCompress) {
+       choice(menuCompressN_to_1_First_Value,"N to 1 First Value")
+       choice(menuCompressN_to_1_Low_Value,"N to 1 Low Value")
+       choice(menuCompressN_to_1_High_Value,"N to 1 High Value")
+       choice(menuCompressN_to_1_Average,"N to 1 Average")
+}
+menu(menuArrType) {
+       choice(menuArrType8_bit_integers,"8 bit integers")
+       choice(menuArrType16_bit_integers,"16 bit integers")
+       choice(menuArrType32_bit_integers,"32 bit integers")
+       choice(menuArrTypeIEEE_floating_point,"IEEE floating point")
+}
+menu(menuAlarmStat) {
+       choice(menuAlarmStatNO_ALARM,"NO_ALARM")
+       choice(menuAlarmStatREAD,"READ")
+       choice(menuAlarmStatWRITE,"WRITE")
+       choice(menuAlarmStatHIHI,"HIHI")
+       choice(menuAlarmStatHIGH,"HIGH")
+       choice(menuAlarmStatLOLO,"LOLO")
+       choice(menuAlarmStatLOW,"LOW")
+       choice(menuAlarmStatSTATE,"STATE")
+       choice(menuAlarmStatCOS,"COS")
+       choice(menuAlarmStatCOMM,"COMM")
+       choice(menuAlarmStatTIMEOUT,"TIMEOUT")
+       choice(menuAlarmStatHWLIMIT,"HWLIMIT")
+       choice(menuAlarmStatCALC,"CALC")
+       choice(menuAlarmStatSCAN,"SCAN")
+       choice(menuAlarmStatLINK,"LINK")
+       choice(menuAlarmStatSOFT,"SOFT")
+       choice(menuAlarmStatBAD_SUB,"BAD_SUB")
+       choice(menuAlarmStatUDF,"UDF")
+       choice(menuAlarmStatDISABLE,"DISABLE")
+       choice(menuAlarmStatSIMM,"SIMM")
+       choice(menuAlarmStatREAD_ACCESS,"READ_ACCESS")
+       choice(menuAlarmStatWRITE_ACCESS,"WRITE_ACCESS")
+}
+menu(menuAlarmSevr) {
+       choice(menuAlarmSevrNO_ALARM,"NO_ALARM")
+       choice(menuAlarmSevrMINOR,"MINOR")
+       choice(menuAlarmSevrMAJOR,"MAJOR")
+       choice(menuAlarmSevrINVALID,"INVALID")
+}
+menu(genSubLFLG) {
+       choice(genSubLFLG_IGNORE,"IGNORE")
+       choice(genSubLFLG_READ,"READ")
+}
+menu(genSubEFLG) {
+       choice(genSubEFLG_NEVER,"NEVER")
+       choice(genSubEFLG_ON_CHANGE,"ON CHANGE")
+       choice(genSubEFLG_ALWAYS,"ALWAYS")
+}
+menu(fanoutSELM) {
+       choice(fanoutSELM_All,"All")
+       choice(fanoutSELM_Specified,"Specified")
+       choice(fanoutSELM_Mask,"Mask")
+}
+menu(dfanoutSELM) {
+       choice(dfanoutSELM_All,"All")
+       choice(dfanoutSELM_Specified,"Specified")
+       choice(dfanoutSELM_Mask,"Mask")
+}
+menu(compressALG) {
+       choice(compressALG_N_to_1_Low_Value,"N to 1 Low Value")
+       choice(compressALG_N_to_1_High_Value,"N to 1 High Value")
+       choice(compressALG_N_to_1_Average,"N to 1 Average")
+       choice(compressALG_Average,"Average")
+       choice(compressALG_Circular_Buffer,"Circular Buffer")
+       choice(compressALG_N_to_1_Median,"N to 1 Median")
+}
+menu(calcoutOOPT) {
+       choice(calcoutOOPT_Every_Time,"Every Time")
+       choice(calcoutOOPT_On_Change,"On Change")
+       choice(calcoutOOPT_When_Zero,"When Zero")
+       choice(calcoutOOPT_When_Non_zero,"When Non-zero")
+       choice(calcoutOOPT_Transition_To_Zero,"Transition To Zero")
+       choice(calcoutOOPT_Transition_To_Non_zero,"Transition To Non-zero")
+}
+menu(calcoutINAV) {
+       choice(calcoutINAV_EXT_NC,"Ext PV NC")
+       choice(calcoutINAV_EXT,"Ext PV OK")
+       choice(calcoutINAV_LOC,"Local PV")
+       choice(calcoutINAV_CON,"Constant")
+}
+menu(calcoutINAP) {
+       choice(calcoutINAP_No,"No PROC on Change")
+       choice(calcoutINAP_Yes,"PROC on Change")
+}
+menu(calcoutDOPT) {
+       choice(calcoutDOPT_Use_VAL,"Use CALC")
+       choice(calcoutDOPT_Use_OVAL,"Use OCAL")
+}
+menu(aoOIF) {
+       choice(aoOIF_Full,"Full")
+       choice(aoOIF_Incremental,"Incremental")
+}
+recordtype(ai) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Current EGU Value")
+               promptgroup(GUI_INPUTS)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LINR,DBF_MENU) {
+               prompt("Linearization")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               menu(menuConvert)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGUF,DBF_DOUBLE) {
+               prompt("Engineer Units Full")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGUL,DBF_DOUBLE) {
+               prompt("Engineer Units Low")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(AOFF,DBF_DOUBLE) {
+               prompt("Adjustment Offset")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ASLO,DBF_DOUBLE) {
+               prompt("Adjustment Slope")
+               initial("1")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SMOO,DBF_DOUBLE) {
+               prompt("Smoothing")
+               promptgroup(GUI_CONVERT)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ESLO,DBF_DOUBLE) {
+               prompt("Raw to EGU Slope")
+               initial("1")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(2)
+       }
+       field(EOFF,DBF_DOUBLE) {
+               prompt("Raw to EGU Offset")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(2)
+       }
+       field(ROFF,DBF_LONG) {
+               prompt("Raw Offset, obsolete")
+               pp(TRUE)
+               interest(2)
+       }
+       field(PBRK,DBF_NOACCESS) {
+               prompt("Ptrto brkTable")
+               special(SPC_NOMOD)
+               extra("void *   pbrk")
+               interest(4)
+       }
+       field(INIT,DBF_SHORT) {
+               prompt("Initialized?")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LBRK,DBF_SHORT) {
+               prompt("LastBreak Point")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RVAL,DBF_LONG) {
+               prompt("Current Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_LONG) {
+               prompt("Previous Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SVAL,DBF_DOUBLE) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuSimm)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(ao) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Desired Output")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OVAL,DBF_DOUBLE) {
+               prompt("Output Value")
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OROC,DBF_DOUBLE) {
+               prompt("Output Rate of Chang")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_OUTPUT)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(OIF,DBF_MENU) {
+               prompt("Out Full/Incremental")
+               promptgroup(GUI_OUTPUT)
+               menu(aoOIF)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LINR,DBF_MENU) {
+               prompt("Linearization")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               menu(menuConvert)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGUF,DBF_DOUBLE) {
+               prompt("Eng Units Full")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGUL,DBF_DOUBLE) {
+               prompt("Eng Units Low")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(ROFF,DBF_LONG) {
+               prompt("Raw Offset, obsolete")
+               pp(TRUE)
+               interest(2)
+       }
+       field(EOFF,DBF_DOUBLE) {
+               prompt("EGU to Raw Offset")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(2)
+       }
+       field(ESLO,DBF_DOUBLE) {
+               prompt("EGU to Raw Slope")
+               initial("1")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(2)
+       }
+       field(DRVH,DBF_DOUBLE) {
+               prompt("Drive High Limit")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(DRVL,DBF_DOUBLE) {
+               prompt("Drive Low Limit")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(AOFF,DBF_DOUBLE) {
+               prompt("Adjustment Offset")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ASLO,DBF_DOUBLE) {
+               prompt("Adjustment Slope")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(RVAL,DBF_LONG) {
+               prompt("Current Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_LONG) {
+               prompt("Previous Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RBV,DBF_LONG) {
+               prompt("Readback Value")
+               special(SPC_NOMOD)
+       }
+       field(ORBV,DBF_LONG) {
+               prompt("Prev Readback Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(PVAL,DBF_DOUBLE) {
+               prompt("Previous value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(PBRK,DBF_NOACCESS) {
+               prompt("Ptrto brkTable")
+               special(SPC_NOMOD)
+               extra("void *   pbrk")
+               interest(4)
+       }
+       field(INIT,DBF_SHORT) {
+               prompt("Initialized?")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LBRK,DBF_SHORT) {
+               prompt("LastBreak Point")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID output action")
+               promptgroup(GUI_OUTPUT)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_DOUBLE) {
+               prompt("INVALID output value")
+               promptgroup(GUI_OUTPUT)
+               interest(2)
+       }
+       field(OMOD,DBF_UCHAR) {
+               prompt("Was OVAL modified?")
+               special(SPC_NOMOD)
+       }
+}
+recordtype(bi) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(VAL,DBF_ENUM) {
+               prompt("Current Value")
+               promptgroup(GUI_INPUTS)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(ZSV,DBF_MENU) {
+               prompt("Zero Error Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(OSV,DBF_MENU) {
+               prompt("One Error Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(COSV,DBF_MENU) {
+               prompt("Change of State Svr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ZNAM,DBF_STRING) {
+               prompt("Zero Name")
+               promptgroup(GUI_CALC)
+               size(20)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONAM,DBF_STRING) {
+               prompt("One Name")
+               promptgroup(GUI_CLOCK)
+               size(20)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(LALM,DBF_USHORT) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_USHORT) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SVAL,DBF_ULONG) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuSimm)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(bo) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_ENUM) {
+               prompt("Current Value")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_OUTPUT)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("Seconds to Hold High")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(ZNAM,DBF_STRING) {
+               prompt("Zero Name")
+               promptgroup(GUI_DISPLAY)
+               size(20)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONAM,DBF_STRING) {
+               prompt("One Name")
+               promptgroup(GUI_DISPLAY)
+               size(20)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPVT,DBF_NOACCESS) {
+               prompt("Record Private")
+               special(SPC_NOMOD)
+               extra("void *  rpvt")
+               interest(4)
+       }
+       field(WDPT,DBF_NOACCESS) {
+               prompt("Watch Dog Timer ID")
+               special(SPC_NOMOD)
+               extra("void *   wdpt")
+               interest(4)
+       }
+       field(ZSV,DBF_MENU) {
+               prompt("Zero Error Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(OSV,DBF_MENU) {
+               prompt("One Error Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(COSV,DBF_MENU) {
+               prompt("Change of State Sevr")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RBV,DBF_ULONG) {
+               prompt("Readback Value")
+               special(SPC_NOMOD)
+       }
+       field(ORBV,DBF_ULONG) {
+               prompt("Prev Readback Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_USHORT) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_USHORT) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID outpt action")
+               promptgroup(GUI_OUTPUT)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_USHORT) {
+               prompt("INVALID output value")
+               promptgroup(GUI_OUTPUT)
+               interest(2)
+       }
+}
+recordtype(calc) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Result")
+               asl(ASL0)
+       }
+       field(CALC,DBF_STRING) {
+               prompt("Calculation")
+               initial("0")
+               promptgroup(GUI_CALC)
+               special(103)
+               size(40)
+               pp(TRUE)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input A")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input B")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input C")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input D")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input E")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input F")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input G")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input H")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input I")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input J")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input K")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input L")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units Name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Rng")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(A,DBF_DOUBLE) {
+               prompt("Value of Input A")
+               pp(TRUE)
+       }
+       field(B,DBF_DOUBLE) {
+               prompt("Value of Input B")
+               pp(TRUE)
+       }
+       field(C,DBF_DOUBLE) {
+               prompt("Value of Input C")
+               pp(TRUE)
+       }
+       field(D,DBF_DOUBLE) {
+               prompt("Value of Input D")
+               pp(TRUE)
+       }
+       field(E,DBF_DOUBLE) {
+               prompt("Value of Input E")
+               pp(TRUE)
+       }
+       field(F,DBF_DOUBLE) {
+               prompt("Value of Input F")
+               pp(TRUE)
+       }
+       field(G,DBF_DOUBLE) {
+               prompt("Value of Input G")
+               pp(TRUE)
+       }
+       field(H,DBF_DOUBLE) {
+               prompt("Value of Input H")
+               pp(TRUE)
+       }
+       field(I,DBF_DOUBLE) {
+               prompt("Value of Input I")
+               pp(TRUE)
+       }
+       field(J,DBF_DOUBLE) {
+               prompt("Value of Input J")
+               pp(TRUE)
+       }
+       field(K,DBF_DOUBLE) {
+               prompt("Value of Input K")
+               pp(TRUE)
+       }
+       field(L,DBF_DOUBLE) {
+               prompt("Value of Input L")
+               pp(TRUE)
+       }
+       field(LA,DBF_DOUBLE) {
+               prompt("Prev Value of A")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LB,DBF_DOUBLE) {
+               prompt("Prev Value of B")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LC,DBF_DOUBLE) {
+               prompt("Prev Value of C")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LD,DBF_DOUBLE) {
+               prompt("Prev Value of D")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LE,DBF_DOUBLE) {
+               prompt("Prev Value of E")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LF,DBF_DOUBLE) {
+               prompt("Prev Value of F")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LG,DBF_DOUBLE) {
+               prompt("Prev Value of G")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LH,DBF_DOUBLE) {
+               prompt("Prev Value of H")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LI,DBF_DOUBLE) {
+               prompt("Prev Value of I")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LJ,DBF_DOUBLE) {
+               prompt("Prev Value of J")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LK,DBF_DOUBLE) {
+               prompt("Prev Value of K")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LL,DBF_DOUBLE) {
+               prompt("Prev Value of L")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RPCL,DBF_NOACCESS) {
+               prompt("Reverse Polish Calc")
+               special(SPC_NOMOD)
+               extra("char     rpcl[INFIX_TO_POSTFIX_SIZE(40)]")
+               interest(4)
+       }
+}
+recordtype(calcout) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VERS,DBF_DOUBLE) {
+               prompt("Code Version")
+               initial("1")
+               special(SPC_NOMOD)
+       }
+       field(RPVT,DBF_NOACCESS) {
+               prompt("Record Private")
+               special(SPC_NOMOD)
+               extra("struct rpvtStruct *rpvt")
+               interest(4)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Result")
+               promptgroup(GUI_OUTPUT)
+               asl(ASL0)
+       }
+       field(PVAL,DBF_DOUBLE) {
+               prompt("Previous Value")
+       }
+       field(CALC,DBF_STRING) {
+               prompt("Calculation")
+               initial("0")
+               promptgroup(GUI_CALC)
+               special(103)
+               size(40)
+               pp(TRUE)
+       }
+       field(CLCV,DBF_LONG) {
+               prompt("CALC Valid")
+               interest(1)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input A")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input B")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input C")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input D")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input E")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input F")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input G")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input H")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input I")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input J")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input K")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input L")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_OUTPUT)
+               special(100)
+               interest(1)
+       }
+       field(INAV,DBF_MENU) {
+               prompt("INPA PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INBV,DBF_MENU) {
+               prompt("INPB PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INCV,DBF_MENU) {
+               prompt("INPC PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INDV,DBF_MENU) {
+               prompt("INPD PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INEV,DBF_MENU) {
+               prompt("INPE PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INFV,DBF_MENU) {
+               prompt("INPF PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INGV,DBF_MENU) {
+               prompt("INPG PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INHV,DBF_MENU) {
+               prompt("INPH PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INIV,DBF_MENU) {
+               prompt("INPI PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INJV,DBF_MENU) {
+               prompt("INPJ PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INKV,DBF_MENU) {
+               prompt("INPK PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INLV,DBF_MENU) {
+               prompt("INPL PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(OUTV,DBF_MENU) {
+               prompt("OUT PV Status")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(OOPT,DBF_MENU) {
+               prompt("Output Execute Opt")
+               promptgroup(GUI_CALC)
+               menu(calcoutOOPT)
+               interest(1)
+       }
+       field(ODLY,DBF_DOUBLE) {
+               prompt("Output Execute Delay")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+               asl(ASL0)
+       }
+       field(DLYA,DBF_USHORT) {
+               prompt("Output Delay Active")
+               special(SPC_NOMOD)
+               asl(ASL0)
+       }
+       field(DOPT,DBF_MENU) {
+               prompt("Output Data Opt")
+               promptgroup(GUI_CALC)
+               menu(calcoutDOPT)
+               interest(1)
+       }
+       field(OCAL,DBF_STRING) {
+               prompt("Output Calculation")
+               initial("0")
+               promptgroup(GUI_CALC)
+               special(103)
+               size(40)
+               pp(TRUE)
+       }
+       field(OCLV,DBF_LONG) {
+               prompt("OCAL Valid")
+               interest(1)
+       }
+       field(OEVT,DBF_USHORT) {
+               prompt("Event To Issue")
+               promptgroup(GUI_CLOCK)
+               asl(ASL0)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID output action")
+               promptgroup(GUI_OUTPUT)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_DOUBLE) {
+               prompt("INVALID output value")
+               promptgroup(GUI_OUTPUT)
+               interest(2)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units Name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Rng")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(A,DBF_DOUBLE) {
+               prompt("Value of Input A")
+               pp(TRUE)
+       }
+       field(B,DBF_DOUBLE) {
+               prompt("Value of Input B")
+               pp(TRUE)
+       }
+       field(C,DBF_DOUBLE) {
+               prompt("Value of Input C")
+               pp(TRUE)
+       }
+       field(D,DBF_DOUBLE) {
+               prompt("Value of Input D")
+               pp(TRUE)
+       }
+       field(E,DBF_DOUBLE) {
+               prompt("Value of Input E")
+               pp(TRUE)
+       }
+       field(F,DBF_DOUBLE) {
+               prompt("Value of Input F")
+               pp(TRUE)
+       }
+       field(G,DBF_DOUBLE) {
+               prompt("Value of Input G")
+               pp(TRUE)
+       }
+       field(H,DBF_DOUBLE) {
+               prompt("Value of Input H")
+               pp(TRUE)
+       }
+       field(I,DBF_DOUBLE) {
+               prompt("Value of Input I")
+               pp(TRUE)
+       }
+       field(J,DBF_DOUBLE) {
+               prompt("Value of Input J")
+               pp(TRUE)
+       }
+       field(K,DBF_DOUBLE) {
+               prompt("Value of Input K")
+               pp(TRUE)
+       }
+       field(L,DBF_DOUBLE) {
+               prompt("Value of Input L")
+               pp(TRUE)
+       }
+       field(OVAL,DBF_DOUBLE) {
+               prompt("Output Value")
+               asl(ASL0)
+       }
+       field(LA,DBF_DOUBLE) {
+               prompt("Prev Value of A")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LB,DBF_DOUBLE) {
+               prompt("Prev Value of B")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LC,DBF_DOUBLE) {
+               prompt("Prev Value of C")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LD,DBF_DOUBLE) {
+               prompt("Prev Value of D")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LE,DBF_DOUBLE) {
+               prompt("Prev Value of E")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LF,DBF_DOUBLE) {
+               prompt("Prev Value of F")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LG,DBF_DOUBLE) {
+               prompt("Prev Value of G")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LH,DBF_DOUBLE) {
+               prompt("Prev Value of H")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LI,DBF_DOUBLE) {
+               prompt("Prev Value of I")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LJ,DBF_DOUBLE) {
+               prompt("Prev Value of J")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LK,DBF_DOUBLE) {
+               prompt("Prev Value of K")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LL,DBF_DOUBLE) {
+               prompt("Prev Value of L")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(POVL,DBF_DOUBLE) {
+               prompt("Prev Value of OVAL")
+               asl(ASL0)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RPCL,DBF_NOACCESS) {
+               prompt("Reverse Polish Calc")
+               special(SPC_NOMOD)
+               extra("char     rpcl[INFIX_TO_POSTFIX_SIZE(40)]")
+               interest(4)
+       }
+       field(ORPC,DBF_NOACCESS) {
+               prompt("Reverse Polish OCalc")
+               special(SPC_NOMOD)
+               extra("char     orpc[INFIX_TO_POSTFIX_SIZE(40)]")
+               interest(4)
+       }
+}
+recordtype(compress) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_NOACCESS) {
+               prompt("Value")
+               special(SPC_DBADDR)
+               extra("void *           val")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_COMPRESS)
+               interest(1)
+       }
+       field(RES,DBF_SHORT) {
+               prompt("Reset")
+               special(101)
+               interest(3)
+               asl(ASL0)
+       }
+       field(ALG,DBF_MENU) {
+               prompt("Compression Algorithm")
+               promptgroup(GUI_ALARMS)
+               special(101)
+               menu(compressALG)
+               interest(1)
+       }
+       field(NSAM,DBF_ULONG) {
+               prompt("Number of Values")
+               initial("1")
+               promptgroup(GUI_COMPRESS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(N,DBF_ULONG) {
+               prompt("N to 1 Compression")
+               initial("1")
+               promptgroup(GUI_COMPRESS)
+               special(101)
+               interest(1)
+       }
+       field(IHIL,DBF_DOUBLE) {
+               prompt("Init High Interest Lim")
+               promptgroup(GUI_COMPRESS)
+               interest(1)
+       }
+       field(ILIL,DBF_DOUBLE) {
+               prompt("Init Low Interest Lim")
+               promptgroup(GUI_COMPRESS)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("EngineeringUnits")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(OFF,DBF_ULONG) {
+               prompt("Offset")
+               special(SPC_NOMOD)
+       }
+       field(NUSE,DBF_ULONG) {
+               prompt("Number Used")
+               special(SPC_NOMOD)
+       }
+       field(BPTR,DBF_NOACCESS) {
+               prompt("Buffer Pointer")
+               special(SPC_NOMOD)
+               extra("double           *bptr")
+               interest(4)
+       }
+       field(SPTR,DBF_NOACCESS) {
+               prompt("Summing Buffer Ptr")
+               special(SPC_NOMOD)
+               extra("double           *sptr")
+               interest(4)
+       }
+       field(WPTR,DBF_NOACCESS) {
+               prompt("Working Buffer Ptr")
+               special(SPC_NOMOD)
+               extra("double           *wptr")
+               interest(4)
+       }
+       field(INPN,DBF_LONG) {
+               prompt("Number of elements in Working Buffer")
+               special(SPC_NOMOD)
+               interest(4)
+       }
+       field(CVB,DBF_DOUBLE) {
+               prompt("Compress Value Buffer")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(INX,DBF_ULONG) {
+               prompt("Compressed Array Inx")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(dfanout) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Desired Output")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(SELM,DBF_MENU) {
+               prompt("Select Mechanism")
+               promptgroup(GUI_LINKS)
+               menu(dfanoutSELM)
+               interest(1)
+       }
+       field(SELN,DBF_USHORT) {
+               prompt("Link Selection")
+               initial("1")
+               interest(1)
+       }
+       field(SELL,DBF_INLINK) {
+               prompt("Link Selection Loc")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(OUTA,DBF_OUTLINK) {
+               prompt("Output Spec A")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTB,DBF_OUTLINK) {
+               prompt("Output Spec B")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTC,DBF_OUTLINK) {
+               prompt("Output Spec C")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTD,DBF_OUTLINK) {
+               prompt("Output Spec D")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTE,DBF_OUTLINK) {
+               prompt("Output Spec E")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTF,DBF_OUTLINK) {
+               prompt("Output Spec F")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTG,DBF_OUTLINK) {
+               prompt("Output Spec G")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTH,DBF_OUTLINK) {
+               prompt("Output Spec H")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_OUTPUT)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(event) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_USHORT) {
+               prompt("Event Number To Post")
+               promptgroup(GUI_INPUTS)
+               asl(ASL0)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SVAL,DBF_USHORT) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(fanout) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_LONG) {
+               prompt("Used to trigger")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(SELM,DBF_MENU) {
+               prompt("Select Mechanism")
+               promptgroup(GUI_LINKS)
+               menu(fanoutSELM)
+               interest(1)
+       }
+       field(SELN,DBF_USHORT) {
+               prompt("Link Selection")
+               initial("1")
+               interest(1)
+       }
+       field(SELL,DBF_INLINK) {
+               prompt("Link Selection Loc")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK1,DBF_FWDLINK) {
+               prompt("Forward Link 1")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK2,DBF_FWDLINK) {
+               prompt("Forward Link 2")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK3,DBF_FWDLINK) {
+               prompt("Forward Link 3")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK4,DBF_FWDLINK) {
+               prompt("Forward Link 4")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK5,DBF_FWDLINK) {
+               prompt("Forward Link 5")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK6,DBF_FWDLINK) {
+               prompt("Forward Link 6")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+}
+recordtype(longin) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_LONG) {
+               prompt("Current value")
+               promptgroup(GUI_INPUTS)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_LONG) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_LONG) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_LONG) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_LONG) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_LONG) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_LONG) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_LONG) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_LONG) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_LONG) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_LONG) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_LONG) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_LONG) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SVAL,DBF_LONG) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(longout) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_LONG) {
+               prompt("Desired Output")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_OUTPUT)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(DRVH,DBF_LONG) {
+               prompt("Drive High Limit")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(DRVL,DBF_LONG) {
+               prompt("Drive Low Limit")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HOPR,DBF_LONG) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_LONG) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_LONG) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_LONG) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_LONG) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_LONG) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_LONG) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_LONG) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_LONG) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_LONG) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_LONG) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_LONG) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID output action")
+               promptgroup(GUI_OUTPUT)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_LONG) {
+               prompt("INVALID output value")
+               promptgroup(GUI_OUTPUT)
+               interest(2)
+       }
+}
+recordtype(mbbi) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_ENUM) {
+               prompt("Current Value")
+               promptgroup(GUI_INPUTS)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(NOBT,DBF_SHORT) {
+               prompt("Number of Bits")
+               promptgroup(GUI_MBB)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(ZRVL,DBF_ULONG) {
+               prompt("Zero Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ONVL,DBF_ULONG) {
+               prompt("One Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TWVL,DBF_ULONG) {
+               prompt("Two Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(THVL,DBF_ULONG) {
+               prompt("Three Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FRVL,DBF_ULONG) {
+               prompt("Four Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FVVL,DBF_ULONG) {
+               prompt("Five Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(SXVL,DBF_ULONG) {
+               prompt("Six Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(SVVL,DBF_ULONG) {
+               prompt("Seven Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(EIVL,DBF_ULONG) {
+               prompt("Eight Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(NIVL,DBF_ULONG) {
+               prompt("Nine Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TEVL,DBF_ULONG) {
+               prompt("Ten Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ELVL,DBF_ULONG) {
+               prompt("Eleven Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TVVL,DBF_ULONG) {
+               prompt("Twelve Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TTVL,DBF_ULONG) {
+               prompt("Thirteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FTVL,DBF_ULONG) {
+               prompt("Fourteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FFVL,DBF_ULONG) {
+               prompt("Fifteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ZRST,DBF_STRING) {
+               prompt("Zero String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONST,DBF_STRING) {
+               prompt("One String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TWST,DBF_STRING) {
+               prompt("Two String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(THST,DBF_STRING) {
+               prompt("Three String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FRST,DBF_STRING) {
+               prompt("Four String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FVST,DBF_STRING) {
+               prompt("Five String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SXST,DBF_STRING) {
+               prompt("Six String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SVST,DBF_STRING) {
+               prompt("Seven String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EIST,DBF_STRING) {
+               prompt("Eight String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(NIST,DBF_STRING) {
+               prompt("Nine String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TEST,DBF_STRING) {
+               prompt("Ten String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ELST,DBF_STRING) {
+               prompt("Eleven String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TVST,DBF_STRING) {
+               prompt("Twelve String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TTST,DBF_STRING) {
+               prompt("Thirteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FTST,DBF_STRING) {
+               prompt("Fourteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FFST,DBF_STRING) {
+               prompt("Fifteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ZRSV,DBF_MENU) {
+               prompt("State Zero Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONSV,DBF_MENU) {
+               prompt("State One Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TWSV,DBF_MENU) {
+               prompt("State Two Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(THSV,DBF_MENU) {
+               prompt("State Three Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FRSV,DBF_MENU) {
+               prompt("State Four Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FVSV,DBF_MENU) {
+               prompt("State Five Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SXSV,DBF_MENU) {
+               prompt("State Six Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SVSV,DBF_MENU) {
+               prompt("State Seven Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EISV,DBF_MENU) {
+               prompt("State Eight Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(NISV,DBF_MENU) {
+               prompt("State Nine Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TESV,DBF_MENU) {
+               prompt("State Ten Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ELSV,DBF_MENU) {
+               prompt("State Eleven Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TVSV,DBF_MENU) {
+               prompt("State Twelve Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TTSV,DBF_MENU) {
+               prompt("State Thirteen Sevr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FTSV,DBF_MENU) {
+               prompt("State Fourteen Sevr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FFSV,DBF_MENU) {
+               prompt("State Fifteen Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(UNSV,DBF_MENU) {
+               prompt("Unknown State Severity")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(COSV,DBF_MENU) {
+               prompt("Change of State Svr")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("Prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(MLST,DBF_USHORT) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_USHORT) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SDEF,DBF_SHORT) {
+               prompt("States Defined")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SHFT,DBF_USHORT) {
+               prompt("Shift")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SVAL,DBF_ULONG) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuSimm)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(mbbiDirect) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_USHORT) {
+               prompt("Current Value")
+               promptgroup(GUI_INPUTS)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(NOBT,DBF_SHORT) {
+               prompt("Number of Bits")
+               promptgroup(GUI_MBB)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("Prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(MLST,DBF_USHORT) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_USHORT) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SDEF,DBF_SHORT) {
+               prompt("States Defined")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SHFT,DBF_USHORT) {
+               prompt("Shift")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SVAL,DBF_ULONG) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuSimm)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(B0,DBF_UCHAR) {
+               prompt("Bit 0")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B1,DBF_UCHAR) {
+               prompt("Bit 1")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B2,DBF_UCHAR) {
+               prompt("Bit 2")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B3,DBF_UCHAR) {
+               prompt("Bit 3")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B4,DBF_UCHAR) {
+               prompt("Bit 4")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B5,DBF_UCHAR) {
+               prompt("Bit 5")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B6,DBF_UCHAR) {
+               prompt("Bit 6")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B7,DBF_UCHAR) {
+               prompt("Bit 7")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B8,DBF_UCHAR) {
+               prompt("Bit 8")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B9,DBF_UCHAR) {
+               prompt("Bit 9")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BA,DBF_UCHAR) {
+               prompt("Bit A")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BB,DBF_UCHAR) {
+               prompt("Bit B")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BC,DBF_UCHAR) {
+               prompt("Bit C")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BD,DBF_UCHAR) {
+               prompt("Bit D")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BE,DBF_UCHAR) {
+               prompt("Bit E")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BF,DBF_UCHAR) {
+               prompt("Bit F")
+               pp(TRUE)
+               interest(1)
+       }
+}
+recordtype(mbbo) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_ENUM) {
+               prompt("Desired Value")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_DBADDR)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_MBB)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(NOBT,DBF_SHORT) {
+               prompt("Number of Bits")
+               promptgroup(GUI_MBB)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(ZRVL,DBF_ULONG) {
+               prompt("Zero Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ONVL,DBF_ULONG) {
+               prompt("One Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TWVL,DBF_ULONG) {
+               prompt("Two Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(THVL,DBF_ULONG) {
+               prompt("Three Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FRVL,DBF_ULONG) {
+               prompt("Four Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FVVL,DBF_ULONG) {
+               prompt("Five Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(SXVL,DBF_ULONG) {
+               prompt("Six Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(SVVL,DBF_ULONG) {
+               prompt("Seven Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(EIVL,DBF_ULONG) {
+               prompt("Eight Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(NIVL,DBF_ULONG) {
+               prompt("Nine Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TEVL,DBF_ULONG) {
+               prompt("Ten Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ELVL,DBF_ULONG) {
+               prompt("Eleven Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TVVL,DBF_ULONG) {
+               prompt("Twelve Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TTVL,DBF_ULONG) {
+               prompt("Thirteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FTVL,DBF_ULONG) {
+               prompt("Fourteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FFVL,DBF_ULONG) {
+               prompt("Fifteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ZRST,DBF_STRING) {
+               prompt("Zero String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONST,DBF_STRING) {
+               prompt("One String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TWST,DBF_STRING) {
+               prompt("Two String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(THST,DBF_STRING) {
+               prompt("Three String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FRST,DBF_STRING) {
+               prompt("Four String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FVST,DBF_STRING) {
+               prompt("Five String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SXST,DBF_STRING) {
+               prompt("Six String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SVST,DBF_STRING) {
+               prompt("Seven String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EIST,DBF_STRING) {
+               prompt("Eight String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(NIST,DBF_STRING) {
+               prompt("Nine String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TEST,DBF_STRING) {
+               prompt("Ten String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ELST,DBF_STRING) {
+               prompt("Eleven String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TVST,DBF_STRING) {
+               prompt("Twelve String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TTST,DBF_STRING) {
+               prompt("Thirteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FTST,DBF_STRING) {
+               prompt("Fourteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FFST,DBF_STRING) {
+               prompt("Fifteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ZRSV,DBF_MENU) {
+               prompt("State Zero Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONSV,DBF_MENU) {
+               prompt("State One Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TWSV,DBF_MENU) {
+               prompt("State Two Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(THSV,DBF_MENU) {
+               prompt("State Three Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FRSV,DBF_MENU) {
+               prompt("State Four Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FVSV,DBF_MENU) {
+               prompt("State Five Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SXSV,DBF_MENU) {
+               prompt("State Six Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SVSV,DBF_MENU) {
+               prompt("State Seven Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EISV,DBF_MENU) {
+               prompt("State Eight Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(NISV,DBF_MENU) {
+               prompt("State Nine Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TESV,DBF_MENU) {
+               prompt("State Ten Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ELSV,DBF_MENU) {
+               prompt("State Eleven Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TVSV,DBF_MENU) {
+               prompt("State Twelve Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TTSV,DBF_MENU) {
+               prompt("State Thirteen Sevr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FTSV,DBF_MENU) {
+               prompt("State Fourteen Sevr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FFSV,DBF_MENU) {
+               prompt("State Fifteen Sevr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(UNSV,DBF_MENU) {
+               prompt("Unknown State Sevr")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(COSV,DBF_MENU) {
+               prompt("Change of State Sevr")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("Prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RBV,DBF_ULONG) {
+               prompt("Readback Value")
+               special(SPC_NOMOD)
+       }
+       field(ORBV,DBF_ULONG) {
+               prompt("Prev Readback Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(MLST,DBF_USHORT) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_USHORT) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SDEF,DBF_SHORT) {
+               prompt("States Defined")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SHFT,DBF_USHORT) {
+               prompt("Shift")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID outpt action")
+               promptgroup(GUI_MBB)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_USHORT) {
+               prompt("INVALID output value")
+               promptgroup(GUI_MBB)
+               interest(2)
+       }
+}
+recordtype(mbboDirect) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_USHORT) {
+               prompt("Word")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_MBB)
+               special(101)
+               menu(menuOmsl)
+               pp(TRUE)
+               interest(1)
+       }
+       field(NOBT,DBF_SHORT) {
+               prompt("Number of Bits")
+               promptgroup(GUI_MBB)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(B0,DBF_UCHAR) {
+               prompt("Bit 0")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B1,DBF_UCHAR) {
+               prompt("Bit 1")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B2,DBF_UCHAR) {
+               prompt("Bit 2")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B3,DBF_UCHAR) {
+               prompt("Bit 3")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B4,DBF_UCHAR) {
+               prompt("Bit 4")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B5,DBF_UCHAR) {
+               prompt("Bit 5")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B6,DBF_UCHAR) {
+               prompt("Bit 6")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B7,DBF_UCHAR) {
+               prompt("Bit 7")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B8,DBF_UCHAR) {
+               prompt("Bit 8")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B9,DBF_UCHAR) {
+               prompt("Bit 9")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BA,DBF_UCHAR) {
+               prompt("Bit 10")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BB,DBF_UCHAR) {
+               prompt("Bit 11")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BC,DBF_UCHAR) {
+               prompt("Bit 12")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BD,DBF_UCHAR) {
+               prompt("Bit 13")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BE,DBF_UCHAR) {
+               prompt("Bit 14")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BF,DBF_UCHAR) {
+               prompt("Bit 15")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               special(SPC_NOMOD)
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("Prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RBV,DBF_ULONG) {
+               prompt("Readback Value")
+               special(SPC_NOMOD)
+       }
+       field(ORBV,DBF_ULONG) {
+               prompt("Prev Readback Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(MLST,DBF_ULONG) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_ULONG) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SHFT,DBF_ULONG) {
+               prompt("Shift")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID outpt action")
+               promptgroup(GUI_MBB)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_USHORT) {
+               prompt("INVALID output value")
+               promptgroup(GUI_MBB)
+               interest(2)
+       }
+}
+recordtype(permissive) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LABL,DBF_STRING) {
+               prompt("Button Label")
+               promptgroup(GUI_DISPLAY)
+               size(20)
+               pp(TRUE)
+               interest(1)
+       }
+       field(VAL,DBF_USHORT) {
+               prompt("Status")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OVAL,DBF_USHORT) {
+               prompt("Old Status")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(WFLG,DBF_USHORT) {
+               prompt("Wait Flag")
+               pp(TRUE)
+       }
+       field(OFLG,DBF_USHORT) {
+               prompt("Old Flag")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(sel) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Result")
+               special(SPC_NOMOD)
+               asl(ASL0)
+       }
+       field(SELM,DBF_MENU) {
+               prompt("Select Mechanism")
+               promptgroup(GUI_INPUTS)
+               menu(selSELM)
+       }
+       field(SELN,DBF_USHORT) {
+               prompt("Index value")
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(NVL,DBF_INLINK) {
+               prompt("Index Value Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input A")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input B")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input C")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input D")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input E")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input F")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input G")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input H")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input I")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input J")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input K")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input L")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units Name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Rng")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(A,DBF_DOUBLE) {
+               prompt("Value of Input A")
+               pp(TRUE)
+       }
+       field(B,DBF_DOUBLE) {
+               prompt("Value of Input B")
+               pp(TRUE)
+       }
+       field(C,DBF_DOUBLE) {
+               prompt("Value of Input C")
+               pp(TRUE)
+       }
+       field(D,DBF_DOUBLE) {
+               prompt("Value of Input D")
+               pp(TRUE)
+       }
+       field(E,DBF_DOUBLE) {
+               prompt("Value of Input E")
+               pp(TRUE)
+       }
+       field(F,DBF_DOUBLE) {
+               prompt("Value of Input F")
+               pp(TRUE)
+       }
+       field(G,DBF_DOUBLE) {
+               prompt("Value of Input G")
+               pp(TRUE)
+       }
+       field(H,DBF_DOUBLE) {
+               prompt("Value of Input H")
+               pp(TRUE)
+       }
+       field(I,DBF_DOUBLE) {
+               prompt("Value of Input I")
+               pp(TRUE)
+       }
+       field(J,DBF_DOUBLE) {
+               prompt("Value of Input J")
+               pp(TRUE)
+       }
+       field(K,DBF_DOUBLE) {
+               prompt("Value of Input K")
+               pp(TRUE)
+       }
+       field(L,DBF_DOUBLE) {
+               prompt("Value of Input L")
+               pp(TRUE)
+       }
+       field(LA,DBF_DOUBLE) {
+               prompt("Prev Value of A")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LB,DBF_DOUBLE) {
+               prompt("Prev Value of B")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LC,DBF_DOUBLE) {
+               prompt("Prev Value of C")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LD,DBF_DOUBLE) {
+               prompt("Prev Value of D")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LE,DBF_DOUBLE) {
+               prompt("Prev Value of E")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LF,DBF_DOUBLE) {
+               prompt("Prev Value of F")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LG,DBF_DOUBLE) {
+               prompt("Prev Value of G")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LH,DBF_DOUBLE) {
+               prompt("Prev Value of H")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LI,DBF_DOUBLE) {
+               prompt("Prev Value of I")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LJ,DBF_DOUBLE) {
+               prompt("Prev Value of J")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LK,DBF_DOUBLE) {
+               prompt("Prev Value of K")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LL,DBF_DOUBLE) {
+               prompt("Prev Value of L")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(NLST,DBF_USHORT) {
+               prompt("Last Index Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(seq) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_LONG) {
+               prompt("Used to trigger")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(SELM,DBF_MENU) {
+               prompt("Select Mechanism")
+               promptgroup(GUI_INPUTS)
+               menu(seqSELM)
+               interest(1)
+       }
+       field(SELN,DBF_USHORT) {
+               prompt("Link Selection")
+               initial("1")
+               interest(1)
+       }
+       field(SELL,DBF_INLINK) {
+               prompt("Link Selection Loc")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(DLY1,DBF_DOUBLE) {
+               prompt("Delay 1")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DOL1,DBF_INLINK) {
+               prompt("Input link1")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DO1,DBF_DOUBLE) {
+               prompt("Constant input 1")
+               interest(1)
+       }
+       field(LNK1,DBF_OUTLINK) {
+               prompt("Output Link 1")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DLY2,DBF_DOUBLE) {
+               prompt("Delay 2")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DOL2,DBF_INLINK) {
+               prompt("Input link 2")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DO2,DBF_DOUBLE) {
+               prompt("Constant input 2")
+               interest(1)
+       }
+       field(LNK2,DBF_OUTLINK) {
+               prompt("Output Link 2")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DLY3,DBF_DOUBLE) {
+               prompt("Delay 3")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DOL3,DBF_INLINK) {
+               prompt("Input link 3")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DO3,DBF_DOUBLE) {
+               prompt("Constant input 3")
+               interest(1)
+       }
+       field(LNK3,DBF_OUTLINK) {
+               prompt("Output Link 3")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DLY4,DBF_DOUBLE) {
+               prompt("Delay 4")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DOL4,DBF_INLINK) {
+               prompt("Input link 4")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DO4,DBF_DOUBLE) {
+               prompt("Constant input 4")
+               interest(1)
+       }
+       field(LNK4,DBF_OUTLINK) {
+               prompt("Output Link 4")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DLY5,DBF_DOUBLE) {
+               prompt("Delay 5")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DOL5,DBF_INLINK) {
+               prompt("Input link 5")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DO5,DBF_DOUBLE) {
+               prompt("Constant input 5")
+               interest(1)
+       }
+       field(LNK5,DBF_OUTLINK) {
+               prompt("Output Link 5")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DLY6,DBF_DOUBLE) {
+               prompt("Delay 6")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DOL6,DBF_INLINK) {
+               prompt("Input link 6")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DO6,DBF_DOUBLE) {
+               prompt("Constant input 6")
+               interest(1)
+       }
+       field(LNK6,DBF_OUTLINK) {
+               prompt("Output Link 6")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DLY7,DBF_DOUBLE) {
+               prompt("Delay 7")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DOL7,DBF_INLINK) {
+               prompt("Input link 7")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DO7,DBF_DOUBLE) {
+               prompt("Constant input 7")
+               interest(1)
+       }
+       field(LNK7,DBF_OUTLINK) {
+               prompt("Output Link 7")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DLY8,DBF_DOUBLE) {
+               prompt("Delay 8")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DOL8,DBF_INLINK) {
+               prompt("Input link 8")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DO8,DBF_DOUBLE) {
+               prompt("Constant input 8")
+               interest(1)
+       }
+       field(LNK8,DBF_OUTLINK) {
+               prompt("Output Link 8")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DLY9,DBF_DOUBLE) {
+               prompt("Delay 9")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DOL9,DBF_INLINK) {
+               prompt("Input link 9")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DO9,DBF_DOUBLE) {
+               prompt("Constant input 9")
+               interest(1)
+       }
+       field(LNK9,DBF_OUTLINK) {
+               prompt("Output Link 9")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DLYA,DBF_DOUBLE) {
+               prompt("Delay 10")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DOLA,DBF_INLINK) {
+               prompt("Input link 10")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DOA,DBF_DOUBLE) {
+               prompt("Constant input 10")
+               interest(1)
+       }
+       field(LNKA,DBF_OUTLINK) {
+               prompt("Output Link 10")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+}
+recordtype(state) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_STRING) {
+               prompt("Value")
+               promptgroup(GUI_DISPLAY)
+               size(20)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OVAL,DBF_STRING) {
+               prompt("Prev Value")
+               special(SPC_NOMOD)
+               size(20)
+               interest(3)
+       }
+}
+recordtype(stringin) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_STRING) {
+               prompt("Current Value")
+               promptgroup(GUI_INPUTS)
+               size(40)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OVAL,DBF_STRING) {
+               prompt("Previous Value")
+               special(SPC_NOMOD)
+               size(40)
+               interest(3)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(MPST,DBF_MENU) {
+               prompt("Post Value Monitors")
+               promptgroup(GUI_DISPLAY)
+               menu(stringinPOST)
+               interest(1)
+       }
+       field(APST,DBF_MENU) {
+               prompt("Post Archive Monitors")
+               promptgroup(GUI_DISPLAY)
+               menu(stringinPOST)
+               interest(1)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SVAL,DBF_STRING) {
+               prompt("Simulation Value")
+               size(40)
+               pp(TRUE)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(stringout) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_STRING) {
+               prompt("Current Value")
+               promptgroup(GUI_OUTPUT)
+               size(40)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OVAL,DBF_STRING) {
+               prompt("Previous Value")
+               special(SPC_NOMOD)
+               size(40)
+               interest(3)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_OUTPUT)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(MPST,DBF_MENU) {
+               prompt("Post Value Monitors")
+               promptgroup(GUI_DISPLAY)
+               menu(stringoutPOST)
+               interest(1)
+       }
+       field(APST,DBF_MENU) {
+               prompt("Post Archive Monitors")
+               promptgroup(GUI_DISPLAY)
+               menu(stringoutPOST)
+               interest(1)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID output action")
+               promptgroup(GUI_OUTPUT)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_STRING) {
+               prompt("INVALID output value")
+               promptgroup(GUI_OUTPUT)
+               size(40)
+               interest(2)
+       }
+}
+recordtype(sub) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Result")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(INAM,DBF_STRING) {
+               prompt("Init Routine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(SNAM,DBF_STRING) {
+               prompt("Subroutine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(SADR,DBF_NOACCESS) {
+               prompt("Subroutine Address")
+               special(SPC_NOMOD)
+               extra("void *           sadr")
+               interest(4)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input A")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input B")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input C")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input D")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input E")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input F")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input G")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input H")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input I")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input J")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input K")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input L")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units Name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Rng")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(BRSV,DBF_MENU) {
+               prompt("Bad Return Severity")
+               promptgroup(GUI_SUB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(A,DBF_DOUBLE) {
+               prompt("Value of Input A")
+               pp(TRUE)
+       }
+       field(B,DBF_DOUBLE) {
+               prompt("Value of Input B")
+               pp(TRUE)
+       }
+       field(C,DBF_DOUBLE) {
+               prompt("Value of Input C")
+               pp(TRUE)
+       }
+       field(D,DBF_DOUBLE) {
+               prompt("Value of Input D")
+               pp(TRUE)
+       }
+       field(E,DBF_DOUBLE) {
+               prompt("Value of Input E")
+               pp(TRUE)
+       }
+       field(F,DBF_DOUBLE) {
+               prompt("Value of Input F")
+               pp(TRUE)
+       }
+       field(G,DBF_DOUBLE) {
+               prompt("Value of Input G")
+               pp(TRUE)
+       }
+       field(H,DBF_DOUBLE) {
+               prompt("Value of Input H")
+               pp(TRUE)
+       }
+       field(I,DBF_DOUBLE) {
+               prompt("Value of Input I")
+               pp(TRUE)
+       }
+       field(J,DBF_DOUBLE) {
+               prompt("Value of Input J")
+               pp(TRUE)
+       }
+       field(K,DBF_DOUBLE) {
+               prompt("Value of Input K")
+               pp(TRUE)
+       }
+       field(L,DBF_DOUBLE) {
+               prompt("Value of Input L")
+               pp(TRUE)
+       }
+       field(LA,DBF_DOUBLE) {
+               prompt("Prev Value of A")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LB,DBF_DOUBLE) {
+               prompt("Prev Value of B")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LC,DBF_DOUBLE) {
+               prompt("Prev Value of C")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LD,DBF_DOUBLE) {
+               prompt("Prev Value of D")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LE,DBF_DOUBLE) {
+               prompt("Prev Value of E")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LF,DBF_DOUBLE) {
+               prompt("Prev Value of F")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LG,DBF_DOUBLE) {
+               prompt("Prev Value of G")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LH,DBF_DOUBLE) {
+               prompt("Prev Value of H")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LI,DBF_DOUBLE) {
+               prompt("Prev Value of I")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LJ,DBF_DOUBLE) {
+               prompt("Prev Value of J")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LK,DBF_DOUBLE) {
+               prompt("Prev Value of K")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LL,DBF_DOUBLE) {
+               prompt("Prev Value of L")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(subArray) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_NOACCESS) {
+               prompt("Value")
+               special(SPC_DBADDR)
+               extra("void *           val")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_COMMON)
+               interest(1)
+       }
+       field(FTVL,DBF_MENU) {
+               prompt("Field Type of Value")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_BITS1)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units Name")
+               promptgroup(GUI_BITS2)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_CLOCK)
+               interest(1)
+       }
+       field(MALM,DBF_ULONG) {
+               prompt("Maximum Elements  ")
+               initial("1")
+               promptgroup(GUI_CLOCK)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NELM,DBF_ULONG) {
+               prompt("Number of Elements")
+               initial("1")
+               promptgroup(GUI_COMPRESS)
+               pp(TRUE)
+       }
+       field(INDX,DBF_ULONG) {
+               prompt("Substring Index")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+       }
+       field(BUSY,DBF_SHORT) {
+               prompt("Busy Indicator")
+               special(SPC_NOMOD)
+       }
+       field(NORD,DBF_LONG) {
+               prompt("Number elements read")
+               special(SPC_NOMOD)
+       }
+       field(BPTR,DBF_NOACCESS) {
+               prompt("Buffer Pointer")
+               special(SPC_NOMOD)
+               extra("void *           bptr")
+               interest(4)
+       }
+}
+recordtype(waveform) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_NOACCESS) {
+               prompt("Value")
+               special(SPC_DBADDR)
+               extra("void *           val")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(RARM,DBF_SHORT) {
+               prompt("Rearm the waveform")
+               promptgroup(GUI_WAVE)
+               pp(TRUE)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units Name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(NELM,DBF_ULONG) {
+               prompt("Number of Elements")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(FTVL,DBF_MENU) {
+               prompt("Field Type of Value")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(BUSY,DBF_SHORT) {
+               prompt("Busy Indicator")
+               special(SPC_NOMOD)
+       }
+       field(NORD,DBF_ULONG) {
+               prompt("Number elements read")
+               special(SPC_NOMOD)
+       }
+       field(BPTR,DBF_NOACCESS) {
+               prompt("Buffer Pointer")
+               special(SPC_NOMOD)
+               extra("void *           bptr")
+               interest(4)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(xxx) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Current EGU Value")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_FLOAT) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_FLOAT) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_FLOAT) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_FLOAT) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_FLOAT) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_FLOAT) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(genSub) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VERS,DBF_DOUBLE) {
+               prompt("Version Number")
+               promptgroup(GUI_DISPLAY)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(VAL,DBF_LONG) {
+               prompt("Subr. return value")
+               asl(ASL0)
+       }
+       field(OVAL,DBF_LONG) {
+               prompt("Old return value")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(SADR,DBF_LONG) {
+               prompt("Subroutine Address")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OSAD,DBF_LONG) {
+               prompt("Old Subr. Address")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(LFLG,DBF_MENU) {
+               prompt("Link Flag")
+               promptgroup(GUI_OUTPUT)
+               menu(genSubLFLG)
+               interest(1)
+       }
+       field(EFLG,DBF_MENU) {
+               prompt("Event Flag")
+               promptgroup(GUI_OUTPUT)
+               menu(genSubEFLG)
+               interest(1)
+       }
+       field(SUBL,DBF_INLINK) {
+               prompt("Subroutine Input Link")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INAM,DBF_STRING) {
+               prompt("Init Routine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(SNAM,DBF_STRING) {
+               prompt("Process Subr. Name")
+               promptgroup(GUI_SUB)
+               special(100)
+               size(40)
+               interest(1)
+       }
+       field(ONAM,DBF_STRING) {
+               prompt("Old Subroutine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(BRSV,DBF_MENU) {
+               prompt("Bad Return Severity")
+               promptgroup(GUI_SUB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input Link A")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input Link B")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input Link C")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input Link D")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input Link E")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input Link F")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input Link G")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input Link H")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input Link I")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input Link J")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input Link K")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input Link L")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPM,DBF_INLINK) {
+               prompt("Input Link M")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPN,DBF_INLINK) {
+               prompt("Input Link N")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPO,DBF_INLINK) {
+               prompt("Input Link O")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPP,DBF_INLINK) {
+               prompt("Input Link P")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPQ,DBF_INLINK) {
+               prompt("Input Link Q")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPR,DBF_INLINK) {
+               prompt("Input Link R")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPS,DBF_INLINK) {
+               prompt("Input Link S")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPT,DBF_INLINK) {
+               prompt("Input Link T")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPU,DBF_INLINK) {
+               prompt("Input Link U")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(UFA,DBF_STRING) {
+               prompt("Input Structure A")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFB,DBF_STRING) {
+               prompt("Input Structure B")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFC,DBF_STRING) {
+               prompt("Input Structure C")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFD,DBF_STRING) {
+               prompt("Input Structure D")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFE,DBF_STRING) {
+               prompt("Input Structure E")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFF,DBF_STRING) {
+               prompt("Input Structure F")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFG,DBF_STRING) {
+               prompt("Input Structure G")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFH,DBF_STRING) {
+               prompt("Input Structure H")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFI,DBF_STRING) {
+               prompt("Input Structure I")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFJ,DBF_STRING) {
+               prompt("Input Structure J")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFK,DBF_STRING) {
+               prompt("Input Structure K")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFL,DBF_STRING) {
+               prompt("Input Structure L")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFM,DBF_STRING) {
+               prompt("Input Structure M")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFN,DBF_STRING) {
+               prompt("Input Structure N")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFO,DBF_STRING) {
+               prompt("Input Structure O")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFP,DBF_STRING) {
+               prompt("Input Structure P")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFQ,DBF_STRING) {
+               prompt("Input Structure Q")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFR,DBF_STRING) {
+               prompt("Input Structure R")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFS,DBF_STRING) {
+               prompt("Input Structure S")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFT,DBF_STRING) {
+               prompt("Input Structure T")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFU,DBF_STRING) {
+               prompt("Input Structure U")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(A,DBF_NOACCESS) {
+               prompt("Value of Input A")
+               special(SPC_DBADDR)
+               extra("void *a")
+               interest(1)
+               asl(ASL0)
+       }
+       field(B,DBF_NOACCESS) {
+               prompt("Value of Input B")
+               special(SPC_DBADDR)
+               extra("void *b")
+               interest(1)
+               asl(ASL0)
+       }
+       field(C,DBF_NOACCESS) {
+               prompt("Value of Input C")
+               special(SPC_DBADDR)
+               extra("void *c")
+               interest(1)
+               asl(ASL0)
+       }
+       field(D,DBF_NOACCESS) {
+               prompt("Value of Input D")
+               special(SPC_DBADDR)
+               extra("void *d")
+               interest(1)
+               asl(ASL0)
+       }
+       field(E,DBF_NOACCESS) {
+               prompt("Value of Input E")
+               special(SPC_DBADDR)
+               extra("void *e")
+               interest(1)
+               asl(ASL0)
+       }
+       field(F,DBF_NOACCESS) {
+               prompt("Value of Input F")
+               special(SPC_DBADDR)
+               extra("void *f")
+               interest(1)
+               asl(ASL0)
+       }
+       field(G,DBF_NOACCESS) {
+               prompt("Value of Input G")
+               special(SPC_DBADDR)
+               extra("void *g")
+               interest(1)
+               asl(ASL0)
+       }
+       field(H,DBF_NOACCESS) {
+               prompt("Value of Input H")
+               special(SPC_DBADDR)
+               extra("void *h")
+               interest(1)
+               asl(ASL0)
+       }
+       field(I,DBF_NOACCESS) {
+               prompt("Value of Input I")
+               special(SPC_DBADDR)
+               extra("void *i")
+               interest(1)
+               asl(ASL0)
+       }
+       field(J,DBF_NOACCESS) {
+               prompt("Value of Input J")
+               special(SPC_DBADDR)
+               extra("void *j")
+               pp(TRUE)
+               interest(1)
+               asl(ASL0)
+       }
+       field(K,DBF_NOACCESS) {
+               prompt("Value of Input K")
+               special(SPC_DBADDR)
+               extra("void *k")
+               interest(1)
+               asl(ASL0)
+       }
+       field(L,DBF_NOACCESS) {
+               prompt("Value of Input L")
+               special(SPC_DBADDR)
+               extra("void *l")
+               interest(1)
+               asl(ASL0)
+       }
+       field(M,DBF_NOACCESS) {
+               prompt("Value of Input M")
+               special(SPC_DBADDR)
+               extra("void *m")
+               interest(1)
+               asl(ASL0)
+       }
+       field(N,DBF_NOACCESS) {
+               prompt("Value of Input N")
+               special(SPC_DBADDR)
+               extra("void *n")
+               interest(1)
+               asl(ASL0)
+       }
+       field(O,DBF_NOACCESS) {
+               prompt("Value of Input O")
+               special(SPC_DBADDR)
+               extra("void *o")
+               interest(1)
+               asl(ASL0)
+       }
+       field(P,DBF_NOACCESS) {
+               prompt("Value of Input P")
+               special(SPC_DBADDR)
+               extra("void *p")
+               interest(1)
+               asl(ASL0)
+       }
+       field(Q,DBF_NOACCESS) {
+               prompt("Value of Input Q")
+               special(SPC_DBADDR)
+               extra("void *q")
+               interest(1)
+               asl(ASL0)
+       }
+       field(R,DBF_NOACCESS) {
+               prompt("Value of Input R")
+               special(SPC_DBADDR)
+               extra("void *r")
+               interest(1)
+               asl(ASL0)
+       }
+       field(S,DBF_NOACCESS) {
+               prompt("Value of Input S")
+               special(SPC_DBADDR)
+               extra("void *s")
+               interest(1)
+               asl(ASL0)
+       }
+       field(T,DBF_NOACCESS) {
+               prompt("Value of Input T")
+               special(SPC_DBADDR)
+               extra("void *t")
+               interest(1)
+               asl(ASL0)
+       }
+       field(U,DBF_NOACCESS) {
+               prompt("Value of Input U")
+               special(SPC_DBADDR)
+               extra("void *u")
+               interest(1)
+               asl(ASL0)
+       }
+       field(FTA,DBF_MENU) {
+               prompt("Type of A")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTB,DBF_MENU) {
+               prompt("Type of B")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTC,DBF_MENU) {
+               prompt("Type of C")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTD,DBF_MENU) {
+               prompt("Type of D")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTE,DBF_MENU) {
+               prompt("Type of E")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTF,DBF_MENU) {
+               prompt("Type of F")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTG,DBF_MENU) {
+               prompt("Type of G")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTH,DBF_MENU) {
+               prompt("Type of H")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTI,DBF_MENU) {
+               prompt("Type of I")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTJ,DBF_MENU) {
+               prompt("Type of J")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTK,DBF_MENU) {
+               prompt("Type of K")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTL,DBF_MENU) {
+               prompt("Type of L")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTM,DBF_MENU) {
+               prompt("Type of M")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTN,DBF_MENU) {
+               prompt("Type of N")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTO,DBF_MENU) {
+               prompt("Type of O")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTP,DBF_MENU) {
+               prompt("Type of P")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTQ,DBF_MENU) {
+               prompt("Type of Q")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTR,DBF_MENU) {
+               prompt("Type of R")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTS,DBF_MENU) {
+               prompt("Type of S")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTT,DBF_MENU) {
+               prompt("Type of T")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTU,DBF_MENU) {
+               prompt("Type of U")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(NOA,DBF_ULONG) {
+               prompt("No. in A")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOB,DBF_ULONG) {
+               prompt("No. in B")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOC,DBF_ULONG) {
+               prompt("No. in C")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOD,DBF_ULONG) {
+               prompt("No. in D")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOE,DBF_ULONG) {
+               prompt("No. in E")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOF,DBF_ULONG) {
+               prompt("No. in F")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOG,DBF_ULONG) {
+               prompt("No. in G")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOH,DBF_ULONG) {
+               prompt("No. in H")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOI,DBF_ULONG) {
+               prompt("No. in I")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOJ,DBF_ULONG) {
+               prompt("No. in J")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOK,DBF_ULONG) {
+               prompt("No. in K")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOL,DBF_ULONG) {
+               prompt("No. in L")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOM,DBF_ULONG) {
+               prompt("No. in M")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NON,DBF_ULONG) {
+               prompt("No. in N")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOO,DBF_ULONG) {
+               prompt("No. in O")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOP,DBF_ULONG) {
+               prompt("No. in P")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOQ,DBF_ULONG) {
+               prompt("No. in Q")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOR,DBF_ULONG) {
+               prompt("No. in R")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOS,DBF_ULONG) {
+               prompt("No. in S")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOT,DBF_ULONG) {
+               prompt("No. in T")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOU,DBF_ULONG) {
+               prompt("No. in U")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTA,DBF_OUTLINK) {
+               prompt("Output Link A")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTB,DBF_OUTLINK) {
+               prompt("Output Link B")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTC,DBF_OUTLINK) {
+               prompt("Output Link C")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTD,DBF_OUTLINK) {
+               prompt("Output Link D")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTE,DBF_OUTLINK) {
+               prompt("Output Link E")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTF,DBF_OUTLINK) {
+               prompt("Output Link F")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTG,DBF_OUTLINK) {
+               prompt("Output Link G")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTH,DBF_OUTLINK) {
+               prompt("Output Link H")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTI,DBF_OUTLINK) {
+               prompt("Output Link I")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTJ,DBF_OUTLINK) {
+               prompt("Output Link J")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTK,DBF_OUTLINK) {
+               prompt("Output Link K")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTL,DBF_OUTLINK) {
+               prompt("Output Link L")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTM,DBF_OUTLINK) {
+               prompt("Output Link M")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTN,DBF_OUTLINK) {
+               prompt("Output Link N")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTO,DBF_OUTLINK) {
+               prompt("Output Link O")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTP,DBF_OUTLINK) {
+               prompt("Output Link P")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTQ,DBF_OUTLINK) {
+               prompt("Output Link Q")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTR,DBF_OUTLINK) {
+               prompt("Output Link R")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTS,DBF_OUTLINK) {
+               prompt("Output Link S")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTT,DBF_OUTLINK) {
+               prompt("Output Link T")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTU,DBF_OUTLINK) {
+               prompt("Output Link U")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(UFVA,DBF_STRING) {
+               prompt("Output Structure A")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVB,DBF_STRING) {
+               prompt("Output Structure B")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVC,DBF_STRING) {
+               prompt("Output Structure C")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVD,DBF_STRING) {
+               prompt("Output Structure D")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVE,DBF_STRING) {
+               prompt("Output Structure E")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVF,DBF_STRING) {
+               prompt("Output Structure F")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVG,DBF_STRING) {
+               prompt("Output Structure G")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVH,DBF_STRING) {
+               prompt("Output Structure H")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVI,DBF_STRING) {
+               prompt("Output Structure I")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVJ,DBF_STRING) {
+               prompt("Output Structure J")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVK,DBF_STRING) {
+               prompt("Output Structure K")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVL,DBF_STRING) {
+               prompt("Output Structure L")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVM,DBF_STRING) {
+               prompt("Output Structure M")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVN,DBF_STRING) {
+               prompt("Output Structure N")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVO,DBF_STRING) {
+               prompt("Output Structure O")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVP,DBF_STRING) {
+               prompt("Output Structure P")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVQ,DBF_STRING) {
+               prompt("Output Structure Q")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVR,DBF_STRING) {
+               prompt("Output Structure R")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVS,DBF_STRING) {
+               prompt("Output Structure S")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVT,DBF_STRING) {
+               prompt("Output Structure T")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVU,DBF_STRING) {
+               prompt("Output Structure U")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(VALA,DBF_NOACCESS) {
+               prompt("Value of Output A")
+               special(SPC_DBADDR)
+               extra("void *vala")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALB,DBF_NOACCESS) {
+               prompt("Value of Output B")
+               special(SPC_DBADDR)
+               extra("void *valb")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALC,DBF_NOACCESS) {
+               prompt("Value of Output C")
+               special(SPC_DBADDR)
+               extra("void *valc")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALD,DBF_NOACCESS) {
+               prompt("Value of Output D")
+               special(SPC_DBADDR)
+               extra("void *vald")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALE,DBF_NOACCESS) {
+               prompt("Value of Output E")
+               special(SPC_DBADDR)
+               extra("void *vale")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALF,DBF_NOACCESS) {
+               prompt("Value of Output F")
+               special(SPC_DBADDR)
+               extra("void *valf")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALG,DBF_NOACCESS) {
+               prompt("Value of Output G")
+               special(SPC_DBADDR)
+               extra("void *valg")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALH,DBF_NOACCESS) {
+               prompt("Value of Output H")
+               special(SPC_DBADDR)
+               extra("void *valh")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALI,DBF_NOACCESS) {
+               prompt("Value of Output I")
+               special(SPC_DBADDR)
+               extra("void *vali")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALJ,DBF_NOACCESS) {
+               prompt("Value of Output J")
+               special(SPC_DBADDR)
+               extra("void *valj")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALK,DBF_NOACCESS) {
+               prompt("Value of Output K")
+               special(SPC_DBADDR)
+               extra("void *valk")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALL,DBF_NOACCESS) {
+               prompt("Value of Output L")
+               special(SPC_DBADDR)
+               extra("void *vall")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALM,DBF_NOACCESS) {
+               prompt("Value of Output M")
+               special(SPC_DBADDR)
+               extra("void *valm")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALN,DBF_NOACCESS) {
+               prompt("Value of Output N")
+               special(SPC_DBADDR)
+               extra("void *valn")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALO,DBF_NOACCESS) {
+               prompt("Value of Output O")
+               special(SPC_DBADDR)
+               extra("void *valo")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALP,DBF_NOACCESS) {
+               prompt("Value of Output P")
+               special(SPC_DBADDR)
+               extra("void *valp")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALQ,DBF_NOACCESS) {
+               prompt("Value of Output Q")
+               special(SPC_DBADDR)
+               extra("void *valq")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALR,DBF_NOACCESS) {
+               prompt("Value of Output R")
+               special(SPC_DBADDR)
+               extra("void *valr")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALS,DBF_NOACCESS) {
+               prompt("Value of Output S")
+               special(SPC_DBADDR)
+               extra("void *vals")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALT,DBF_NOACCESS) {
+               prompt("Value of Output T")
+               special(SPC_DBADDR)
+               extra("void *valt")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALU,DBF_NOACCESS) {
+               prompt("Value of Output U")
+               special(SPC_DBADDR)
+               extra("void *valu")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLA,DBF_NOACCESS) {
+               prompt("Old Output A")
+               special(SPC_NOMOD)
+               extra("void *ovla")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLB,DBF_NOACCESS) {
+               prompt("Old Output B")
+               special(SPC_NOMOD)
+               extra("void *ovlb")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLC,DBF_NOACCESS) {
+               prompt("Old Output C")
+               special(SPC_NOMOD)
+               extra("void *ovlc")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLD,DBF_NOACCESS) {
+               prompt("Old Output D")
+               special(SPC_NOMOD)
+               extra("void *ovld")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLE,DBF_NOACCESS) {
+               prompt("Old Output E")
+               special(SPC_NOMOD)
+               extra("void *ovle")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLF,DBF_NOACCESS) {
+               prompt("Old Output F")
+               special(SPC_NOMOD)
+               extra("void *ovlf")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLG,DBF_NOACCESS) {
+               prompt("Old Output G")
+               special(SPC_NOMOD)
+               extra("void *ovlg")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLH,DBF_NOACCESS) {
+               prompt("Old Output H")
+               special(SPC_NOMOD)
+               extra("void *ovlh")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLI,DBF_NOACCESS) {
+               prompt("Old Output I")
+               special(SPC_NOMOD)
+               extra("void *ovli")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLJ,DBF_NOACCESS) {
+               prompt("Old Output J")
+               special(SPC_NOMOD)
+               extra("void *ovlj")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLK,DBF_NOACCESS) {
+               prompt("Old Output K")
+               special(SPC_NOMOD)
+               extra("void *ovlk")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLL,DBF_NOACCESS) {
+               prompt("Old Output L")
+               special(SPC_NOMOD)
+               extra("void *ovll")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLM,DBF_NOACCESS) {
+               prompt("Old Output M")
+               special(SPC_NOMOD)
+               extra("void *ovlm")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLN,DBF_NOACCESS) {
+               prompt("Old Output N")
+               special(SPC_NOMOD)
+               extra("void *ovln")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLO,DBF_NOACCESS) {
+               prompt("Old Output O")
+               special(SPC_NOMOD)
+               extra("void *ovlo")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLP,DBF_NOACCESS) {
+               prompt("Old Output P")
+               special(SPC_NOMOD)
+               extra("void *ovlp")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLQ,DBF_NOACCESS) {
+               prompt("Old Output Q")
+               special(SPC_NOMOD)
+               extra("void *ovlq")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLR,DBF_NOACCESS) {
+               prompt("Old Output R")
+               special(SPC_NOMOD)
+               extra("void *ovlr")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLS,DBF_NOACCESS) {
+               prompt("Old Output S")
+               special(SPC_NOMOD)
+               extra("void *ovls")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLT,DBF_NOACCESS) {
+               prompt("Old Output T")
+               special(SPC_NOMOD)
+               extra("void *ovlt")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLU,DBF_NOACCESS) {
+               prompt("Old Output U")
+               special(SPC_NOMOD)
+               extra("void *ovlu")
+               interest(1)
+               asl(ASL0)
+       }
+       field(FTVA,DBF_MENU) {
+               prompt("Type of VALA")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVB,DBF_MENU) {
+               prompt("Type of VALB")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVC,DBF_MENU) {
+               prompt("Type of VALC")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVD,DBF_MENU) {
+               prompt("Type of VALD")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVE,DBF_MENU) {
+               prompt("Type of VALE")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVF,DBF_MENU) {
+               prompt("Type of VALF")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVG,DBF_MENU) {
+               prompt("Type of VALG")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVH,DBF_MENU) {
+               prompt("Type of VALH")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVI,DBF_MENU) {
+               prompt("Type of VALI")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVJ,DBF_MENU) {
+               prompt("Type of VALJ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVK,DBF_MENU) {
+               prompt("Type of VALK")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVL,DBF_MENU) {
+               prompt("Type of VALL")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVM,DBF_MENU) {
+               prompt("Type of VALM")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVN,DBF_MENU) {
+               prompt("Type of VALN")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVO,DBF_MENU) {
+               prompt("Type of VALO")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVP,DBF_MENU) {
+               prompt("Type of VALP")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVQ,DBF_MENU) {
+               prompt("Type of VALQ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVR,DBF_MENU) {
+               prompt("Type of VALR")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVS,DBF_MENU) {
+               prompt("Type of VALS")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVT,DBF_MENU) {
+               prompt("Type of VALT")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVU,DBF_MENU) {
+               prompt("Type of VALU")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(NOVA,DBF_ULONG) {
+               prompt("No. in VALA")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVB,DBF_ULONG) {
+               prompt("No. in VALB")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVC,DBF_ULONG) {
+               prompt("No. in VALC")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVD,DBF_ULONG) {
+               prompt("No. in VALD")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVE,DBF_ULONG) {
+               prompt("No. in VALE")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVF,DBF_ULONG) {
+               prompt("No. in VALF")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVG,DBF_ULONG) {
+               prompt("No. in VALG")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVH,DBF_ULONG) {
+               prompt("No. in VAlH")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVI,DBF_ULONG) {
+               prompt("No. in VALI")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVJ,DBF_ULONG) {
+               prompt("No. in VALJ")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVK,DBF_ULONG) {
+               prompt("No. in VALK")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVL,DBF_ULONG) {
+               prompt("No. in VALL")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVM,DBF_ULONG) {
+               prompt("No. in VALM")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVN,DBF_ULONG) {
+               prompt("No. in VALN")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVO,DBF_ULONG) {
+               prompt("No. in VALO")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVP,DBF_ULONG) {
+               prompt("No. in VALP")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVQ,DBF_ULONG) {
+               prompt("No. in VALQ")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVR,DBF_ULONG) {
+               prompt("No. in VALR")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVS,DBF_ULONG) {
+               prompt("No. in VALS")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVT,DBF_ULONG) {
+               prompt("No. in VALT")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVU,DBF_ULONG) {
+               prompt("No. in VALU")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVA,DBF_ULONG) {
+               prompt("Total bytes for VALA")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVB,DBF_ULONG) {
+               prompt("Total bytes for VALB")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVC,DBF_ULONG) {
+               prompt("Total bytes for VALC")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVD,DBF_ULONG) {
+               prompt("Total bytes for VALD")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVE,DBF_ULONG) {
+               prompt("Total bytes for VALE")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVF,DBF_ULONG) {
+               prompt("Total bytes for VALF")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVG,DBF_ULONG) {
+               prompt("Total bytes for VALG")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVH,DBF_ULONG) {
+               prompt("Total bytes for VAlH")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVI,DBF_ULONG) {
+               prompt("Total bytes for VALI")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVJ,DBF_ULONG) {
+               prompt("Total bytes for VALJ")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVK,DBF_ULONG) {
+               prompt("Total bytes for VALK")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVL,DBF_ULONG) {
+               prompt("Total bytes for VALL")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVM,DBF_ULONG) {
+               prompt("Total bytes for VALM")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVN,DBF_ULONG) {
+               prompt("Total bytes for VALN")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVO,DBF_ULONG) {
+               prompt("Total bytes for VALO")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVP,DBF_ULONG) {
+               prompt("Total bytes for VALP")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVQ,DBF_ULONG) {
+               prompt("Total bytes for VALQ")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVR,DBF_ULONG) {
+               prompt("Total bytes for VALR")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVS,DBF_ULONG) {
+               prompt("Total bytes for VALS")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVT,DBF_ULONG) {
+               prompt("Total bytes for VALT")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVU,DBF_ULONG) {
+               prompt("Total bytes for VALU")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+}
+device(ai,CONSTANT,devAiSoft,"Soft Channel")
+device(ai,CONSTANT,devAiSoftRaw,"Raw Soft Channel")
+device(ao,CONSTANT,devAoSoft,"Soft Channel")
+device(ao,CONSTANT,devAoSoftRaw,"Raw Soft Channel")
+device(ao,CONSTANT,devAoSoftCallback,"Async Soft Channel")
+device(bi,CONSTANT,devBiSoft,"Soft Channel")
+device(bi,CONSTANT,devBiSoftRaw,"Raw Soft Channel")
+device(bo,CONSTANT,devBoSoft,"Soft Channel")
+device(bo,CONSTANT,devBoSoftRaw,"Raw Soft Channel")
+device(bo,CONSTANT,devBoSoftCallback,"Async Soft Channel")
+device(calcout,CONSTANT,devCalcoutSoft,"Soft Channel")
+device(calcout,CONSTANT,devCalcoutSoftCallback,"Async Soft Channel")
+device(event,CONSTANT,devEventSoft,"Soft Channel")
+device(longin,CONSTANT,devLiSoft,"Soft Channel")
+device(longout,CONSTANT,devLoSoft,"Soft Channel")
+device(longout,CONSTANT,devLoSoftCallback,"Async Soft Channel")
+device(mbbi,CONSTANT,devMbbiSoft,"Soft Channel")
+device(mbbi,CONSTANT,devMbbiSoftRaw,"Raw Soft Channel")
+device(mbbiDirect,CONSTANT,devMbbiDirectSoft,"Soft Channel")
+device(mbbiDirect,CONSTANT,devMbbiDirectSoftRaw,"Raw Soft Channel")
+device(mbbo,CONSTANT,devMbboSoft,"Soft Channel")
+device(mbbo,CONSTANT,devMbboSoftRaw,"Raw Soft Channel")
+device(mbbo,CONSTANT,devMbboSoftCallback,"Async Soft Channel")
+device(mbboDirect,CONSTANT,devMbboDirectSoft,"Soft Channel")
+device(mbboDirect,CONSTANT,devMbboDirectSoftRaw,"Raw Soft Channel")
+device(mbboDirect,CONSTANT,devMbboDirectSoftCallback,"Async Soft Channel")
+device(stringin,CONSTANT,devSiSoft,"Soft Channel")
+device(stringin,INST_IO,devTimestampSI,"Soft Timestamp")
+device(stringout,CONSTANT,devSoSoft,"Soft Channel")
+device(stringout,CONSTANT,devSoSoftCallback,"Async Soft Channel")
+device(subArray,CONSTANT,devSASoft,"Soft Channel")
+device(waveform,CONSTANT,devWfSoft,"Soft Channel")
+device(xxx,CONSTANT,devXxxSoft,"SoftChannel")
+registrar(asSub)
+function(evtbuild_init)
+function(evtbuild_proc)
+function(genRunId_init)
+function(genRunId_proc)
+function(writeRunId_init)
+function(writeRunId_proc)
+variable(asCaDebug,int)
+variable(dbRecordsOnceOnly,int)
+variable(evtbuildDebug,int)
+variable(genrunidDebug,int)
+variable(writerunidDebug,int)
diff --git a/ebctrl/ioc/dbd/genSubRecord.dbd b/ebctrl/ioc/dbd/genSubRecord.dbd
new file mode 100644 (file)
index 0000000..909bd69
--- /dev/null
@@ -0,0 +1,1875 @@
+menu(genSubLFLG) {
+       choice(genSubLFLG_IGNORE,"IGNORE")
+       choice(genSubLFLG_READ,"READ")
+}
+
+menu(genSubEFLG) {
+       choice(genSubEFLG_NEVER,"NEVER")
+       choice(genSubEFLG_ON_CHANGE,"ON CHANGE")
+       choice(genSubEFLG_ALWAYS,"ALWAYS")
+}
+recordtype(genSub) {
+       include "dbCommon.dbd" 
+        field(VERS,DBF_DOUBLE) {
+                prompt("Version Number")
+                promptgroup(GUI_DISPLAY)
+                special(SPC_NOMOD)
+                interest(1)
+        }
+       field(VAL,DBF_LONG) {
+               prompt("Subr. return value")
+               asl(ASL0)
+       }
+       field(OVAL,DBF_LONG) {
+               prompt("Old return value")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(SADR,DBF_LONG) {
+               prompt("Subroutine Address")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OSAD,DBF_LONG) {
+               prompt("Old Subr. Address")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(LFLG,DBF_MENU) {
+               prompt("Link Flag")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+               menu(genSubLFLG)
+       }
+       field(EFLG,DBF_MENU) {
+               prompt("Event Flag")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+               menu(genSubEFLG)
+       }
+       field(SUBL,DBF_INLINK) {
+               prompt("Subroutine Input Link")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INAM,DBF_STRING) {
+               prompt("Init Routine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(SNAM,DBF_STRING) {
+               prompt("Process Subr. Name")
+               promptgroup(GUI_SUB)
+               special(SPC_MOD)
+               interest(1)
+               size(40)
+       }
+       field(ONAM,DBF_STRING) {
+               prompt("Old Subroutine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(BRSV,DBF_MENU) {
+               prompt("Bad Return Severity")
+               promptgroup(GUI_SUB)
+               pp(TRUE)
+               interest(1)
+               menu(menuAlarmSevr)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input Link A")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input Link B")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input Link C")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input Link D")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input Link E")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input Link F")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input Link G")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input Link H")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input Link I")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input Link J")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input Link K")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input Link L")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPM,DBF_INLINK) {
+               prompt("Input Link M")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPN,DBF_INLINK) {
+               prompt("Input Link N")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPO,DBF_INLINK) {
+               prompt("Input Link O")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPP,DBF_INLINK) {
+               prompt("Input Link P")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPQ,DBF_INLINK) {
+               prompt("Input Link Q")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPR,DBF_INLINK) {
+               prompt("Input Link R")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPS,DBF_INLINK) {
+               prompt("Input Link S")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPT,DBF_INLINK) {
+               prompt("Input Link T")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPU,DBF_INLINK) {
+               prompt("Input Link U")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(UFA,DBF_STRING) {
+               prompt("Input Structure A")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFB,DBF_STRING) {
+               prompt("Input Structure B")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFC,DBF_STRING) {
+               prompt("Input Structure C")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFD,DBF_STRING) {
+               prompt("Input Structure D")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFE,DBF_STRING) {
+               prompt("Input Structure E")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFF,DBF_STRING) {
+               prompt("Input Structure F")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFG,DBF_STRING) {
+               prompt("Input Structure G")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFH,DBF_STRING) {
+               prompt("Input Structure H")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFI,DBF_STRING) {
+               prompt("Input Structure I")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFJ,DBF_STRING) {
+               prompt("Input Structure J")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFK,DBF_STRING) {
+               prompt("Input Structure K")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFL,DBF_STRING) {
+               prompt("Input Structure L")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFM,DBF_STRING) {
+               prompt("Input Structure M")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFN,DBF_STRING) {
+               prompt("Input Structure N")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFO,DBF_STRING) {
+               prompt("Input Structure O")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFP,DBF_STRING) {
+               prompt("Input Structure P")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFQ,DBF_STRING) {
+               prompt("Input Structure Q")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFR,DBF_STRING) {
+               prompt("Input Structure R")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFS,DBF_STRING) {
+               prompt("Input Structure S")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFT,DBF_STRING) {
+               prompt("Input Structure T")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFU,DBF_STRING) {
+               prompt("Input Structure U")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(A,DBF_NOACCESS) {
+               prompt("Value of Input A")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *a")
+       }
+       field(B,DBF_NOACCESS) {
+               prompt("Value of Input B")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *b")
+       }
+       field(C,DBF_NOACCESS) {
+               prompt("Value of Input C")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *c")
+       }
+       field(D,DBF_NOACCESS) {
+               prompt("Value of Input D")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *d")
+       }
+       field(E,DBF_NOACCESS) {
+               prompt("Value of Input E")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *e")
+       }
+       field(F,DBF_NOACCESS) {
+               prompt("Value of Input F")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *f")
+       }
+       field(G,DBF_NOACCESS) {
+               prompt("Value of Input G")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *g")
+       }
+       field(H,DBF_NOACCESS) {
+               prompt("Value of Input H")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *h")
+       }
+       field(I,DBF_NOACCESS) {
+               prompt("Value of Input I")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *i")
+       }
+       field(J,DBF_NOACCESS) {
+               prompt("Value of Input J")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               pp(TRUE)
+               interest(1)
+               size(4)
+               extra("void *j")
+       }
+       field(K,DBF_NOACCESS) {
+               prompt("Value of Input K")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *k")
+       }
+       field(L,DBF_NOACCESS) {
+               prompt("Value of Input L")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *l")
+       }
+       field(M,DBF_NOACCESS) {
+               prompt("Value of Input M")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *m")
+       }
+       field(N,DBF_NOACCESS) {
+               prompt("Value of Input N")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *n")
+       }
+       field(O,DBF_NOACCESS) {
+               prompt("Value of Input O")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *o")
+       }
+       field(P,DBF_NOACCESS) {
+               prompt("Value of Input P")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *p")
+       }
+       field(Q,DBF_NOACCESS) {
+               prompt("Value of Input Q")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *q")
+       }
+       field(R,DBF_NOACCESS) {
+               prompt("Value of Input R")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *r")
+       }
+       field(S,DBF_NOACCESS) {
+               prompt("Value of Input S")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *s")
+       }
+       field(T,DBF_NOACCESS) {
+               prompt("Value of Input T")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *t")
+       }
+       field(U,DBF_NOACCESS) {
+               prompt("Value of Input U")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *u")
+       }
+       field(FTA,DBF_MENU) {
+               prompt("Type of A")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTB,DBF_MENU) {
+               prompt("Type of B")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTC,DBF_MENU) {
+               prompt("Type of C")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTD,DBF_MENU) {
+               prompt("Type of D")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTE,DBF_MENU) {
+               prompt("Type of E")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTF,DBF_MENU) {
+               prompt("Type of F")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTG,DBF_MENU) {
+               prompt("Type of G")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTH,DBF_MENU) {
+               prompt("Type of H")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTI,DBF_MENU) {
+               prompt("Type of I")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTJ,DBF_MENU) {
+               prompt("Type of J")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTK,DBF_MENU) {
+               prompt("Type of K")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTL,DBF_MENU) {
+               prompt("Type of L")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTM,DBF_MENU) {
+               prompt("Type of M")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTN,DBF_MENU) {
+               prompt("Type of N")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTO,DBF_MENU) {
+               prompt("Type of O")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTP,DBF_MENU) {
+               prompt("Type of P")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTQ,DBF_MENU) {
+               prompt("Type of Q")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTR,DBF_MENU) {
+               prompt("Type of R")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTS,DBF_MENU) {
+               prompt("Type of S")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTT,DBF_MENU) {
+               prompt("Type of T")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTU,DBF_MENU) {
+               prompt("Type of U")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(NOA,DBF_ULONG) {
+               prompt("No. in A")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOB,DBF_ULONG) {
+               prompt("No. in B")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOC,DBF_ULONG) {
+               prompt("No. in C")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOD,DBF_ULONG) {
+               prompt("No. in D")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOE,DBF_ULONG) {
+               prompt("No. in E")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOF,DBF_ULONG) {
+               prompt("No. in F")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOG,DBF_ULONG) {
+               prompt("No. in G")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOH,DBF_ULONG) {
+               prompt("No. in H")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOI,DBF_ULONG) {
+               prompt("No. in I")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOJ,DBF_ULONG) {
+               prompt("No. in J")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOK,DBF_ULONG) {
+               prompt("No. in K")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOL,DBF_ULONG) {
+               prompt("No. in L")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOM,DBF_ULONG) {
+               prompt("No. in M")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NON,DBF_ULONG) {
+               prompt("No. in N")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOO,DBF_ULONG) {
+               prompt("No. in O")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOP,DBF_ULONG) {
+               prompt("No. in P")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOQ,DBF_ULONG) {
+               prompt("No. in Q")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOR,DBF_ULONG) {
+               prompt("No. in R")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOS,DBF_ULONG) {
+               prompt("No. in S")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOT,DBF_ULONG) {
+               prompt("No. in T")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOU,DBF_ULONG) {
+               prompt("No. in U")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(OUTA,DBF_OUTLINK) {
+               prompt("Output Link A")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTB,DBF_OUTLINK) {
+               prompt("Output Link B")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTC,DBF_OUTLINK) {
+               prompt("Output Link C")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTD,DBF_OUTLINK) {
+               prompt("Output Link D")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTE,DBF_OUTLINK) {
+               prompt("Output Link E")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTF,DBF_OUTLINK) {
+               prompt("Output Link F")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTG,DBF_OUTLINK) {
+               prompt("Output Link G")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTH,DBF_OUTLINK) {
+               prompt("Output Link H")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTI,DBF_OUTLINK) {
+               prompt("Output Link I")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTJ,DBF_OUTLINK) {
+               prompt("Output Link J")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTK,DBF_OUTLINK) {
+               prompt("Output Link K")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTL,DBF_OUTLINK) {
+               prompt("Output Link L")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTM,DBF_OUTLINK) {
+               prompt("Output Link M")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTN,DBF_OUTLINK) {
+               prompt("Output Link N")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTO,DBF_OUTLINK) {
+               prompt("Output Link O")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTP,DBF_OUTLINK) {
+               prompt("Output Link P")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTQ,DBF_OUTLINK) {
+               prompt("Output Link Q")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTR,DBF_OUTLINK) {
+               prompt("Output Link R")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTS,DBF_OUTLINK) {
+               prompt("Output Link S")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTT,DBF_OUTLINK) {
+               prompt("Output Link T")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTU,DBF_OUTLINK) {
+               prompt("Output Link U")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(UFVA,DBF_STRING) {
+               prompt("Output Structure A")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVB,DBF_STRING) {
+               prompt("Output Structure B")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVC,DBF_STRING) {
+               prompt("Output Structure C")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVD,DBF_STRING) {
+               prompt("Output Structure D")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVE,DBF_STRING) {
+               prompt("Output Structure E")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVF,DBF_STRING) {
+               prompt("Output Structure F")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVG,DBF_STRING) {
+               prompt("Output Structure G")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVH,DBF_STRING) {
+               prompt("Output Structure H")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVI,DBF_STRING) {
+               prompt("Output Structure I")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVJ,DBF_STRING) {
+               prompt("Output Structure J")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVK,DBF_STRING) {
+               prompt("Output Structure K")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVL,DBF_STRING) {
+               prompt("Output Structure L")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVM,DBF_STRING) {
+               prompt("Output Structure M")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVN,DBF_STRING) {
+               prompt("Output Structure N")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVO,DBF_STRING) {
+               prompt("Output Structure O")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVP,DBF_STRING) {
+               prompt("Output Structure P")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVQ,DBF_STRING) {
+               prompt("Output Structure Q")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVR,DBF_STRING) {
+               prompt("Output Structure R")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVS,DBF_STRING) {
+               prompt("Output Structure S")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVT,DBF_STRING) {
+               prompt("Output Structure T")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVU,DBF_STRING) {
+               prompt("Output Structure U")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(VALA,DBF_NOACCESS) {
+               prompt("Value of Output A")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vala")
+       }
+       field(VALB,DBF_NOACCESS) {
+               prompt("Value of Output B")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valb")
+       }
+       field(VALC,DBF_NOACCESS) {
+               prompt("Value of Output C")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valc")
+       }
+       field(VALD,DBF_NOACCESS) {
+               prompt("Value of Output D")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vald")
+       }
+       field(VALE,DBF_NOACCESS) {
+               prompt("Value of Output E")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vale")
+       }
+       field(VALF,DBF_NOACCESS) {
+               prompt("Value of Output F")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valf")
+       }
+       field(VALG,DBF_NOACCESS) {
+               prompt("Value of Output G")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valg")
+       }
+       field(VALH,DBF_NOACCESS) {
+               prompt("Value of Output H")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valh")
+       }
+       field(VALI,DBF_NOACCESS) {
+               prompt("Value of Output I")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vali")
+       }
+       field(VALJ,DBF_NOACCESS) {
+               prompt("Value of Output J")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valj")
+       }
+       field(VALK,DBF_NOACCESS) {
+               prompt("Value of Output K")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valk")
+       }
+       field(VALL,DBF_NOACCESS) {
+               prompt("Value of Output L")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vall")
+       }
+       field(VALM,DBF_NOACCESS) {
+               prompt("Value of Output M")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valm")
+       }
+       field(VALN,DBF_NOACCESS) {
+               prompt("Value of Output N")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valn")
+       }
+       field(VALO,DBF_NOACCESS) {
+               prompt("Value of Output O")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valo")
+       }
+       field(VALP,DBF_NOACCESS) {
+               prompt("Value of Output P")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valp")
+       }
+       field(VALQ,DBF_NOACCESS) {
+               prompt("Value of Output Q")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valq")
+       }
+       field(VALR,DBF_NOACCESS) {
+               prompt("Value of Output R")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valr")
+       }
+       field(VALS,DBF_NOACCESS) {
+               prompt("Value of Output S")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vals")
+       }
+       field(VALT,DBF_NOACCESS) {
+               prompt("Value of Output T")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valt")
+       }
+       field(VALU,DBF_NOACCESS) {
+               prompt("Value of Output U")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valu")
+       }
+       field(OVLA,DBF_NOACCESS) {
+               prompt("Old Output A")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovla")
+       }
+       field(OVLB,DBF_NOACCESS) {
+               prompt("Old Output B")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlb")
+       }
+       field(OVLC,DBF_NOACCESS) {
+               prompt("Old Output C")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlc")
+       }
+       field(OVLD,DBF_NOACCESS) {
+               prompt("Old Output D")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovld")
+       }
+       field(OVLE,DBF_NOACCESS) {
+               prompt("Old Output E")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovle")
+       }
+       field(OVLF,DBF_NOACCESS) {
+               prompt("Old Output F")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlf")
+       }
+       field(OVLG,DBF_NOACCESS) {
+               prompt("Old Output G")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlg")
+       }
+       field(OVLH,DBF_NOACCESS) {
+               prompt("Old Output H")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlh")
+       }
+       field(OVLI,DBF_NOACCESS) {
+               prompt("Old Output I")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovli")
+       }
+       field(OVLJ,DBF_NOACCESS) {
+               prompt("Old Output J")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlj")
+       }
+       field(OVLK,DBF_NOACCESS) {
+               prompt("Old Output K")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlk")
+       }
+       field(OVLL,DBF_NOACCESS) {
+               prompt("Old Output L")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovll")
+       }
+       field(OVLM,DBF_NOACCESS) {
+               prompt("Old Output M")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlm")
+       }
+       field(OVLN,DBF_NOACCESS) {
+               prompt("Old Output N")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovln")
+       }
+       field(OVLO,DBF_NOACCESS) {
+               prompt("Old Output O")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlo")
+       }
+       field(OVLP,DBF_NOACCESS) {
+               prompt("Old Output P")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlp")
+       }
+       field(OVLQ,DBF_NOACCESS) {
+               prompt("Old Output Q")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlq")
+       }
+       field(OVLR,DBF_NOACCESS) {
+               prompt("Old Output R")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlr")
+       }
+       field(OVLS,DBF_NOACCESS) {
+               prompt("Old Output S")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovls")
+       }
+       field(OVLT,DBF_NOACCESS) {
+               prompt("Old Output T")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlt")
+       }
+       field(OVLU,DBF_NOACCESS) {
+               prompt("Old Output U")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlu")
+       }
+       field(FTVA,DBF_MENU) {
+               prompt("Type of VALA")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVB,DBF_MENU) {
+               prompt("Type of VALB")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVC,DBF_MENU) {
+               prompt("Type of VALC")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVD,DBF_MENU) {
+               prompt("Type of VALD")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVE,DBF_MENU) {
+               prompt("Type of VALE")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVF,DBF_MENU) {
+               prompt("Type of VALF")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVG,DBF_MENU) {
+               prompt("Type of VALG")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVH,DBF_MENU) {
+               prompt("Type of VALH")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVI,DBF_MENU) {
+               prompt("Type of VALI")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVJ,DBF_MENU) {
+               prompt("Type of VALJ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVK,DBF_MENU) {
+               prompt("Type of VALK")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVL,DBF_MENU) {
+               prompt("Type of VALL")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVM,DBF_MENU) {
+               prompt("Type of VALM")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVN,DBF_MENU) {
+               prompt("Type of VALN")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVO,DBF_MENU) {
+               prompt("Type of VALO")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVP,DBF_MENU) {
+               prompt("Type of VALP")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVQ,DBF_MENU) {
+               prompt("Type of VALQ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVR,DBF_MENU) {
+               prompt("Type of VALR")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVS,DBF_MENU) {
+               prompt("Type of VALS")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVT,DBF_MENU) {
+               prompt("Type of VALT")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVU,DBF_MENU) {
+               prompt("Type of VALU")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(NOVA,DBF_ULONG) {
+               prompt("No. in VALA")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVB,DBF_ULONG) {
+               prompt("No. in VALB")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVC,DBF_ULONG) {
+               prompt("No. in VALC")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVD,DBF_ULONG) {
+               prompt("No. in VALD")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVE,DBF_ULONG) {
+               prompt("No. in VALE")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVF,DBF_ULONG) {
+               prompt("No. in VALF")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVG,DBF_ULONG) {
+               prompt("No. in VALG")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVH,DBF_ULONG) {
+               prompt("No. in VAlH")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVI,DBF_ULONG) {
+               prompt("No. in VALI")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVJ,DBF_ULONG) {
+               prompt("No. in VALJ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVK,DBF_ULONG) {
+               prompt("No. in VALK")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVL,DBF_ULONG) {
+               prompt("No. in VALL")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVM,DBF_ULONG) {
+               prompt("No. in VALM")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVN,DBF_ULONG) {
+               prompt("No. in VALN")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVO,DBF_ULONG) {
+               prompt("No. in VALO")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVP,DBF_ULONG) {
+               prompt("No. in VALP")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVQ,DBF_ULONG) {
+               prompt("No. in VALQ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVR,DBF_ULONG) {
+               prompt("No. in VALR")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVS,DBF_ULONG) {
+               prompt("No. in VALS")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVT,DBF_ULONG) {
+               prompt("No. in VALT")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVU,DBF_ULONG) {
+               prompt("No. in VALU")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVA,DBF_ULONG) {
+               prompt("Total bytes for VALA")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVB,DBF_ULONG) {
+               prompt("Total bytes for VALB")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVC,DBF_ULONG) {
+               prompt("Total bytes for VALC")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVD,DBF_ULONG) {
+               prompt("Total bytes for VALD")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVE,DBF_ULONG) {
+               prompt("Total bytes for VALE")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVF,DBF_ULONG) {
+               prompt("Total bytes for VALF")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVG,DBF_ULONG) {
+               prompt("Total bytes for VALG")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVH,DBF_ULONG) {
+               prompt("Total bytes for VAlH")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVI,DBF_ULONG) {
+               prompt("Total bytes for VALI")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVJ,DBF_ULONG) {
+               prompt("Total bytes for VALJ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVK,DBF_ULONG) {
+               prompt("Total bytes for VALK")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVL,DBF_ULONG) {
+               prompt("Total bytes for VALL")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVM,DBF_ULONG) {
+               prompt("Total bytes for VALM")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVN,DBF_ULONG) {
+               prompt("Total bytes for VALN")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVO,DBF_ULONG) {
+               prompt("Total bytes for VALO")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVP,DBF_ULONG) {
+               prompt("Total bytes for VALP")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVQ,DBF_ULONG) {
+               prompt("Total bytes for VALQ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVR,DBF_ULONG) {
+               prompt("Total bytes for VALR")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVS,DBF_ULONG) {
+               prompt("Total bytes for VALS")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVT,DBF_ULONG) {
+               prompt("Total bytes for VALT")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVU,DBF_ULONG) {
+               prompt("Total bytes for VALU")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+}
diff --git a/ebctrl/ioc/dbd/xxxRecord.dbd b/ebctrl/ioc/dbd/xxxRecord.dbd
new file mode 100644 (file)
index 0000000..4a71c54
--- /dev/null
@@ -0,0 +1,117 @@
+recordtype(xxx) {
+       include "dbCommon.dbd" 
+       field(VAL,DBF_DOUBLE) {
+               prompt("Current EGU Value")
+               asl(ASL0)
+               pp(TRUE)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+               size(16)
+       }
+       field(HOPR,DBF_FLOAT) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_FLOAT) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_FLOAT) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_FLOAT) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_FLOAT) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_FLOAT) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+               menu(menuAlarmSevr)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+               menu(menuAlarmSevr)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+               menu(menuAlarmSevr)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+               menu(menuAlarmSevr)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
diff --git a/ebctrl/ioc/dbd/xxxSupport.dbd b/ebctrl/ioc/dbd/xxxSupport.dbd
new file mode 100644 (file)
index 0000000..8094bdd
--- /dev/null
@@ -0,0 +1,2 @@
+include "xxxRecord.dbd"
+device(xxx,CONSTANT,devXxxSoft,"SoftChannel")
diff --git a/ebctrl/ioc/ebctrlApp/Db/Makefile b/ebctrl/ioc/ebctrlApp/Db/Makefile
new file mode 100644 (file)
index 0000000..e1ceb99
--- /dev/null
@@ -0,0 +1,24 @@
+TOP=../..
+include $(TOP)/configure/CONFIG
+#----------------------------------------
+#  ADD MACRO DEFINITIONS AFTER THIS LINE
+
+#----------------------------------------------------
+#  Optimization of db files using dbst (DEFAULT: NO)
+#DB_OPT = YES
+
+#----------------------------------------------------
+# Create and install (or just install)
+# databases, templates, substitutions like this
+DB += evtbuild.db
+DB += user.substitutions
+DB += userHost.substitutions
+
+#----------------------------------------------------
+# If <anyname>.db template is not named <anyname>*.template add
+# <anyname>_TEMPLATE = <templatename>
+
+include $(TOP)/configure/RULES
+#----------------------------------------
+#  ADD RULES AFTER THIS LINE
+
diff --git a/ebctrl/ioc/ebctrlApp/Db/O.linux-x86/Makefile b/ebctrl/ioc/ebctrlApp/Db/O.linux-x86/Makefile
new file mode 100644 (file)
index 0000000..da5269a
--- /dev/null
@@ -0,0 +1,10 @@
+#This Makefile created by makeMakefile.pl
+
+
+all :
+       $(MAKE) -f ../Makefile TOP=../../.. T_A=linux-x86  $@
+
+.DEFAULT: force
+       $(MAKE) -f ../Makefile TOP=../../.. T_A=linux-x86  $@
+
+force:  ;
diff --git a/ebctrl/ioc/ebctrlApp/Db/dbExample1.db b/ebctrl/ioc/ebctrlApp/Db/dbExample1.db
new file mode 100644 (file)
index 0000000..4f16ada
--- /dev/null
@@ -0,0 +1,62 @@
+record(ai, "$(user):aiExample")
+{
+       field(DESC, "Analog input")
+       field(INP, "$(user):calcExample.VAL  NPP NMS")
+       field(EGUF, "10")
+       field(EGU, "Counts")
+       field(HOPR, "10")
+       field(LOPR, "0")
+       field(HIHI, "8")
+       field(HIGH, "6")
+       field(LOW, "4")
+       field(LOLO, "2")
+       field(HHSV, "MAJOR")
+       field(HSV, "MINOR")
+       field(LSV, "MINOR")
+       field(LLSV, "MAJOR")
+}
+record(calc, "$(user):calcExample")
+{
+       field(DESC, "Counter")
+       field(SCAN,"1 second")
+       field(FLNK, "$(user):aiExample")
+       field(CALC, "(A<B)?(A+C):D")
+       field(INPA, "$(user):calcExample.VAL  NPP NMS")
+       field(INPB, "9")
+       field(INPC, "1")
+       field(INPD, "0")
+       field(EGU, "Counts")
+       field(HOPR, "10")
+       field(HIHI, "8")
+       field(HIGH, "6")
+       field(LOW, "4")
+       field(LOLO, "2")
+       field(HHSV, "MAJOR")
+       field(HSV, "MINOR")
+       field(LSV, "MINOR")
+       field(LLSV, "MAJOR")
+}
+record(xxx, "$(user):xxxExample")
+{
+       field(DESC, "xxx record")
+       field(EGU, "Counts")
+       field(HOPR, "10")
+       field(HIHI, "8")
+       field(HIGH, "6")
+       field(LOW, "4")
+       field(LOLO, "2")
+       field(HHSV, "MAJOR")
+       field(HSV, "MINOR")
+       field(LSV, "MINOR")
+       field(LLSV, "MAJOR")
+}
+record(compress,"$(user):compressExample")
+{
+       field(DESC, "Circular buffer")
+       field(INP,"$(user):aiExample.VAL CP NMS")
+       field(ALG,"Circular Buffer")
+       field(NSAM,"10")
+       field(HOPR,"10")
+       field(EGU,"Counts")
+}
+
diff --git a/ebctrl/ioc/ebctrlApp/Db/dbExample2.db b/ebctrl/ioc/ebctrlApp/Db/dbExample2.db
new file mode 100644 (file)
index 0000000..836c53d
--- /dev/null
@@ -0,0 +1,38 @@
+record(calc, "$(user):calcExample$(no)")
+{
+       field(DESC, "Counter No. $(no)")
+       field(SCAN,"$(scan)")
+       field(FLNK, "$(user):aiExample$(no)")
+       field(CALC, "(A<B)?(A+C):D")
+       field(INPA, "$(user):calcExample$(no).VAL NPP NMS")
+       field(INPB, "9")
+       field(INPC, "1")
+       field(INPD, "0")
+       field(EGU, "Counts")
+       field(HOPR, "10")
+       field(HIHI, "8")
+       field(HIGH, "6")
+       field(LOW, "4")
+       field(LOLO, "2")
+       field(HHSV, "MAJOR")
+       field(HSV, "MINOR")
+       field(LSV, "MINOR")
+       field(LLSV, "MAJOR")
+}
+record(ai, "$(user):aiExample$(no)")
+{
+       field(DESC, "Analog input No. $(no)")
+       field(INP, "$(user):calcExample$(no).VAL NPP NMS")
+       field(EGUF, "10")
+       field(EGU, "Counts")
+       field(HOPR, "10")
+       field(LOPR, "0")
+       field(HIHI, "8")
+       field(HIGH, "6")
+       field(LOW, "4")
+       field(LOLO, "2")
+       field(HHSV, "MAJOR")
+       field(HSV, "MINOR")
+       field(LSV, "MINOR")
+       field(LLSV, "MAJOR")
+}
diff --git a/ebctrl/ioc/ebctrlApp/Db/dbSubExample.db b/ebctrl/ioc/ebctrlApp/Db/dbSubExample.db
new file mode 100644 (file)
index 0000000..96b8638
--- /dev/null
@@ -0,0 +1,5 @@
+record(sub,"$(user):subExample")
+{
+    field(INAM,"mySubInit")
+    field(SNAM,"mySubProcess")
+}
diff --git a/ebctrl/ioc/ebctrlApp/Db/evtbuild.db b/ebctrl/ioc/ebctrlApp/Db/evtbuild.db
new file mode 100755 (executable)
index 0000000..b39319d
--- /dev/null
@@ -0,0 +1,124 @@
+record(genSub,"HAD:$(eb)") {\r
+    field(DESC,"General Subroutine Record")\r
+    field(SCAN,"1 second")\r
+    field(PINI,"NO")\r
+    field(PHAS,"0")\r
+    field(EVNT,"0")\r
+    field(DISV,"1")\r
+    field(LFLG,"IGNORE")\r
+    field(EFLG,"ALWAYS")\r
+    field(SDIS,"0.0000000000000000e+00")\r
+    field(DISS,"NO_ALARM")\r
+    field(PRIO,"LOW")\r
+    field(FLNK,"0.000000000000000e+00")\r
+    field(SUBL,"0.0000000000000000e+00")\r
+    field(BRSV,"NO_ALARM")\r
+    field(INAM,"evtbuild_init")\r
+    field(SNAM,"evtbuild_proc")\r
+    field(FTA,"LONG")\r
+    field(FTB,"LONG")\r
+    field(FTC,"LONG")\r
+    field(FTD,"LONG")\r
+    field(FTE,"LONG")\r
+    field(FTF,"LONG")\r
+    field(FTG,"LONG")\r
+    field(FTH,"LONG")\r
+    field(FTVA,"LONG")\r
+    field(FTVB,"LONG")\r
+    field(FTVC,"LONG")\r
+    field(FTVD,"LONG")\r
+    field(FTVE,"LONG")\r
+    field(FTVF,"LONG")\r
+    field(FTVG,"LONG")\r
+    field(FTVH,"LONG")\r
+    field(NOA,"50")\r
+    field(NOB,"50")\r
+    field(NOC,"50")\r
+    field(NOD,"50")\r
+    field(NOE,"50")\r
+    field(NOF,"50")\r
+    field(NOG,"50")\r
+    field(NOH,"50")\r
+    field(NOVA,"1")\r
+    field(NOVB,"1")\r
+    field(NOVC,"1")\r
+    field(NOVD,"1")\r
+    field(NOVE,"1")\r
+    field(NOVF,"1")\r
+    field(NOVG,"100")\r
+    field(NOVH,"1")\r
+    field(OUTA,"HAD:$(eb):nrOfMsgs PP NMS")\r
+    field(OUTB,"HAD:$(eb):byteWrit PP NMS")    \r
+    field(OUTC,"HAD:$(eb):evtsComp PP NMS")\r
+    field(OUTD,"HAD:$(eb):evtsDisc PP NMS")\r
+    field(OUTE,"HAD:$(eb):evtsDataErr PP NMS")\r
+    field(OUTF,"HAD:$(eb):evtsTagErr PP NMS")  \r
+    field(OUTG,"HAD:$(eb):evtbuildBuff PP NMS")\r
+    field(OUTH,"HAD:$(eb):status PP NMS")\r
+}\r
+record(longin,"HAD:$(eb):nrOfMsgs")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):byteWrit")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):evtsComp")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):evtsDisc")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):evtsDataErr")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):evtsTagErr")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(longin,"HAD:$(eb):status")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+}\r
+record(waveform,"HAD:$(eb):evtbuildBuff")\r
+{\r
+    field(DTYP,"Soft Channel")\r
+    field(SCAN,"Passive")\r
+    field(INP,"Constant")\r
+    field(NELM,"100")\r
+    field(FTVL,"LONG")\r
+}\r
+record(sub,"HAD:genRunId") {\r
+                field(DESC, "subroutine")\r
+                field(SCAN, "1 second")\r
+                field(INPA, "HAD:$(eb):byteWrit")\r
+                field(INPB, "HAD:$(eb):status")\r
+                field(INAM, "genRunId_init")\r
+                field(SNAM, "genRunId_proc")\r
+}\r
+record(sub,"HAD:writeRunId") {\r
+                field(DESC, "subroutine")\r
+                field(SCAN, "1 second")\r
+                field(INPA, "HAD:genRunId")\r
+                field(INPB, "")\r
+                field(INAM, "writeRunId_init")\r
+                field(SNAM, "writeRunId_proc")\r
+}\r
diff --git a/ebctrl/ioc/ebctrlApp/Db/user.substitutions b/ebctrl/ioc/ebctrlApp/Db/user.substitutions
new file mode 100644 (file)
index 0000000..aea0cbf
--- /dev/null
@@ -0,0 +1,12 @@
+# Example substitutions file
+
+file "db/dbExample1.db" {
+    { user = "scs" }
+}
+
+file db/dbExample2.db {
+    pattern { user, no, scan }
+        { "scs", 1, "1 second" }
+        { "scs", 2, "2 second" }
+        { "scs", 3, "5 second" }
+}
diff --git a/ebctrl/ioc/ebctrlApp/Db/userHost.substitutions b/ebctrl/ioc/ebctrlApp/Db/userHost.substitutions
new file mode 100644 (file)
index 0000000..b0e3006
--- /dev/null
@@ -0,0 +1,12 @@
+# Example substitutions file
+
+file "db/dbExample1.db" {
+    { user = "scsHost" }
+}
+
+file db/dbExample2.db {
+    pattern { user, no, scan }
+        { "scsHost", 1, "1 second" }
+        { "scsHost", 2, "2 second" }
+        { "scsHost", 3, "5 second" }
+}
diff --git a/ebctrl/ioc/ebctrlApp/Makefile b/ebctrl/ioc/ebctrlApp/Makefile
new file mode 100644 (file)
index 0000000..10e0126
--- /dev/null
@@ -0,0 +1,8 @@
+TOP = ..
+include $(TOP)/configure/CONFIG
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *src*))
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Src*))
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *db*))
+DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Db*))
+include $(TOP)/configure/RULES_DIRS
+
diff --git a/ebctrl/ioc/ebctrlApp/src/Makefile b/ebctrl/ioc/ebctrlApp/src/Makefile
new file mode 100644 (file)
index 0000000..46985d5
--- /dev/null
@@ -0,0 +1,86 @@
+TOP=../..
+
+include $(TOP)/configure/CONFIG
+#----------------------------------------
+#  ADD MACRO DEFINITIONS AFTER THIS LINE
+#=============================
+
+#==================================================
+# Build an IOC support library
+
+LIBRARY_IOC += xxxSupport
+
+# xxxRecord.h will be created from xxxRecord.dbd
+DBDINC += xxxRecord
+# install devXxxSoft.dbd into <top>/dbd
+DBD += xxxSupport.dbd
+
+# The following are compiled and added to the Support library
+xxxSupport_SRCS += xxxRecord.c
+xxxSupport_SRCS += devXxxSoft.c
+
+xxxSupport_LIBS += $(EPICS_BASE_IOC_LIBS)
+
+LIBRARY_IOC += genSub
+
+DBDINC      += genSubRecord.h
+DBD         += genSubRecord.dbd
+
+#=============================
+# build an ioc application
+
+PROD_IOC = ebctrl
+# ebctrl.dbd will be created and installed
+DBD += ebctrl.dbd
+
+# ebctrl.dbd will be made up from these files:
+ebctrl_DBD += base.dbd
+ebctrl_DBD += xxxSupport.dbd
+ebctrl_DBD += genSubRecord.dbd
+ebctrl_DBD += evtbuild.dbd
+ebctrl_DBD += genrunid.dbd
+ebctrl_DBD += writerunid.dbd
+
+# <name>_registerRecordDeviceDriver.cpp will be created from <name>.dbd
+ebctrl_SRCS += ebctrl_registerRecordDeviceDriver.cpp
+ebctrl_SRCS_DEFAULT += ebctrlMain.cpp
+ebctrl_SRCS_vxWorks += -nil-
+
+# Add locally compiled object code
+ebctrl_SRCS += genSubRecord.c
+ebctrl_SRCS += evtbuild.c
+ebctrl_SRCS += genrunid.c
+ebctrl_SRCS += writerunid.c
+
+# The following adds support from base/src/vxWorks
+ebctrl_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
+
+ebctrl_LIBS += xxxSupport
+ebctrl_LIBS += hadaq
+
+# NOTE: To build SNL programs, SNCSEQ must be defined
+# in the <top>/configure/RELEASE file
+
+ifneq ($(SNCSEQ),)
+    # This builds sncExample as a component of ebctrl
+    ebctrl_SNCFLAGS += +r
+    ebctrl_DBD += sncExample.dbd
+    ebctrl_SRCS += sncExample.stt
+    ebctrl_LIBS += seq pv
+
+    # The following builds sncProgram as a standalone application
+    PROD_HOST += sncProgram
+    sncProgram_SNCFLAGS += +m
+    sncProgram_SRCS += sncProgram.st
+    sncProgram_LIBS += seq pv
+    sncProgram_LIBS += $(EPICS_BASE_HOST_LIBS)
+endif
+
+ebctrl_LIBS += $(EPICS_BASE_IOC_LIBS)
+
+#===========================
+
+include $(TOP)/configure/RULES
+#----------------------------------------
+#  ADD RULES AFTER THIS LINE
+
diff --git a/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd b/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd
new file mode 100644 (file)
index 0000000..ebabb25
--- /dev/null
@@ -0,0 +1,13320 @@
+menu(stringoutPOST) {
+       choice(stringoutPOST_OnChange,"On Change")
+       choice(stringoutPOST_Always,"Always")
+}
+menu(stringinPOST) {
+       choice(stringinPOST_OnChange,"On Change")
+       choice(stringinPOST_Always,"Always")
+}
+menu(seqSELM) {
+       choice(seqSELM_All,"All")
+       choice(seqSELM_Specified,"Specified")
+       choice(seqSELM_Mask,"Mask")
+}
+menu(selSELM) {
+       choice(selSELM_Specified,"Specified")
+       choice(selSELM_High_Signal,"High Signal")
+       choice(selSELM_Low_Signal,"Low Signal")
+       choice(selSELM_Median_Signal,"Median Signal")
+}
+menu(menuYesNo) {
+       choice(menuYesNoNO,"NO")
+       choice(menuYesNoYES,"YES")
+}
+menu(menuSimm) {
+       choice(menuSimmNO,"NO")
+       choice(menuSimmYES,"YES")
+       choice(menuSimmRAW,"RAW")
+}
+menu(menuScan) {
+       choice(menuScanPassive,"Passive")
+       choice(menuScanEvent,"Event")
+       choice(menuScanI_O_Intr,"I/O Intr")
+       choice(menuScan10_second,"10 second")
+       choice(menuScan5_second,"5 second")
+       choice(menuScan2_second,"2 second")
+       choice(menuScan1_second,"1 second")
+       choice(menuScan_5_second,".5 second")
+       choice(menuScan_2_second,".2 second")
+       choice(menuScan_1_second,".1 second")
+}
+menu(menuPriority) {
+       choice(menuPriorityLOW,"LOW")
+       choice(menuPriorityMEDIUM,"MEDIUM")
+       choice(menuPriorityHIGH,"HIGH")
+}
+menu(menuOmsl) {
+       choice(menuOmslsupervisory,"supervisory")
+       choice(menuOmslclosed_loop,"closed_loop")
+}
+menu(menuIvoa) {
+       choice(menuIvoaContinue_normally,"Continue normally")
+       choice(menuIvoaDon_t_drive_outputs,"Don't drive outputs")
+       choice(menuIvoaSet_output_to_IVOV,"Set output to IVOV")
+}
+menu(menuFtype) {
+       choice(menuFtypeSTRING,"STRING")
+       choice(menuFtypeCHAR,"CHAR")
+       choice(menuFtypeUCHAR,"UCHAR")
+       choice(menuFtypeSHORT,"SHORT")
+       choice(menuFtypeUSHORT,"USHORT")
+       choice(menuFtypeLONG,"LONG")
+       choice(menuFtypeULONG,"ULONG")
+       choice(menuFtypeFLOAT,"FLOAT")
+       choice(menuFtypeDOUBLE,"DOUBLE")
+       choice(menuFtypeENUM,"ENUM")
+}
+menu(menuConvert) {
+       choice(menuConvertNO_CONVERSION,"NO CONVERSION")
+       choice(menuConvertSLOPE,"SLOPE")
+       choice(menuConvertLINEAR,"LINEAR")
+       choice(menuConverttypeKdegF,"typeKdegF")
+       choice(menuConverttypeKdegC,"typeKdegC")
+       choice(menuConverttypeJdegF,"typeJdegF")
+       choice(menuConverttypeJdegC,"typeJdegC")
+       choice(menuConverttypeEdegF,"typeEdegF(ixe only)")
+       choice(menuConverttypeEdegC,"typeEdegC(ixe only)")
+       choice(menuConverttypeTdegF,"typeTdegF")
+       choice(menuConverttypeTdegC,"typeTdegC")
+       choice(menuConverttypeRdegF,"typeRdegF")
+       choice(menuConverttypeRdegC,"typeRdegC")
+       choice(menuConverttypeSdegF,"typeSdegF")
+       choice(menuConverttypeSdegC,"typeSdegC")
+}
+menu(menuCompress) {
+       choice(menuCompressN_to_1_First_Value,"N to 1 First Value")
+       choice(menuCompressN_to_1_Low_Value,"N to 1 Low Value")
+       choice(menuCompressN_to_1_High_Value,"N to 1 High Value")
+       choice(menuCompressN_to_1_Average,"N to 1 Average")
+}
+menu(menuArrType) {
+       choice(menuArrType8_bit_integers,"8 bit integers")
+       choice(menuArrType16_bit_integers,"16 bit integers")
+       choice(menuArrType32_bit_integers,"32 bit integers")
+       choice(menuArrTypeIEEE_floating_point,"IEEE floating point")
+}
+menu(menuAlarmStat) {
+       choice(menuAlarmStatNO_ALARM,"NO_ALARM")
+       choice(menuAlarmStatREAD,"READ")
+       choice(menuAlarmStatWRITE,"WRITE")
+       choice(menuAlarmStatHIHI,"HIHI")
+       choice(menuAlarmStatHIGH,"HIGH")
+       choice(menuAlarmStatLOLO,"LOLO")
+       choice(menuAlarmStatLOW,"LOW")
+       choice(menuAlarmStatSTATE,"STATE")
+       choice(menuAlarmStatCOS,"COS")
+       choice(menuAlarmStatCOMM,"COMM")
+       choice(menuAlarmStatTIMEOUT,"TIMEOUT")
+       choice(menuAlarmStatHWLIMIT,"HWLIMIT")
+       choice(menuAlarmStatCALC,"CALC")
+       choice(menuAlarmStatSCAN,"SCAN")
+       choice(menuAlarmStatLINK,"LINK")
+       choice(menuAlarmStatSOFT,"SOFT")
+       choice(menuAlarmStatBAD_SUB,"BAD_SUB")
+       choice(menuAlarmStatUDF,"UDF")
+       choice(menuAlarmStatDISABLE,"DISABLE")
+       choice(menuAlarmStatSIMM,"SIMM")
+       choice(menuAlarmStatREAD_ACCESS,"READ_ACCESS")
+       choice(menuAlarmStatWRITE_ACCESS,"WRITE_ACCESS")
+}
+menu(menuAlarmSevr) {
+       choice(menuAlarmSevrNO_ALARM,"NO_ALARM")
+       choice(menuAlarmSevrMINOR,"MINOR")
+       choice(menuAlarmSevrMAJOR,"MAJOR")
+       choice(menuAlarmSevrINVALID,"INVALID")
+}
+menu(genSubLFLG) {
+       choice(genSubLFLG_IGNORE,"IGNORE")
+       choice(genSubLFLG_READ,"READ")
+}
+menu(genSubEFLG) {
+       choice(genSubEFLG_NEVER,"NEVER")
+       choice(genSubEFLG_ON_CHANGE,"ON CHANGE")
+       choice(genSubEFLG_ALWAYS,"ALWAYS")
+}
+menu(fanoutSELM) {
+       choice(fanoutSELM_All,"All")
+       choice(fanoutSELM_Specified,"Specified")
+       choice(fanoutSELM_Mask,"Mask")
+}
+menu(dfanoutSELM) {
+       choice(dfanoutSELM_All,"All")
+       choice(dfanoutSELM_Specified,"Specified")
+       choice(dfanoutSELM_Mask,"Mask")
+}
+menu(compressALG) {
+       choice(compressALG_N_to_1_Low_Value,"N to 1 Low Value")
+       choice(compressALG_N_to_1_High_Value,"N to 1 High Value")
+       choice(compressALG_N_to_1_Average,"N to 1 Average")
+       choice(compressALG_Average,"Average")
+       choice(compressALG_Circular_Buffer,"Circular Buffer")
+       choice(compressALG_N_to_1_Median,"N to 1 Median")
+}
+menu(calcoutOOPT) {
+       choice(calcoutOOPT_Every_Time,"Every Time")
+       choice(calcoutOOPT_On_Change,"On Change")
+       choice(calcoutOOPT_When_Zero,"When Zero")
+       choice(calcoutOOPT_When_Non_zero,"When Non-zero")
+       choice(calcoutOOPT_Transition_To_Zero,"Transition To Zero")
+       choice(calcoutOOPT_Transition_To_Non_zero,"Transition To Non-zero")
+}
+menu(calcoutINAV) {
+       choice(calcoutINAV_EXT_NC,"Ext PV NC")
+       choice(calcoutINAV_EXT,"Ext PV OK")
+       choice(calcoutINAV_LOC,"Local PV")
+       choice(calcoutINAV_CON,"Constant")
+}
+menu(calcoutINAP) {
+       choice(calcoutINAP_No,"No PROC on Change")
+       choice(calcoutINAP_Yes,"PROC on Change")
+}
+menu(calcoutDOPT) {
+       choice(calcoutDOPT_Use_VAL,"Use CALC")
+       choice(calcoutDOPT_Use_OVAL,"Use OCAL")
+}
+menu(aoOIF) {
+       choice(aoOIF_Full,"Full")
+       choice(aoOIF_Incremental,"Incremental")
+}
+recordtype(ai) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Current EGU Value")
+               promptgroup(GUI_INPUTS)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LINR,DBF_MENU) {
+               prompt("Linearization")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               menu(menuConvert)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGUF,DBF_DOUBLE) {
+               prompt("Engineer Units Full")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGUL,DBF_DOUBLE) {
+               prompt("Engineer Units Low")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(AOFF,DBF_DOUBLE) {
+               prompt("Adjustment Offset")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ASLO,DBF_DOUBLE) {
+               prompt("Adjustment Slope")
+               initial("1")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SMOO,DBF_DOUBLE) {
+               prompt("Smoothing")
+               promptgroup(GUI_CONVERT)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ESLO,DBF_DOUBLE) {
+               prompt("Raw to EGU Slope")
+               initial("1")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(2)
+       }
+       field(EOFF,DBF_DOUBLE) {
+               prompt("Raw to EGU Offset")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(2)
+       }
+       field(ROFF,DBF_LONG) {
+               prompt("Raw Offset, obsolete")
+               pp(TRUE)
+               interest(2)
+       }
+       field(PBRK,DBF_NOACCESS) {
+               prompt("Ptrto brkTable")
+               special(SPC_NOMOD)
+               extra("void *   pbrk")
+               interest(4)
+       }
+       field(INIT,DBF_SHORT) {
+               prompt("Initialized?")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LBRK,DBF_SHORT) {
+               prompt("LastBreak Point")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RVAL,DBF_LONG) {
+               prompt("Current Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_LONG) {
+               prompt("Previous Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SVAL,DBF_DOUBLE) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuSimm)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(ao) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Desired Output")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OVAL,DBF_DOUBLE) {
+               prompt("Output Value")
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OROC,DBF_DOUBLE) {
+               prompt("Output Rate of Chang")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_OUTPUT)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(OIF,DBF_MENU) {
+               prompt("Out Full/Incremental")
+               promptgroup(GUI_OUTPUT)
+               menu(aoOIF)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LINR,DBF_MENU) {
+               prompt("Linearization")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               menu(menuConvert)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGUF,DBF_DOUBLE) {
+               prompt("Eng Units Full")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGUL,DBF_DOUBLE) {
+               prompt("Eng Units Low")
+               promptgroup(GUI_CONVERT)
+               special(102)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(ROFF,DBF_LONG) {
+               prompt("Raw Offset, obsolete")
+               pp(TRUE)
+               interest(2)
+       }
+       field(EOFF,DBF_DOUBLE) {
+               prompt("EGU to Raw Offset")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(2)
+       }
+       field(ESLO,DBF_DOUBLE) {
+               prompt("EGU to Raw Slope")
+               initial("1")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(2)
+       }
+       field(DRVH,DBF_DOUBLE) {
+               prompt("Drive High Limit")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(DRVL,DBF_DOUBLE) {
+               prompt("Drive Low Limit")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(AOFF,DBF_DOUBLE) {
+               prompt("Adjustment Offset")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ASLO,DBF_DOUBLE) {
+               prompt("Adjustment Slope")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(RVAL,DBF_LONG) {
+               prompt("Current Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_LONG) {
+               prompt("Previous Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RBV,DBF_LONG) {
+               prompt("Readback Value")
+               special(SPC_NOMOD)
+       }
+       field(ORBV,DBF_LONG) {
+               prompt("Prev Readback Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(PVAL,DBF_DOUBLE) {
+               prompt("Previous value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(PBRK,DBF_NOACCESS) {
+               prompt("Ptrto brkTable")
+               special(SPC_NOMOD)
+               extra("void *   pbrk")
+               interest(4)
+       }
+       field(INIT,DBF_SHORT) {
+               prompt("Initialized?")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LBRK,DBF_SHORT) {
+               prompt("LastBreak Point")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID output action")
+               promptgroup(GUI_OUTPUT)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_DOUBLE) {
+               prompt("INVALID output value")
+               promptgroup(GUI_OUTPUT)
+               interest(2)
+       }
+       field(OMOD,DBF_UCHAR) {
+               prompt("Was OVAL modified?")
+               special(SPC_NOMOD)
+       }
+}
+recordtype(bi) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(VAL,DBF_ENUM) {
+               prompt("Current Value")
+               promptgroup(GUI_INPUTS)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(ZSV,DBF_MENU) {
+               prompt("Zero Error Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(OSV,DBF_MENU) {
+               prompt("One Error Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(COSV,DBF_MENU) {
+               prompt("Change of State Svr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ZNAM,DBF_STRING) {
+               prompt("Zero Name")
+               promptgroup(GUI_CALC)
+               size(20)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONAM,DBF_STRING) {
+               prompt("One Name")
+               promptgroup(GUI_CLOCK)
+               size(20)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(LALM,DBF_USHORT) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_USHORT) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SVAL,DBF_ULONG) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuSimm)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(bo) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_ENUM) {
+               prompt("Current Value")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_OUTPUT)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("Seconds to Hold High")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(ZNAM,DBF_STRING) {
+               prompt("Zero Name")
+               promptgroup(GUI_DISPLAY)
+               size(20)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONAM,DBF_STRING) {
+               prompt("One Name")
+               promptgroup(GUI_DISPLAY)
+               size(20)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPVT,DBF_NOACCESS) {
+               prompt("Record Private")
+               special(SPC_NOMOD)
+               extra("void *  rpvt")
+               interest(4)
+       }
+       field(WDPT,DBF_NOACCESS) {
+               prompt("Watch Dog Timer ID")
+               special(SPC_NOMOD)
+               extra("void *   wdpt")
+               interest(4)
+       }
+       field(ZSV,DBF_MENU) {
+               prompt("Zero Error Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(OSV,DBF_MENU) {
+               prompt("One Error Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(COSV,DBF_MENU) {
+               prompt("Change of State Sevr")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RBV,DBF_ULONG) {
+               prompt("Readback Value")
+               special(SPC_NOMOD)
+       }
+       field(ORBV,DBF_ULONG) {
+               prompt("Prev Readback Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_USHORT) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_USHORT) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID outpt action")
+               promptgroup(GUI_OUTPUT)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_USHORT) {
+               prompt("INVALID output value")
+               promptgroup(GUI_OUTPUT)
+               interest(2)
+       }
+}
+recordtype(calc) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Result")
+               asl(ASL0)
+       }
+       field(CALC,DBF_STRING) {
+               prompt("Calculation")
+               initial("0")
+               promptgroup(GUI_CALC)
+               special(103)
+               size(40)
+               pp(TRUE)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input A")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input B")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input C")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input D")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input E")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input F")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input G")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input H")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input I")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input J")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input K")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input L")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units Name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Rng")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(A,DBF_DOUBLE) {
+               prompt("Value of Input A")
+               pp(TRUE)
+       }
+       field(B,DBF_DOUBLE) {
+               prompt("Value of Input B")
+               pp(TRUE)
+       }
+       field(C,DBF_DOUBLE) {
+               prompt("Value of Input C")
+               pp(TRUE)
+       }
+       field(D,DBF_DOUBLE) {
+               prompt("Value of Input D")
+               pp(TRUE)
+       }
+       field(E,DBF_DOUBLE) {
+               prompt("Value of Input E")
+               pp(TRUE)
+       }
+       field(F,DBF_DOUBLE) {
+               prompt("Value of Input F")
+               pp(TRUE)
+       }
+       field(G,DBF_DOUBLE) {
+               prompt("Value of Input G")
+               pp(TRUE)
+       }
+       field(H,DBF_DOUBLE) {
+               prompt("Value of Input H")
+               pp(TRUE)
+       }
+       field(I,DBF_DOUBLE) {
+               prompt("Value of Input I")
+               pp(TRUE)
+       }
+       field(J,DBF_DOUBLE) {
+               prompt("Value of Input J")
+               pp(TRUE)
+       }
+       field(K,DBF_DOUBLE) {
+               prompt("Value of Input K")
+               pp(TRUE)
+       }
+       field(L,DBF_DOUBLE) {
+               prompt("Value of Input L")
+               pp(TRUE)
+       }
+       field(LA,DBF_DOUBLE) {
+               prompt("Prev Value of A")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LB,DBF_DOUBLE) {
+               prompt("Prev Value of B")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LC,DBF_DOUBLE) {
+               prompt("Prev Value of C")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LD,DBF_DOUBLE) {
+               prompt("Prev Value of D")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LE,DBF_DOUBLE) {
+               prompt("Prev Value of E")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LF,DBF_DOUBLE) {
+               prompt("Prev Value of F")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LG,DBF_DOUBLE) {
+               prompt("Prev Value of G")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LH,DBF_DOUBLE) {
+               prompt("Prev Value of H")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LI,DBF_DOUBLE) {
+               prompt("Prev Value of I")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LJ,DBF_DOUBLE) {
+               prompt("Prev Value of J")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LK,DBF_DOUBLE) {
+               prompt("Prev Value of K")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LL,DBF_DOUBLE) {
+               prompt("Prev Value of L")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RPCL,DBF_NOACCESS) {
+               prompt("Reverse Polish Calc")
+               special(SPC_NOMOD)
+               extra("char     rpcl[INFIX_TO_POSTFIX_SIZE(40)]")
+               interest(4)
+       }
+}
+recordtype(calcout) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VERS,DBF_DOUBLE) {
+               prompt("Code Version")
+               initial("1")
+               special(SPC_NOMOD)
+       }
+       field(RPVT,DBF_NOACCESS) {
+               prompt("Record Private")
+               special(SPC_NOMOD)
+               extra("struct rpvtStruct *rpvt")
+               interest(4)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Result")
+               promptgroup(GUI_OUTPUT)
+               asl(ASL0)
+       }
+       field(PVAL,DBF_DOUBLE) {
+               prompt("Previous Value")
+       }
+       field(CALC,DBF_STRING) {
+               prompt("Calculation")
+               initial("0")
+               promptgroup(GUI_CALC)
+               special(103)
+               size(40)
+               pp(TRUE)
+       }
+       field(CLCV,DBF_LONG) {
+               prompt("CALC Valid")
+               interest(1)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input A")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input B")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input C")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input D")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input E")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input F")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input G")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input H")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input I")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input J")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input K")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input L")
+               promptgroup(GUI_CALC)
+               special(100)
+               interest(1)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_OUTPUT)
+               special(100)
+               interest(1)
+       }
+       field(INAV,DBF_MENU) {
+               prompt("INPA PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INBV,DBF_MENU) {
+               prompt("INPB PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INCV,DBF_MENU) {
+               prompt("INPC PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INDV,DBF_MENU) {
+               prompt("INPD PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INEV,DBF_MENU) {
+               prompt("INPE PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INFV,DBF_MENU) {
+               prompt("INPF PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INGV,DBF_MENU) {
+               prompt("INPG PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INHV,DBF_MENU) {
+               prompt("INPH PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INIV,DBF_MENU) {
+               prompt("INPI PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INJV,DBF_MENU) {
+               prompt("INPJ PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INKV,DBF_MENU) {
+               prompt("INPK PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(INLV,DBF_MENU) {
+               prompt("INPL PV Status")
+               initial("1")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(OUTV,DBF_MENU) {
+               prompt("OUT PV Status")
+               special(SPC_NOMOD)
+               menu(calcoutINAV)
+               interest(1)
+       }
+       field(OOPT,DBF_MENU) {
+               prompt("Output Execute Opt")
+               promptgroup(GUI_CALC)
+               menu(calcoutOOPT)
+               interest(1)
+       }
+       field(ODLY,DBF_DOUBLE) {
+               prompt("Output Execute Delay")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+               asl(ASL0)
+       }
+       field(DLYA,DBF_USHORT) {
+               prompt("Output Delay Active")
+               special(SPC_NOMOD)
+               asl(ASL0)
+       }
+       field(DOPT,DBF_MENU) {
+               prompt("Output Data Opt")
+               promptgroup(GUI_CALC)
+               menu(calcoutDOPT)
+               interest(1)
+       }
+       field(OCAL,DBF_STRING) {
+               prompt("Output Calculation")
+               initial("0")
+               promptgroup(GUI_CALC)
+               special(103)
+               size(40)
+               pp(TRUE)
+       }
+       field(OCLV,DBF_LONG) {
+               prompt("OCAL Valid")
+               interest(1)
+       }
+       field(OEVT,DBF_USHORT) {
+               prompt("Event To Issue")
+               promptgroup(GUI_CLOCK)
+               asl(ASL0)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID output action")
+               promptgroup(GUI_OUTPUT)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_DOUBLE) {
+               prompt("INVALID output value")
+               promptgroup(GUI_OUTPUT)
+               interest(2)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units Name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Rng")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(A,DBF_DOUBLE) {
+               prompt("Value of Input A")
+               pp(TRUE)
+       }
+       field(B,DBF_DOUBLE) {
+               prompt("Value of Input B")
+               pp(TRUE)
+       }
+       field(C,DBF_DOUBLE) {
+               prompt("Value of Input C")
+               pp(TRUE)
+       }
+       field(D,DBF_DOUBLE) {
+               prompt("Value of Input D")
+               pp(TRUE)
+       }
+       field(E,DBF_DOUBLE) {
+               prompt("Value of Input E")
+               pp(TRUE)
+       }
+       field(F,DBF_DOUBLE) {
+               prompt("Value of Input F")
+               pp(TRUE)
+       }
+       field(G,DBF_DOUBLE) {
+               prompt("Value of Input G")
+               pp(TRUE)
+       }
+       field(H,DBF_DOUBLE) {
+               prompt("Value of Input H")
+               pp(TRUE)
+       }
+       field(I,DBF_DOUBLE) {
+               prompt("Value of Input I")
+               pp(TRUE)
+       }
+       field(J,DBF_DOUBLE) {
+               prompt("Value of Input J")
+               pp(TRUE)
+       }
+       field(K,DBF_DOUBLE) {
+               prompt("Value of Input K")
+               pp(TRUE)
+       }
+       field(L,DBF_DOUBLE) {
+               prompt("Value of Input L")
+               pp(TRUE)
+       }
+       field(OVAL,DBF_DOUBLE) {
+               prompt("Output Value")
+               asl(ASL0)
+       }
+       field(LA,DBF_DOUBLE) {
+               prompt("Prev Value of A")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LB,DBF_DOUBLE) {
+               prompt("Prev Value of B")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LC,DBF_DOUBLE) {
+               prompt("Prev Value of C")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LD,DBF_DOUBLE) {
+               prompt("Prev Value of D")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LE,DBF_DOUBLE) {
+               prompt("Prev Value of E")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LF,DBF_DOUBLE) {
+               prompt("Prev Value of F")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LG,DBF_DOUBLE) {
+               prompt("Prev Value of G")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LH,DBF_DOUBLE) {
+               prompt("Prev Value of H")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LI,DBF_DOUBLE) {
+               prompt("Prev Value of I")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LJ,DBF_DOUBLE) {
+               prompt("Prev Value of J")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LK,DBF_DOUBLE) {
+               prompt("Prev Value of K")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LL,DBF_DOUBLE) {
+               prompt("Prev Value of L")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(POVL,DBF_DOUBLE) {
+               prompt("Prev Value of OVAL")
+               asl(ASL0)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RPCL,DBF_NOACCESS) {
+               prompt("Reverse Polish Calc")
+               special(SPC_NOMOD)
+               extra("char     rpcl[INFIX_TO_POSTFIX_SIZE(40)]")
+               interest(4)
+       }
+       field(ORPC,DBF_NOACCESS) {
+               prompt("Reverse Polish OCalc")
+               special(SPC_NOMOD)
+               extra("char     orpc[INFIX_TO_POSTFIX_SIZE(40)]")
+               interest(4)
+       }
+}
+recordtype(compress) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_NOACCESS) {
+               prompt("Value")
+               special(SPC_DBADDR)
+               extra("void *           val")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_COMPRESS)
+               interest(1)
+       }
+       field(RES,DBF_SHORT) {
+               prompt("Reset")
+               special(101)
+               interest(3)
+               asl(ASL0)
+       }
+       field(ALG,DBF_MENU) {
+               prompt("Compression Algorithm")
+               promptgroup(GUI_ALARMS)
+               special(101)
+               menu(compressALG)
+               interest(1)
+       }
+       field(NSAM,DBF_ULONG) {
+               prompt("Number of Values")
+               initial("1")
+               promptgroup(GUI_COMPRESS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(N,DBF_ULONG) {
+               prompt("N to 1 Compression")
+               initial("1")
+               promptgroup(GUI_COMPRESS)
+               special(101)
+               interest(1)
+       }
+       field(IHIL,DBF_DOUBLE) {
+               prompt("Init High Interest Lim")
+               promptgroup(GUI_COMPRESS)
+               interest(1)
+       }
+       field(ILIL,DBF_DOUBLE) {
+               prompt("Init Low Interest Lim")
+               promptgroup(GUI_COMPRESS)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("EngineeringUnits")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(OFF,DBF_ULONG) {
+               prompt("Offset")
+               special(SPC_NOMOD)
+       }
+       field(NUSE,DBF_ULONG) {
+               prompt("Number Used")
+               special(SPC_NOMOD)
+       }
+       field(BPTR,DBF_NOACCESS) {
+               prompt("Buffer Pointer")
+               special(SPC_NOMOD)
+               extra("double           *bptr")
+               interest(4)
+       }
+       field(SPTR,DBF_NOACCESS) {
+               prompt("Summing Buffer Ptr")
+               special(SPC_NOMOD)
+               extra("double           *sptr")
+               interest(4)
+       }
+       field(WPTR,DBF_NOACCESS) {
+               prompt("Working Buffer Ptr")
+               special(SPC_NOMOD)
+               extra("double           *wptr")
+               interest(4)
+       }
+       field(INPN,DBF_LONG) {
+               prompt("Number of elements in Working Buffer")
+               special(SPC_NOMOD)
+               interest(4)
+       }
+       field(CVB,DBF_DOUBLE) {
+               prompt("Compress Value Buffer")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(INX,DBF_ULONG) {
+               prompt("Compressed Array Inx")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(dfanout) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Desired Output")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(SELM,DBF_MENU) {
+               prompt("Select Mechanism")
+               promptgroup(GUI_LINKS)
+               menu(dfanoutSELM)
+               interest(1)
+       }
+       field(SELN,DBF_USHORT) {
+               prompt("Link Selection")
+               initial("1")
+               interest(1)
+       }
+       field(SELL,DBF_INLINK) {
+               prompt("Link Selection Loc")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(OUTA,DBF_OUTLINK) {
+               prompt("Output Spec A")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTB,DBF_OUTLINK) {
+               prompt("Output Spec B")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTC,DBF_OUTLINK) {
+               prompt("Output Spec C")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTD,DBF_OUTLINK) {
+               prompt("Output Spec D")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTE,DBF_OUTLINK) {
+               prompt("Output Spec E")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTF,DBF_OUTLINK) {
+               prompt("Output Spec F")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTG,DBF_OUTLINK) {
+               prompt("Output Spec G")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OUTH,DBF_OUTLINK) {
+               prompt("Output Spec H")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_OUTPUT)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(event) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_USHORT) {
+               prompt("Event Number To Post")
+               promptgroup(GUI_INPUTS)
+               asl(ASL0)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SVAL,DBF_USHORT) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(fanout) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_LONG) {
+               prompt("Used to trigger")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(SELM,DBF_MENU) {
+               prompt("Select Mechanism")
+               promptgroup(GUI_LINKS)
+               menu(fanoutSELM)
+               interest(1)
+       }
+       field(SELN,DBF_USHORT) {
+               prompt("Link Selection")
+               initial("1")
+               interest(1)
+       }
+       field(SELL,DBF_INLINK) {
+               prompt("Link Selection Loc")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK1,DBF_FWDLINK) {
+               prompt("Forward Link 1")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK2,DBF_FWDLINK) {
+               prompt("Forward Link 2")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK3,DBF_FWDLINK) {
+               prompt("Forward Link 3")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK4,DBF_FWDLINK) {
+               prompt("Forward Link 4")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK5,DBF_FWDLINK) {
+               prompt("Forward Link 5")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LNK6,DBF_FWDLINK) {
+               prompt("Forward Link 6")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+}
+recordtype(longin) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_LONG) {
+               prompt("Current value")
+               promptgroup(GUI_INPUTS)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_LONG) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_LONG) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_LONG) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_LONG) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_LONG) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_LONG) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_LONG) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_LONG) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_LONG) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_LONG) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_LONG) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_LONG) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SVAL,DBF_LONG) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(longout) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_LONG) {
+               prompt("Desired Output")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_OUTPUT)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(DRVH,DBF_LONG) {
+               prompt("Drive High Limit")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(DRVL,DBF_LONG) {
+               prompt("Drive Low Limit")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HOPR,DBF_LONG) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_LONG) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_LONG) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_LONG) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_LONG) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_LONG) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_LONG) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_LONG) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_LONG) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_LONG) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_LONG) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_LONG) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID output action")
+               promptgroup(GUI_OUTPUT)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_LONG) {
+               prompt("INVALID output value")
+               promptgroup(GUI_OUTPUT)
+               interest(2)
+       }
+}
+recordtype(mbbi) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_ENUM) {
+               prompt("Current Value")
+               promptgroup(GUI_INPUTS)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(NOBT,DBF_SHORT) {
+               prompt("Number of Bits")
+               promptgroup(GUI_MBB)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(ZRVL,DBF_ULONG) {
+               prompt("Zero Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ONVL,DBF_ULONG) {
+               prompt("One Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TWVL,DBF_ULONG) {
+               prompt("Two Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(THVL,DBF_ULONG) {
+               prompt("Three Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FRVL,DBF_ULONG) {
+               prompt("Four Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FVVL,DBF_ULONG) {
+               prompt("Five Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(SXVL,DBF_ULONG) {
+               prompt("Six Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(SVVL,DBF_ULONG) {
+               prompt("Seven Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(EIVL,DBF_ULONG) {
+               prompt("Eight Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(NIVL,DBF_ULONG) {
+               prompt("Nine Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TEVL,DBF_ULONG) {
+               prompt("Ten Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ELVL,DBF_ULONG) {
+               prompt("Eleven Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TVVL,DBF_ULONG) {
+               prompt("Twelve Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TTVL,DBF_ULONG) {
+               prompt("Thirteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FTVL,DBF_ULONG) {
+               prompt("Fourteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FFVL,DBF_ULONG) {
+               prompt("Fifteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ZRST,DBF_STRING) {
+               prompt("Zero String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONST,DBF_STRING) {
+               prompt("One String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TWST,DBF_STRING) {
+               prompt("Two String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(THST,DBF_STRING) {
+               prompt("Three String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FRST,DBF_STRING) {
+               prompt("Four String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FVST,DBF_STRING) {
+               prompt("Five String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SXST,DBF_STRING) {
+               prompt("Six String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SVST,DBF_STRING) {
+               prompt("Seven String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EIST,DBF_STRING) {
+               prompt("Eight String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(NIST,DBF_STRING) {
+               prompt("Nine String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TEST,DBF_STRING) {
+               prompt("Ten String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ELST,DBF_STRING) {
+               prompt("Eleven String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TVST,DBF_STRING) {
+               prompt("Twelve String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TTST,DBF_STRING) {
+               prompt("Thirteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FTST,DBF_STRING) {
+               prompt("Fourteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FFST,DBF_STRING) {
+               prompt("Fifteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ZRSV,DBF_MENU) {
+               prompt("State Zero Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONSV,DBF_MENU) {
+               prompt("State One Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TWSV,DBF_MENU) {
+               prompt("State Two Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(THSV,DBF_MENU) {
+               prompt("State Three Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FRSV,DBF_MENU) {
+               prompt("State Four Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FVSV,DBF_MENU) {
+               prompt("State Five Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SXSV,DBF_MENU) {
+               prompt("State Six Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SVSV,DBF_MENU) {
+               prompt("State Seven Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EISV,DBF_MENU) {
+               prompt("State Eight Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(NISV,DBF_MENU) {
+               prompt("State Nine Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TESV,DBF_MENU) {
+               prompt("State Ten Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ELSV,DBF_MENU) {
+               prompt("State Eleven Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TVSV,DBF_MENU) {
+               prompt("State Twelve Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TTSV,DBF_MENU) {
+               prompt("State Thirteen Sevr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FTSV,DBF_MENU) {
+               prompt("State Fourteen Sevr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FFSV,DBF_MENU) {
+               prompt("State Fifteen Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(UNSV,DBF_MENU) {
+               prompt("Unknown State Severity")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(COSV,DBF_MENU) {
+               prompt("Change of State Svr")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("Prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(MLST,DBF_USHORT) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_USHORT) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SDEF,DBF_SHORT) {
+               prompt("States Defined")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SHFT,DBF_USHORT) {
+               prompt("Shift")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SVAL,DBF_ULONG) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuSimm)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(mbbiDirect) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_USHORT) {
+               prompt("Current Value")
+               promptgroup(GUI_INPUTS)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(NOBT,DBF_SHORT) {
+               prompt("Number of Bits")
+               promptgroup(GUI_MBB)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("Prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(MLST,DBF_USHORT) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_USHORT) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SDEF,DBF_SHORT) {
+               prompt("States Defined")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SHFT,DBF_USHORT) {
+               prompt("Shift")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SVAL,DBF_ULONG) {
+               prompt("Simulation Value")
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuSimm)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(B0,DBF_UCHAR) {
+               prompt("Bit 0")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B1,DBF_UCHAR) {
+               prompt("Bit 1")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B2,DBF_UCHAR) {
+               prompt("Bit 2")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B3,DBF_UCHAR) {
+               prompt("Bit 3")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B4,DBF_UCHAR) {
+               prompt("Bit 4")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B5,DBF_UCHAR) {
+               prompt("Bit 5")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B6,DBF_UCHAR) {
+               prompt("Bit 6")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B7,DBF_UCHAR) {
+               prompt("Bit 7")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B8,DBF_UCHAR) {
+               prompt("Bit 8")
+               pp(TRUE)
+               interest(1)
+       }
+       field(B9,DBF_UCHAR) {
+               prompt("Bit 9")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BA,DBF_UCHAR) {
+               prompt("Bit A")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BB,DBF_UCHAR) {
+               prompt("Bit B")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BC,DBF_UCHAR) {
+               prompt("Bit C")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BD,DBF_UCHAR) {
+               prompt("Bit D")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BE,DBF_UCHAR) {
+               prompt("Bit E")
+               pp(TRUE)
+               interest(1)
+       }
+       field(BF,DBF_UCHAR) {
+               prompt("Bit F")
+               pp(TRUE)
+               interest(1)
+       }
+}
+recordtype(mbbo) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_ENUM) {
+               prompt("Desired Value")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_DBADDR)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_MBB)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(NOBT,DBF_SHORT) {
+               prompt("Number of Bits")
+               promptgroup(GUI_MBB)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(ZRVL,DBF_ULONG) {
+               prompt("Zero Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ONVL,DBF_ULONG) {
+               prompt("One Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TWVL,DBF_ULONG) {
+               prompt("Two Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(THVL,DBF_ULONG) {
+               prompt("Three Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FRVL,DBF_ULONG) {
+               prompt("Four Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FVVL,DBF_ULONG) {
+               prompt("Five Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(SXVL,DBF_ULONG) {
+               prompt("Six Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(SVVL,DBF_ULONG) {
+               prompt("Seven Value")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(EIVL,DBF_ULONG) {
+               prompt("Eight Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(NIVL,DBF_ULONG) {
+               prompt("Nine Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TEVL,DBF_ULONG) {
+               prompt("Ten Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ELVL,DBF_ULONG) {
+               prompt("Eleven Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TVVL,DBF_ULONG) {
+               prompt("Twelve Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(TTVL,DBF_ULONG) {
+               prompt("Thirteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FTVL,DBF_ULONG) {
+               prompt("Fourteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(FFVL,DBF_ULONG) {
+               prompt("Fifteen Value")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               base(HEX)
+               interest(1)
+       }
+       field(ZRST,DBF_STRING) {
+               prompt("Zero String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONST,DBF_STRING) {
+               prompt("One String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TWST,DBF_STRING) {
+               prompt("Two String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(THST,DBF_STRING) {
+               prompt("Three String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FRST,DBF_STRING) {
+               prompt("Four String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FVST,DBF_STRING) {
+               prompt("Five String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SXST,DBF_STRING) {
+               prompt("Six String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SVST,DBF_STRING) {
+               prompt("Seven String")
+               promptgroup(GUI_BITS1)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EIST,DBF_STRING) {
+               prompt("Eight String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(NIST,DBF_STRING) {
+               prompt("Nine String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TEST,DBF_STRING) {
+               prompt("Ten String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ELST,DBF_STRING) {
+               prompt("Eleven String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TVST,DBF_STRING) {
+               prompt("Twelve String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TTST,DBF_STRING) {
+               prompt("Thirteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FTST,DBF_STRING) {
+               prompt("Fourteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FFST,DBF_STRING) {
+               prompt("Fifteen String")
+               promptgroup(GUI_BITS2)
+               special(100)
+               size(16)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ZRSV,DBF_MENU) {
+               prompt("State Zero Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ONSV,DBF_MENU) {
+               prompt("State One Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TWSV,DBF_MENU) {
+               prompt("State Two Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(THSV,DBF_MENU) {
+               prompt("State Three Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FRSV,DBF_MENU) {
+               prompt("State Four Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FVSV,DBF_MENU) {
+               prompt("State Five Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SXSV,DBF_MENU) {
+               prompt("State Six Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(SVSV,DBF_MENU) {
+               prompt("State Seven Severity")
+               promptgroup(GUI_BITS1)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(EISV,DBF_MENU) {
+               prompt("State Eight Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(NISV,DBF_MENU) {
+               prompt("State Nine Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TESV,DBF_MENU) {
+               prompt("State Ten Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(ELSV,DBF_MENU) {
+               prompt("State Eleven Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TVSV,DBF_MENU) {
+               prompt("State Twelve Severity")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TTSV,DBF_MENU) {
+               prompt("State Thirteen Sevr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FTSV,DBF_MENU) {
+               prompt("State Fourteen Sevr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(FFSV,DBF_MENU) {
+               prompt("State Fifteen Sevr")
+               promptgroup(GUI_BITS2)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(UNSV,DBF_MENU) {
+               prompt("Unknown State Sevr")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(COSV,DBF_MENU) {
+               prompt("Change of State Sevr")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("Prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RBV,DBF_ULONG) {
+               prompt("Readback Value")
+               special(SPC_NOMOD)
+       }
+       field(ORBV,DBF_ULONG) {
+               prompt("Prev Readback Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(MLST,DBF_USHORT) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_USHORT) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SDEF,DBF_SHORT) {
+               prompt("States Defined")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SHFT,DBF_USHORT) {
+               prompt("Shift")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID outpt action")
+               promptgroup(GUI_MBB)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_USHORT) {
+               prompt("INVALID output value")
+               promptgroup(GUI_MBB)
+               interest(2)
+       }
+}
+recordtype(mbboDirect) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_USHORT) {
+               prompt("Word")
+               promptgroup(GUI_OUTPUT)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_MBB)
+               special(101)
+               menu(menuOmsl)
+               pp(TRUE)
+               interest(1)
+       }
+       field(NOBT,DBF_SHORT) {
+               prompt("Number of Bits")
+               promptgroup(GUI_MBB)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(B0,DBF_UCHAR) {
+               prompt("Bit 0")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B1,DBF_UCHAR) {
+               prompt("Bit 1")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B2,DBF_UCHAR) {
+               prompt("Bit 2")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B3,DBF_UCHAR) {
+               prompt("Bit 3")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B4,DBF_UCHAR) {
+               prompt("Bit 4")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B5,DBF_UCHAR) {
+               prompt("Bit 5")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B6,DBF_UCHAR) {
+               prompt("Bit 6")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B7,DBF_UCHAR) {
+               prompt("Bit 7")
+               promptgroup(GUI_BITS1)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B8,DBF_UCHAR) {
+               prompt("Bit 8")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(B9,DBF_UCHAR) {
+               prompt("Bit 9")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BA,DBF_UCHAR) {
+               prompt("Bit 10")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BB,DBF_UCHAR) {
+               prompt("Bit 11")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BC,DBF_UCHAR) {
+               prompt("Bit 12")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BD,DBF_UCHAR) {
+               prompt("Bit 13")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BE,DBF_UCHAR) {
+               prompt("Bit 14")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(BF,DBF_UCHAR) {
+               prompt("Bit 15")
+               promptgroup(GUI_BITS2)
+               special(100)
+               pp(TRUE)
+               interest(1)
+       }
+       field(RVAL,DBF_ULONG) {
+               prompt("Raw Value")
+               special(SPC_NOMOD)
+               pp(TRUE)
+       }
+       field(ORAW,DBF_ULONG) {
+               prompt("Prev Raw Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(RBV,DBF_ULONG) {
+               prompt("Readback Value")
+               special(SPC_NOMOD)
+       }
+       field(ORBV,DBF_ULONG) {
+               prompt("Prev Readback Value")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MASK,DBF_ULONG) {
+               prompt("Hardware Mask")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(MLST,DBF_ULONG) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_ULONG) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(SHFT,DBF_ULONG) {
+               prompt("Shift")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_MBB)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_MBB)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID outpt action")
+               promptgroup(GUI_MBB)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_USHORT) {
+               prompt("INVALID output value")
+               promptgroup(GUI_MBB)
+               interest(2)
+       }
+}
+recordtype(permissive) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(LABL,DBF_STRING) {
+               prompt("Button Label")
+               promptgroup(GUI_DISPLAY)
+               size(20)
+               pp(TRUE)
+               interest(1)
+       }
+       field(VAL,DBF_USHORT) {
+               prompt("Status")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OVAL,DBF_USHORT) {
+               prompt("Old Status")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(WFLG,DBF_USHORT) {
+               prompt("Wait Flag")
+               pp(TRUE)
+       }
+       field(OFLG,DBF_USHORT) {
+               prompt("Old Flag")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(sel) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Result")
+               special(SPC_NOMOD)
+               asl(ASL0)
+       }
+       field(SELM,DBF_MENU) {
+               prompt("Select Mechanism")
+               promptgroup(GUI_INPUTS)
+               menu(selSELM)
+       }
+       field(SELN,DBF_USHORT) {
+               prompt("Index value")
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(NVL,DBF_INLINK) {
+               prompt("Index Value Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input A")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input B")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input C")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input D")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input E")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input F")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input G")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input H")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input I")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input J")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input K")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input L")
+               promptgroup(GUI_SELECT)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units Name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Rng")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(A,DBF_DOUBLE) {
+               prompt("Value of Input A")
+               pp(TRUE)
+       }
+       field(B,DBF_DOUBLE) {
+               prompt("Value of Input B")
+               pp(TRUE)
+       }
+       field(C,DBF_DOUBLE) {
+               prompt("Value of Input C")
+               pp(TRUE)
+       }
+       field(D,DBF_DOUBLE) {
+               prompt("Value of Input D")
+               pp(TRUE)
+       }
+       field(E,DBF_DOUBLE) {
+               prompt("Value of Input E")
+               pp(TRUE)
+       }
+       field(F,DBF_DOUBLE) {
+               prompt("Value of Input F")
+               pp(TRUE)
+       }
+       field(G,DBF_DOUBLE) {
+               prompt("Value of Input G")
+               pp(TRUE)
+       }
+       field(H,DBF_DOUBLE) {
+               prompt("Value of Input H")
+               pp(TRUE)
+       }
+       field(I,DBF_DOUBLE) {
+               prompt("Value of Input I")
+               pp(TRUE)
+       }
+       field(J,DBF_DOUBLE) {
+               prompt("Value of Input J")
+               pp(TRUE)
+       }
+       field(K,DBF_DOUBLE) {
+               prompt("Value of Input K")
+               pp(TRUE)
+       }
+       field(L,DBF_DOUBLE) {
+               prompt("Value of Input L")
+               pp(TRUE)
+       }
+       field(LA,DBF_DOUBLE) {
+               prompt("Prev Value of A")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LB,DBF_DOUBLE) {
+               prompt("Prev Value of B")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LC,DBF_DOUBLE) {
+               prompt("Prev Value of C")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LD,DBF_DOUBLE) {
+               prompt("Prev Value of D")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LE,DBF_DOUBLE) {
+               prompt("Prev Value of E")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LF,DBF_DOUBLE) {
+               prompt("Prev Value of F")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LG,DBF_DOUBLE) {
+               prompt("Prev Value of G")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LH,DBF_DOUBLE) {
+               prompt("Prev Value of H")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LI,DBF_DOUBLE) {
+               prompt("Prev Value of I")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LJ,DBF_DOUBLE) {
+               prompt("Prev Value of J")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LK,DBF_DOUBLE) {
+               prompt("Prev Value of K")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LL,DBF_DOUBLE) {
+               prompt("Prev Value of L")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(NLST,DBF_USHORT) {
+               prompt("Last Index Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(seq) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_LONG) {
+               prompt("Used to trigger")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(SELM,DBF_MENU) {
+               prompt("Select Mechanism")
+               promptgroup(GUI_INPUTS)
+               menu(seqSELM)
+               interest(1)
+       }
+       field(SELN,DBF_USHORT) {
+               prompt("Link Selection")
+               initial("1")
+               interest(1)
+       }
+       field(SELL,DBF_INLINK) {
+               prompt("Link Selection Loc")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(DLY1,DBF_DOUBLE) {
+               prompt("Delay 1")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DOL1,DBF_INLINK) {
+               prompt("Input link1")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DO1,DBF_DOUBLE) {
+               prompt("Constant input 1")
+               interest(1)
+       }
+       field(LNK1,DBF_OUTLINK) {
+               prompt("Output Link 1")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DLY2,DBF_DOUBLE) {
+               prompt("Delay 2")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DOL2,DBF_INLINK) {
+               prompt("Input link 2")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DO2,DBF_DOUBLE) {
+               prompt("Constant input 2")
+               interest(1)
+       }
+       field(LNK2,DBF_OUTLINK) {
+               prompt("Output Link 2")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DLY3,DBF_DOUBLE) {
+               prompt("Delay 3")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DOL3,DBF_INLINK) {
+               prompt("Input link 3")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DO3,DBF_DOUBLE) {
+               prompt("Constant input 3")
+               interest(1)
+       }
+       field(LNK3,DBF_OUTLINK) {
+               prompt("Output Link 3")
+               promptgroup(GUI_SEQ1)
+               interest(1)
+       }
+       field(DLY4,DBF_DOUBLE) {
+               prompt("Delay 4")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DOL4,DBF_INLINK) {
+               prompt("Input link 4")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DO4,DBF_DOUBLE) {
+               prompt("Constant input 4")
+               interest(1)
+       }
+       field(LNK4,DBF_OUTLINK) {
+               prompt("Output Link 4")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DLY5,DBF_DOUBLE) {
+               prompt("Delay 5")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DOL5,DBF_INLINK) {
+               prompt("Input link 5")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DO5,DBF_DOUBLE) {
+               prompt("Constant input 5")
+               interest(1)
+       }
+       field(LNK5,DBF_OUTLINK) {
+               prompt("Output Link 5")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DLY6,DBF_DOUBLE) {
+               prompt("Delay 6")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DOL6,DBF_INLINK) {
+               prompt("Input link 6")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DO6,DBF_DOUBLE) {
+               prompt("Constant input 6")
+               interest(1)
+       }
+       field(LNK6,DBF_OUTLINK) {
+               prompt("Output Link 6")
+               promptgroup(GUI_SEQ2)
+               interest(1)
+       }
+       field(DLY7,DBF_DOUBLE) {
+               prompt("Delay 7")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DOL7,DBF_INLINK) {
+               prompt("Input link 7")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DO7,DBF_DOUBLE) {
+               prompt("Constant input 7")
+               interest(1)
+       }
+       field(LNK7,DBF_OUTLINK) {
+               prompt("Output Link 7")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DLY8,DBF_DOUBLE) {
+               prompt("Delay 8")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DOL8,DBF_INLINK) {
+               prompt("Input link 8")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DO8,DBF_DOUBLE) {
+               prompt("Constant input 8")
+               interest(1)
+       }
+       field(LNK8,DBF_OUTLINK) {
+               prompt("Output Link 8")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DLY9,DBF_DOUBLE) {
+               prompt("Delay 9")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DOL9,DBF_INLINK) {
+               prompt("Input link 9")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DO9,DBF_DOUBLE) {
+               prompt("Constant input 9")
+               interest(1)
+       }
+       field(LNK9,DBF_OUTLINK) {
+               prompt("Output Link 9")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DLYA,DBF_DOUBLE) {
+               prompt("Delay 10")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DOLA,DBF_INLINK) {
+               prompt("Input link 10")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+       field(DOA,DBF_DOUBLE) {
+               prompt("Constant input 10")
+               interest(1)
+       }
+       field(LNKA,DBF_OUTLINK) {
+               prompt("Output Link 10")
+               promptgroup(GUI_SEQ3)
+               interest(1)
+       }
+}
+recordtype(state) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_STRING) {
+               prompt("Value")
+               promptgroup(GUI_DISPLAY)
+               size(20)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OVAL,DBF_STRING) {
+               prompt("Prev Value")
+               special(SPC_NOMOD)
+               size(20)
+               interest(3)
+       }
+}
+recordtype(stringin) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_STRING) {
+               prompt("Current Value")
+               promptgroup(GUI_INPUTS)
+               size(40)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OVAL,DBF_STRING) {
+               prompt("Previous Value")
+               special(SPC_NOMOD)
+               size(40)
+               interest(3)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(MPST,DBF_MENU) {
+               prompt("Post Value Monitors")
+               promptgroup(GUI_DISPLAY)
+               menu(stringinPOST)
+               interest(1)
+       }
+       field(APST,DBF_MENU) {
+               prompt("Post Archive Monitors")
+               promptgroup(GUI_DISPLAY)
+               menu(stringinPOST)
+               interest(1)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SVAL,DBF_STRING) {
+               prompt("Simulation Value")
+               size(40)
+               pp(TRUE)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(stringout) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_STRING) {
+               prompt("Current Value")
+               promptgroup(GUI_OUTPUT)
+               size(40)
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(OVAL,DBF_STRING) {
+               prompt("Previous Value")
+               special(SPC_NOMOD)
+               size(40)
+               interest(3)
+       }
+       field(DOL,DBF_INLINK) {
+               prompt("Desired Output Loc")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(OMSL,DBF_MENU) {
+               prompt("Output Mode Select")
+               promptgroup(GUI_OUTPUT)
+               menu(menuOmsl)
+               interest(1)
+       }
+       field(OUT,DBF_OUTLINK) {
+               prompt("Output Specification")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+       }
+       field(MPST,DBF_MENU) {
+               prompt("Post Value Monitors")
+               promptgroup(GUI_DISPLAY)
+               menu(stringoutPOST)
+               interest(1)
+       }
+       field(APST,DBF_MENU) {
+               prompt("Post Archive Monitors")
+               promptgroup(GUI_DISPLAY)
+               menu(stringoutPOST)
+               interest(1)
+       }
+       field(SIOL,DBF_OUTLINK) {
+               prompt("Sim Output Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(IVOA,DBF_MENU) {
+               prompt("INVALID output action")
+               promptgroup(GUI_OUTPUT)
+               menu(menuIvoa)
+               interest(2)
+       }
+       field(IVOV,DBF_STRING) {
+               prompt("INVALID output value")
+               promptgroup(GUI_OUTPUT)
+               size(40)
+               interest(2)
+       }
+}
+recordtype(sub) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Result")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(INAM,DBF_STRING) {
+               prompt("Init Routine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(SNAM,DBF_STRING) {
+               prompt("Subroutine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(SADR,DBF_NOACCESS) {
+               prompt("Subroutine Address")
+               special(SPC_NOMOD)
+               extra("void *           sadr")
+               interest(4)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input A")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input B")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input C")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input D")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input E")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input F")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input G")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input H")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input I")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input J")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input K")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input L")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Units Name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Rng")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_DOUBLE) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_DOUBLE) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_DOUBLE) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_DOUBLE) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(BRSV,DBF_MENU) {
+               prompt("Bad Return Severity")
+               promptgroup(GUI_SUB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(A,DBF_DOUBLE) {
+               prompt("Value of Input A")
+               pp(TRUE)
+       }
+       field(B,DBF_DOUBLE) {
+               prompt("Value of Input B")
+               pp(TRUE)
+       }
+       field(C,DBF_DOUBLE) {
+               prompt("Value of Input C")
+               pp(TRUE)
+       }
+       field(D,DBF_DOUBLE) {
+               prompt("Value of Input D")
+               pp(TRUE)
+       }
+       field(E,DBF_DOUBLE) {
+               prompt("Value of Input E")
+               pp(TRUE)
+       }
+       field(F,DBF_DOUBLE) {
+               prompt("Value of Input F")
+               pp(TRUE)
+       }
+       field(G,DBF_DOUBLE) {
+               prompt("Value of Input G")
+               pp(TRUE)
+       }
+       field(H,DBF_DOUBLE) {
+               prompt("Value of Input H")
+               pp(TRUE)
+       }
+       field(I,DBF_DOUBLE) {
+               prompt("Value of Input I")
+               pp(TRUE)
+       }
+       field(J,DBF_DOUBLE) {
+               prompt("Value of Input J")
+               pp(TRUE)
+       }
+       field(K,DBF_DOUBLE) {
+               prompt("Value of Input K")
+               pp(TRUE)
+       }
+       field(L,DBF_DOUBLE) {
+               prompt("Value of Input L")
+               pp(TRUE)
+       }
+       field(LA,DBF_DOUBLE) {
+               prompt("Prev Value of A")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LB,DBF_DOUBLE) {
+               prompt("Prev Value of B")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LC,DBF_DOUBLE) {
+               prompt("Prev Value of C")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LD,DBF_DOUBLE) {
+               prompt("Prev Value of D")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LE,DBF_DOUBLE) {
+               prompt("Prev Value of E")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LF,DBF_DOUBLE) {
+               prompt("Prev Value of F")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LG,DBF_DOUBLE) {
+               prompt("Prev Value of G")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LH,DBF_DOUBLE) {
+               prompt("Prev Value of H")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LI,DBF_DOUBLE) {
+               prompt("Prev Value of I")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LJ,DBF_DOUBLE) {
+               prompt("Prev Value of J")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LK,DBF_DOUBLE) {
+               prompt("Prev Value of K")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LL,DBF_DOUBLE) {
+               prompt("Prev Value of L")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Value Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(subArray) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_NOACCESS) {
+               prompt("Value")
+               special(SPC_DBADDR)
+               extra("void *           val")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_COMMON)
+               interest(1)
+       }
+       field(FTVL,DBF_MENU) {
+               prompt("Field Type of Value")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_BITS1)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units Name")
+               promptgroup(GUI_BITS2)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_CALC)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_CLOCK)
+               interest(1)
+       }
+       field(MALM,DBF_ULONG) {
+               prompt("Maximum Elements  ")
+               initial("1")
+               promptgroup(GUI_CLOCK)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NELM,DBF_ULONG) {
+               prompt("Number of Elements")
+               initial("1")
+               promptgroup(GUI_COMPRESS)
+               pp(TRUE)
+       }
+       field(INDX,DBF_ULONG) {
+               prompt("Substring Index")
+               promptgroup(GUI_CONVERT)
+               pp(TRUE)
+       }
+       field(BUSY,DBF_SHORT) {
+               prompt("Busy Indicator")
+               special(SPC_NOMOD)
+       }
+       field(NORD,DBF_LONG) {
+               prompt("Number elements read")
+               special(SPC_NOMOD)
+       }
+       field(BPTR,DBF_NOACCESS) {
+               prompt("Buffer Pointer")
+               special(SPC_NOMOD)
+               extra("void *           bptr")
+               interest(4)
+       }
+}
+recordtype(waveform) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_NOACCESS) {
+               prompt("Value")
+               special(SPC_DBADDR)
+               extra("void *           val")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(RARM,DBF_SHORT) {
+               prompt("Rearm the waveform")
+               promptgroup(GUI_WAVE)
+               pp(TRUE)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units Name")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_DOUBLE) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_DOUBLE) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(NELM,DBF_ULONG) {
+               prompt("Number of Elements")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(FTVL,DBF_MENU) {
+               prompt("Field Type of Value")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(BUSY,DBF_SHORT) {
+               prompt("Busy Indicator")
+               special(SPC_NOMOD)
+       }
+       field(NORD,DBF_ULONG) {
+               prompt("Number elements read")
+               special(SPC_NOMOD)
+       }
+       field(BPTR,DBF_NOACCESS) {
+               prompt("Buffer Pointer")
+               special(SPC_NOMOD)
+               extra("void *           bptr")
+               interest(4)
+       }
+       field(SIOL,DBF_INLINK) {
+               prompt("Sim Input Specifctn")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIML,DBF_INLINK) {
+               prompt("Sim Mode Location")
+               promptgroup(GUI_INPUTS)
+               interest(1)
+       }
+       field(SIMM,DBF_MENU) {
+               prompt("Simulation Mode")
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(SIMS,DBF_MENU) {
+               prompt("Sim mode Alarm Svrty")
+               promptgroup(GUI_INPUTS)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+}
+recordtype(xxx) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VAL,DBF_DOUBLE) {
+               prompt("Current EGU Value")
+               pp(TRUE)
+               asl(ASL0)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units")
+               promptgroup(GUI_DISPLAY)
+               size(16)
+               interest(1)
+       }
+       field(HOPR,DBF_FLOAT) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_FLOAT) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_FLOAT) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_FLOAT) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_FLOAT) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_FLOAT) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
+recordtype(genSub) {
+       field(NAME,DBF_STRING) {
+               prompt("Record Name")
+               special(SPC_NOMOD)
+               size(61)
+       }
+       field(DESC,DBF_STRING) {
+               prompt("Descriptor")
+               promptgroup(GUI_COMMON)
+               size(29)
+       }
+       field(ASG,DBF_STRING) {
+               prompt("Access Security Group")
+               promptgroup(GUI_COMMON)
+               special(SPC_AS)
+               size(29)
+       }
+       field(SCAN,DBF_MENU) {
+               prompt("Scan Mechanism")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuScan)
+               interest(1)
+       }
+       field(PINI,DBF_MENU) {
+               prompt("Process at iocInit")
+               promptgroup(GUI_SCAN)
+               menu(menuYesNo)
+               interest(1)
+       }
+       field(PHAS,DBF_SHORT) {
+               prompt("Scan Phase")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(EVNT,DBF_SHORT) {
+               prompt("Event Number")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               interest(1)
+       }
+       field(TSE,DBF_SHORT) {
+               prompt("Time Stamp Event")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(TSEL,DBF_INLINK) {
+               prompt("Time Stamp Link")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(DTYP,DBF_DEVICE) {
+               prompt("Device Type")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(DISV,DBF_SHORT) {
+               prompt("Disable Value")
+               initial("1")
+               promptgroup(GUI_SCAN)
+       }
+       field(DISA,DBF_SHORT) {
+               prompt("Disable")
+       }
+       field(SDIS,DBF_INLINK) {
+               prompt("Scanning Disable")
+               promptgroup(GUI_SCAN)
+               interest(1)
+       }
+       field(MLOK,DBF_NOACCESS) {
+               prompt("Monitor lock")
+               special(SPC_NOMOD)
+               extra("epicsMutexId     mlok")
+               interest(4)
+       }
+       field(MLIS,DBF_NOACCESS) {
+               prompt("Monitor List")
+               special(SPC_NOMOD)
+               extra("ELLLIST          mlis")
+               interest(4)
+       }
+       field(DISP,DBF_UCHAR) {
+               prompt("Disable putField")
+       }
+       field(PROC,DBF_UCHAR) {
+               prompt("Force Processing")
+               pp(TRUE)
+               interest(3)
+       }
+       field(STAT,DBF_MENU) {
+               prompt("Alarm Status")
+               initial("UDF")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+       }
+       field(SEVR,DBF_MENU) {
+               prompt("Alarm Severity")
+               initial("INVALID")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+       }
+       field(NSTA,DBF_MENU) {
+               prompt("New Alarm Status")
+               special(SPC_NOMOD)
+               menu(menuAlarmStat)
+               interest(2)
+       }
+       field(NSEV,DBF_MENU) {
+               prompt("New Alarm Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKS,DBF_MENU) {
+               prompt("Alarm Ack Severity")
+               special(SPC_NOMOD)
+               menu(menuAlarmSevr)
+               interest(2)
+       }
+       field(ACKT,DBF_MENU) {
+               prompt("Alarm Ack Transient")
+               initial("YES")
+               promptgroup(GUI_ALARMS)
+               special(SPC_NOMOD)
+               menu(menuYesNo)
+               interest(2)
+       }
+       field(DISS,DBF_MENU) {
+               prompt("Disable Alarm Sevrty")
+               promptgroup(GUI_SCAN)
+               menu(menuAlarmSevr)
+               interest(1)
+       }
+       field(LCNT,DBF_UCHAR) {
+               prompt("Lock Count")
+               special(SPC_NOMOD)
+               interest(2)
+       }
+       field(PACT,DBF_UCHAR) {
+               prompt("Record active")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PUTF,DBF_UCHAR) {
+               prompt("dbPutField process")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(RPRO,DBF_UCHAR) {
+               prompt("Reprocess ")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(ASP,DBF_NOACCESS) {
+               prompt("Access Security Pvt")
+               special(SPC_NOMOD)
+               extra("void             *asp")
+               interest(4)
+       }
+       field(PPN,DBF_NOACCESS) {
+               prompt("addr of PUTNOTIFY")
+               special(SPC_NOMOD)
+               extra("struct putNotify *ppn")
+               interest(4)
+       }
+       field(PPNR,DBF_NOACCESS) {
+               prompt("pputNotifyRecord")
+               special(SPC_NOMOD)
+               extra("struct putNotifyRecord *ppnr")
+               interest(4)
+       }
+       field(SPVT,DBF_NOACCESS) {
+               prompt("Scan Private")
+               special(SPC_NOMOD)
+               extra("struct scan_element *spvt")
+               interest(4)
+       }
+       field(RSET,DBF_NOACCESS) {
+               prompt("Address of RSET")
+               special(SPC_NOMOD)
+               extra("struct rset      *rset")
+               interest(4)
+       }
+       field(DSET,DBF_NOACCESS) {
+               prompt("DSET address")
+               special(SPC_NOMOD)
+               extra("struct dset      *dset")
+               interest(4)
+       }
+       field(DPVT,DBF_NOACCESS) {
+               prompt("Device Private")
+               special(SPC_NOMOD)
+               extra("void             *dpvt")
+               interest(4)
+       }
+       field(RDES,DBF_NOACCESS) {
+               prompt("Address of dbRecordType")
+               special(SPC_NOMOD)
+               extra("struct dbRecordType *rdes")
+               interest(4)
+       }
+       field(LSET,DBF_NOACCESS) {
+               prompt("Lock Set")
+               special(SPC_NOMOD)
+               extra("struct lockRecord *lset")
+               interest(4)
+       }
+       field(PRIO,DBF_MENU) {
+               prompt("Scheduling Priority")
+               promptgroup(GUI_SCAN)
+               special(SPC_SCAN)
+               menu(menuPriority)
+               interest(1)
+       }
+       field(TPRO,DBF_UCHAR) {
+               prompt("Trace Processing")
+       }
+       field(BKPT,DBF_NOACCESS) {
+               prompt("Break Point")
+               special(SPC_NOMOD)
+               extra("char bkpt")
+               interest(1)
+       }
+       field(UDF,DBF_UCHAR) {
+               prompt("Undefined")
+               initial("1")
+               promptgroup(GUI_COMMON)
+               pp(TRUE)
+               interest(1)
+       }
+       field(TIME,DBF_NOACCESS) {
+               prompt("Time")
+               special(SPC_NOMOD)
+               extra("epicsTimeStamp   time")
+               interest(2)
+       }
+       field(FLNK,DBF_FWDLINK) {
+               prompt("Forward Process Link")
+               promptgroup(GUI_LINKS)
+               interest(1)
+       }
+       field(VERS,DBF_DOUBLE) {
+               prompt("Version Number")
+               promptgroup(GUI_DISPLAY)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(VAL,DBF_LONG) {
+               prompt("Subr. return value")
+               asl(ASL0)
+       }
+       field(OVAL,DBF_LONG) {
+               prompt("Old return value")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(SADR,DBF_LONG) {
+               prompt("Subroutine Address")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OSAD,DBF_LONG) {
+               prompt("Old Subr. Address")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(LFLG,DBF_MENU) {
+               prompt("Link Flag")
+               promptgroup(GUI_OUTPUT)
+               menu(genSubLFLG)
+               interest(1)
+       }
+       field(EFLG,DBF_MENU) {
+               prompt("Event Flag")
+               promptgroup(GUI_OUTPUT)
+               menu(genSubEFLG)
+               interest(1)
+       }
+       field(SUBL,DBF_INLINK) {
+               prompt("Subroutine Input Link")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INAM,DBF_STRING) {
+               prompt("Init Routine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(SNAM,DBF_STRING) {
+               prompt("Process Subr. Name")
+               promptgroup(GUI_SUB)
+               special(100)
+               size(40)
+               interest(1)
+       }
+       field(ONAM,DBF_STRING) {
+               prompt("Old Subroutine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(BRSV,DBF_MENU) {
+               prompt("Bad Return Severity")
+               promptgroup(GUI_SUB)
+               menu(menuAlarmSevr)
+               pp(TRUE)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input Link A")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input Link B")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input Link C")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input Link D")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input Link E")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input Link F")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input Link G")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input Link H")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input Link I")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input Link J")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input Link K")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input Link L")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPM,DBF_INLINK) {
+               prompt("Input Link M")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPN,DBF_INLINK) {
+               prompt("Input Link N")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPO,DBF_INLINK) {
+               prompt("Input Link O")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPP,DBF_INLINK) {
+               prompt("Input Link P")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPQ,DBF_INLINK) {
+               prompt("Input Link Q")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPR,DBF_INLINK) {
+               prompt("Input Link R")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPS,DBF_INLINK) {
+               prompt("Input Link S")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPT,DBF_INLINK) {
+               prompt("Input Link T")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPU,DBF_INLINK) {
+               prompt("Input Link U")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(UFA,DBF_STRING) {
+               prompt("Input Structure A")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFB,DBF_STRING) {
+               prompt("Input Structure B")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFC,DBF_STRING) {
+               prompt("Input Structure C")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFD,DBF_STRING) {
+               prompt("Input Structure D")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFE,DBF_STRING) {
+               prompt("Input Structure E")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFF,DBF_STRING) {
+               prompt("Input Structure F")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFG,DBF_STRING) {
+               prompt("Input Structure G")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFH,DBF_STRING) {
+               prompt("Input Structure H")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFI,DBF_STRING) {
+               prompt("Input Structure I")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFJ,DBF_STRING) {
+               prompt("Input Structure J")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFK,DBF_STRING) {
+               prompt("Input Structure K")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFL,DBF_STRING) {
+               prompt("Input Structure L")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFM,DBF_STRING) {
+               prompt("Input Structure M")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFN,DBF_STRING) {
+               prompt("Input Structure N")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFO,DBF_STRING) {
+               prompt("Input Structure O")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFP,DBF_STRING) {
+               prompt("Input Structure P")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFQ,DBF_STRING) {
+               prompt("Input Structure Q")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFR,DBF_STRING) {
+               prompt("Input Structure R")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFS,DBF_STRING) {
+               prompt("Input Structure S")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFT,DBF_STRING) {
+               prompt("Input Structure T")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFU,DBF_STRING) {
+               prompt("Input Structure U")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(A,DBF_NOACCESS) {
+               prompt("Value of Input A")
+               special(SPC_DBADDR)
+               extra("void *a")
+               interest(1)
+               asl(ASL0)
+       }
+       field(B,DBF_NOACCESS) {
+               prompt("Value of Input B")
+               special(SPC_DBADDR)
+               extra("void *b")
+               interest(1)
+               asl(ASL0)
+       }
+       field(C,DBF_NOACCESS) {
+               prompt("Value of Input C")
+               special(SPC_DBADDR)
+               extra("void *c")
+               interest(1)
+               asl(ASL0)
+       }
+       field(D,DBF_NOACCESS) {
+               prompt("Value of Input D")
+               special(SPC_DBADDR)
+               extra("void *d")
+               interest(1)
+               asl(ASL0)
+       }
+       field(E,DBF_NOACCESS) {
+               prompt("Value of Input E")
+               special(SPC_DBADDR)
+               extra("void *e")
+               interest(1)
+               asl(ASL0)
+       }
+       field(F,DBF_NOACCESS) {
+               prompt("Value of Input F")
+               special(SPC_DBADDR)
+               extra("void *f")
+               interest(1)
+               asl(ASL0)
+       }
+       field(G,DBF_NOACCESS) {
+               prompt("Value of Input G")
+               special(SPC_DBADDR)
+               extra("void *g")
+               interest(1)
+               asl(ASL0)
+       }
+       field(H,DBF_NOACCESS) {
+               prompt("Value of Input H")
+               special(SPC_DBADDR)
+               extra("void *h")
+               interest(1)
+               asl(ASL0)
+       }
+       field(I,DBF_NOACCESS) {
+               prompt("Value of Input I")
+               special(SPC_DBADDR)
+               extra("void *i")
+               interest(1)
+               asl(ASL0)
+       }
+       field(J,DBF_NOACCESS) {
+               prompt("Value of Input J")
+               special(SPC_DBADDR)
+               extra("void *j")
+               pp(TRUE)
+               interest(1)
+               asl(ASL0)
+       }
+       field(K,DBF_NOACCESS) {
+               prompt("Value of Input K")
+               special(SPC_DBADDR)
+               extra("void *k")
+               interest(1)
+               asl(ASL0)
+       }
+       field(L,DBF_NOACCESS) {
+               prompt("Value of Input L")
+               special(SPC_DBADDR)
+               extra("void *l")
+               interest(1)
+               asl(ASL0)
+       }
+       field(M,DBF_NOACCESS) {
+               prompt("Value of Input M")
+               special(SPC_DBADDR)
+               extra("void *m")
+               interest(1)
+               asl(ASL0)
+       }
+       field(N,DBF_NOACCESS) {
+               prompt("Value of Input N")
+               special(SPC_DBADDR)
+               extra("void *n")
+               interest(1)
+               asl(ASL0)
+       }
+       field(O,DBF_NOACCESS) {
+               prompt("Value of Input O")
+               special(SPC_DBADDR)
+               extra("void *o")
+               interest(1)
+               asl(ASL0)
+       }
+       field(P,DBF_NOACCESS) {
+               prompt("Value of Input P")
+               special(SPC_DBADDR)
+               extra("void *p")
+               interest(1)
+               asl(ASL0)
+       }
+       field(Q,DBF_NOACCESS) {
+               prompt("Value of Input Q")
+               special(SPC_DBADDR)
+               extra("void *q")
+               interest(1)
+               asl(ASL0)
+       }
+       field(R,DBF_NOACCESS) {
+               prompt("Value of Input R")
+               special(SPC_DBADDR)
+               extra("void *r")
+               interest(1)
+               asl(ASL0)
+       }
+       field(S,DBF_NOACCESS) {
+               prompt("Value of Input S")
+               special(SPC_DBADDR)
+               extra("void *s")
+               interest(1)
+               asl(ASL0)
+       }
+       field(T,DBF_NOACCESS) {
+               prompt("Value of Input T")
+               special(SPC_DBADDR)
+               extra("void *t")
+               interest(1)
+               asl(ASL0)
+       }
+       field(U,DBF_NOACCESS) {
+               prompt("Value of Input U")
+               special(SPC_DBADDR)
+               extra("void *u")
+               interest(1)
+               asl(ASL0)
+       }
+       field(FTA,DBF_MENU) {
+               prompt("Type of A")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTB,DBF_MENU) {
+               prompt("Type of B")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTC,DBF_MENU) {
+               prompt("Type of C")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTD,DBF_MENU) {
+               prompt("Type of D")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTE,DBF_MENU) {
+               prompt("Type of E")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTF,DBF_MENU) {
+               prompt("Type of F")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTG,DBF_MENU) {
+               prompt("Type of G")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTH,DBF_MENU) {
+               prompt("Type of H")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTI,DBF_MENU) {
+               prompt("Type of I")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTJ,DBF_MENU) {
+               prompt("Type of J")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTK,DBF_MENU) {
+               prompt("Type of K")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTL,DBF_MENU) {
+               prompt("Type of L")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTM,DBF_MENU) {
+               prompt("Type of M")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTN,DBF_MENU) {
+               prompt("Type of N")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTO,DBF_MENU) {
+               prompt("Type of O")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTP,DBF_MENU) {
+               prompt("Type of P")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTQ,DBF_MENU) {
+               prompt("Type of Q")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTR,DBF_MENU) {
+               prompt("Type of R")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTS,DBF_MENU) {
+               prompt("Type of S")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTT,DBF_MENU) {
+               prompt("Type of T")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTU,DBF_MENU) {
+               prompt("Type of U")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(NOA,DBF_ULONG) {
+               prompt("No. in A")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOB,DBF_ULONG) {
+               prompt("No. in B")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOC,DBF_ULONG) {
+               prompt("No. in C")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOD,DBF_ULONG) {
+               prompt("No. in D")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOE,DBF_ULONG) {
+               prompt("No. in E")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOF,DBF_ULONG) {
+               prompt("No. in F")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOG,DBF_ULONG) {
+               prompt("No. in G")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOH,DBF_ULONG) {
+               prompt("No. in H")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOI,DBF_ULONG) {
+               prompt("No. in I")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOJ,DBF_ULONG) {
+               prompt("No. in J")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOK,DBF_ULONG) {
+               prompt("No. in K")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOL,DBF_ULONG) {
+               prompt("No. in L")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOM,DBF_ULONG) {
+               prompt("No. in M")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NON,DBF_ULONG) {
+               prompt("No. in N")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOO,DBF_ULONG) {
+               prompt("No. in O")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOP,DBF_ULONG) {
+               prompt("No. in P")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOQ,DBF_ULONG) {
+               prompt("No. in Q")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOR,DBF_ULONG) {
+               prompt("No. in R")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOS,DBF_ULONG) {
+               prompt("No. in S")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOT,DBF_ULONG) {
+               prompt("No. in T")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOU,DBF_ULONG) {
+               prompt("No. in U")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTA,DBF_OUTLINK) {
+               prompt("Output Link A")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTB,DBF_OUTLINK) {
+               prompt("Output Link B")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTC,DBF_OUTLINK) {
+               prompt("Output Link C")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTD,DBF_OUTLINK) {
+               prompt("Output Link D")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTE,DBF_OUTLINK) {
+               prompt("Output Link E")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTF,DBF_OUTLINK) {
+               prompt("Output Link F")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTG,DBF_OUTLINK) {
+               prompt("Output Link G")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTH,DBF_OUTLINK) {
+               prompt("Output Link H")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTI,DBF_OUTLINK) {
+               prompt("Output Link I")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTJ,DBF_OUTLINK) {
+               prompt("Output Link J")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTK,DBF_OUTLINK) {
+               prompt("Output Link K")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTL,DBF_OUTLINK) {
+               prompt("Output Link L")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTM,DBF_OUTLINK) {
+               prompt("Output Link M")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTN,DBF_OUTLINK) {
+               prompt("Output Link N")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTO,DBF_OUTLINK) {
+               prompt("Output Link O")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTP,DBF_OUTLINK) {
+               prompt("Output Link P")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTQ,DBF_OUTLINK) {
+               prompt("Output Link Q")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTR,DBF_OUTLINK) {
+               prompt("Output Link R")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTS,DBF_OUTLINK) {
+               prompt("Output Link S")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTT,DBF_OUTLINK) {
+               prompt("Output Link T")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTU,DBF_OUTLINK) {
+               prompt("Output Link U")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(UFVA,DBF_STRING) {
+               prompt("Output Structure A")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVB,DBF_STRING) {
+               prompt("Output Structure B")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVC,DBF_STRING) {
+               prompt("Output Structure C")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVD,DBF_STRING) {
+               prompt("Output Structure D")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVE,DBF_STRING) {
+               prompt("Output Structure E")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVF,DBF_STRING) {
+               prompt("Output Structure F")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVG,DBF_STRING) {
+               prompt("Output Structure G")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVH,DBF_STRING) {
+               prompt("Output Structure H")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVI,DBF_STRING) {
+               prompt("Output Structure I")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVJ,DBF_STRING) {
+               prompt("Output Structure J")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVK,DBF_STRING) {
+               prompt("Output Structure K")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVL,DBF_STRING) {
+               prompt("Output Structure L")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVM,DBF_STRING) {
+               prompt("Output Structure M")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVN,DBF_STRING) {
+               prompt("Output Structure N")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVO,DBF_STRING) {
+               prompt("Output Structure O")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVP,DBF_STRING) {
+               prompt("Output Structure P")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVQ,DBF_STRING) {
+               prompt("Output Structure Q")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVR,DBF_STRING) {
+               prompt("Output Structure R")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVS,DBF_STRING) {
+               prompt("Output Structure S")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVT,DBF_STRING) {
+               prompt("Output Structure T")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(UFVU,DBF_STRING) {
+               prompt("Output Structure U")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               size(40)
+               interest(1)
+       }
+       field(VALA,DBF_NOACCESS) {
+               prompt("Value of Output A")
+               special(SPC_DBADDR)
+               extra("void *vala")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALB,DBF_NOACCESS) {
+               prompt("Value of Output B")
+               special(SPC_DBADDR)
+               extra("void *valb")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALC,DBF_NOACCESS) {
+               prompt("Value of Output C")
+               special(SPC_DBADDR)
+               extra("void *valc")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALD,DBF_NOACCESS) {
+               prompt("Value of Output D")
+               special(SPC_DBADDR)
+               extra("void *vald")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALE,DBF_NOACCESS) {
+               prompt("Value of Output E")
+               special(SPC_DBADDR)
+               extra("void *vale")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALF,DBF_NOACCESS) {
+               prompt("Value of Output F")
+               special(SPC_DBADDR)
+               extra("void *valf")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALG,DBF_NOACCESS) {
+               prompt("Value of Output G")
+               special(SPC_DBADDR)
+               extra("void *valg")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALH,DBF_NOACCESS) {
+               prompt("Value of Output H")
+               special(SPC_DBADDR)
+               extra("void *valh")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALI,DBF_NOACCESS) {
+               prompt("Value of Output I")
+               special(SPC_DBADDR)
+               extra("void *vali")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALJ,DBF_NOACCESS) {
+               prompt("Value of Output J")
+               special(SPC_DBADDR)
+               extra("void *valj")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALK,DBF_NOACCESS) {
+               prompt("Value of Output K")
+               special(SPC_DBADDR)
+               extra("void *valk")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALL,DBF_NOACCESS) {
+               prompt("Value of Output L")
+               special(SPC_DBADDR)
+               extra("void *vall")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALM,DBF_NOACCESS) {
+               prompt("Value of Output M")
+               special(SPC_DBADDR)
+               extra("void *valm")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALN,DBF_NOACCESS) {
+               prompt("Value of Output N")
+               special(SPC_DBADDR)
+               extra("void *valn")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALO,DBF_NOACCESS) {
+               prompt("Value of Output O")
+               special(SPC_DBADDR)
+               extra("void *valo")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALP,DBF_NOACCESS) {
+               prompt("Value of Output P")
+               special(SPC_DBADDR)
+               extra("void *valp")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALQ,DBF_NOACCESS) {
+               prompt("Value of Output Q")
+               special(SPC_DBADDR)
+               extra("void *valq")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALR,DBF_NOACCESS) {
+               prompt("Value of Output R")
+               special(SPC_DBADDR)
+               extra("void *valr")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALS,DBF_NOACCESS) {
+               prompt("Value of Output S")
+               special(SPC_DBADDR)
+               extra("void *vals")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALT,DBF_NOACCESS) {
+               prompt("Value of Output T")
+               special(SPC_DBADDR)
+               extra("void *valt")
+               interest(1)
+               asl(ASL0)
+       }
+       field(VALU,DBF_NOACCESS) {
+               prompt("Value of Output U")
+               special(SPC_DBADDR)
+               extra("void *valu")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLA,DBF_NOACCESS) {
+               prompt("Old Output A")
+               special(SPC_NOMOD)
+               extra("void *ovla")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLB,DBF_NOACCESS) {
+               prompt("Old Output B")
+               special(SPC_NOMOD)
+               extra("void *ovlb")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLC,DBF_NOACCESS) {
+               prompt("Old Output C")
+               special(SPC_NOMOD)
+               extra("void *ovlc")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLD,DBF_NOACCESS) {
+               prompt("Old Output D")
+               special(SPC_NOMOD)
+               extra("void *ovld")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLE,DBF_NOACCESS) {
+               prompt("Old Output E")
+               special(SPC_NOMOD)
+               extra("void *ovle")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLF,DBF_NOACCESS) {
+               prompt("Old Output F")
+               special(SPC_NOMOD)
+               extra("void *ovlf")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLG,DBF_NOACCESS) {
+               prompt("Old Output G")
+               special(SPC_NOMOD)
+               extra("void *ovlg")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLH,DBF_NOACCESS) {
+               prompt("Old Output H")
+               special(SPC_NOMOD)
+               extra("void *ovlh")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLI,DBF_NOACCESS) {
+               prompt("Old Output I")
+               special(SPC_NOMOD)
+               extra("void *ovli")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLJ,DBF_NOACCESS) {
+               prompt("Old Output J")
+               special(SPC_NOMOD)
+               extra("void *ovlj")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLK,DBF_NOACCESS) {
+               prompt("Old Output K")
+               special(SPC_NOMOD)
+               extra("void *ovlk")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLL,DBF_NOACCESS) {
+               prompt("Old Output L")
+               special(SPC_NOMOD)
+               extra("void *ovll")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLM,DBF_NOACCESS) {
+               prompt("Old Output M")
+               special(SPC_NOMOD)
+               extra("void *ovlm")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLN,DBF_NOACCESS) {
+               prompt("Old Output N")
+               special(SPC_NOMOD)
+               extra("void *ovln")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLO,DBF_NOACCESS) {
+               prompt("Old Output O")
+               special(SPC_NOMOD)
+               extra("void *ovlo")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLP,DBF_NOACCESS) {
+               prompt("Old Output P")
+               special(SPC_NOMOD)
+               extra("void *ovlp")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLQ,DBF_NOACCESS) {
+               prompt("Old Output Q")
+               special(SPC_NOMOD)
+               extra("void *ovlq")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLR,DBF_NOACCESS) {
+               prompt("Old Output R")
+               special(SPC_NOMOD)
+               extra("void *ovlr")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLS,DBF_NOACCESS) {
+               prompt("Old Output S")
+               special(SPC_NOMOD)
+               extra("void *ovls")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLT,DBF_NOACCESS) {
+               prompt("Old Output T")
+               special(SPC_NOMOD)
+               extra("void *ovlt")
+               interest(1)
+               asl(ASL0)
+       }
+       field(OVLU,DBF_NOACCESS) {
+               prompt("Old Output U")
+               special(SPC_NOMOD)
+               extra("void *ovlu")
+               interest(1)
+               asl(ASL0)
+       }
+       field(FTVA,DBF_MENU) {
+               prompt("Type of VALA")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVB,DBF_MENU) {
+               prompt("Type of VALB")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVC,DBF_MENU) {
+               prompt("Type of VALC")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVD,DBF_MENU) {
+               prompt("Type of VALD")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVE,DBF_MENU) {
+               prompt("Type of VALE")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVF,DBF_MENU) {
+               prompt("Type of VALF")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVG,DBF_MENU) {
+               prompt("Type of VALG")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVH,DBF_MENU) {
+               prompt("Type of VALH")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVI,DBF_MENU) {
+               prompt("Type of VALI")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVJ,DBF_MENU) {
+               prompt("Type of VALJ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVK,DBF_MENU) {
+               prompt("Type of VALK")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVL,DBF_MENU) {
+               prompt("Type of VALL")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVM,DBF_MENU) {
+               prompt("Type of VALM")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVN,DBF_MENU) {
+               prompt("Type of VALN")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVO,DBF_MENU) {
+               prompt("Type of VALO")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVP,DBF_MENU) {
+               prompt("Type of VALP")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVQ,DBF_MENU) {
+               prompt("Type of VALQ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVR,DBF_MENU) {
+               prompt("Type of VALR")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVS,DBF_MENU) {
+               prompt("Type of VALS")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVT,DBF_MENU) {
+               prompt("Type of VALT")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(FTVU,DBF_MENU) {
+               prompt("Type of VALU")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               menu(menuFtype)
+               interest(1)
+       }
+       field(NOVA,DBF_ULONG) {
+               prompt("No. in VALA")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVB,DBF_ULONG) {
+               prompt("No. in VALB")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVC,DBF_ULONG) {
+               prompt("No. in VALC")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVD,DBF_ULONG) {
+               prompt("No. in VALD")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVE,DBF_ULONG) {
+               prompt("No. in VALE")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVF,DBF_ULONG) {
+               prompt("No. in VALF")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVG,DBF_ULONG) {
+               prompt("No. in VALG")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVH,DBF_ULONG) {
+               prompt("No. in VAlH")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVI,DBF_ULONG) {
+               prompt("No. in VALI")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVJ,DBF_ULONG) {
+               prompt("No. in VALJ")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVK,DBF_ULONG) {
+               prompt("No. in VALK")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVL,DBF_ULONG) {
+               prompt("No. in VALL")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVM,DBF_ULONG) {
+               prompt("No. in VALM")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVN,DBF_ULONG) {
+               prompt("No. in VALN")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVO,DBF_ULONG) {
+               prompt("No. in VALO")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVP,DBF_ULONG) {
+               prompt("No. in VALP")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVQ,DBF_ULONG) {
+               prompt("No. in VALQ")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVR,DBF_ULONG) {
+               prompt("No. in VALR")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVS,DBF_ULONG) {
+               prompt("No. in VALS")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVT,DBF_ULONG) {
+               prompt("No. in VALT")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(NOVU,DBF_ULONG) {
+               prompt("No. in VALU")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVA,DBF_ULONG) {
+               prompt("Total bytes for VALA")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVB,DBF_ULONG) {
+               prompt("Total bytes for VALB")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVC,DBF_ULONG) {
+               prompt("Total bytes for VALC")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVD,DBF_ULONG) {
+               prompt("Total bytes for VALD")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVE,DBF_ULONG) {
+               prompt("Total bytes for VALE")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVF,DBF_ULONG) {
+               prompt("Total bytes for VALF")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVG,DBF_ULONG) {
+               prompt("Total bytes for VALG")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVH,DBF_ULONG) {
+               prompt("Total bytes for VAlH")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVI,DBF_ULONG) {
+               prompt("Total bytes for VALI")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVJ,DBF_ULONG) {
+               prompt("Total bytes for VALJ")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVK,DBF_ULONG) {
+               prompt("Total bytes for VALK")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVL,DBF_ULONG) {
+               prompt("Total bytes for VALL")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVM,DBF_ULONG) {
+               prompt("Total bytes for VALM")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVN,DBF_ULONG) {
+               prompt("Total bytes for VALN")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVO,DBF_ULONG) {
+               prompt("Total bytes for VALO")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVP,DBF_ULONG) {
+               prompt("Total bytes for VALP")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVQ,DBF_ULONG) {
+               prompt("Total bytes for VALQ")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVR,DBF_ULONG) {
+               prompt("Total bytes for VALR")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVS,DBF_ULONG) {
+               prompt("Total bytes for VALS")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVT,DBF_ULONG) {
+               prompt("Total bytes for VALT")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(TOVU,DBF_ULONG) {
+               prompt("Total bytes for VALU")
+               initial("1")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+}
+device(ai,CONSTANT,devAiSoft,"Soft Channel")
+device(ai,CONSTANT,devAiSoftRaw,"Raw Soft Channel")
+device(ao,CONSTANT,devAoSoft,"Soft Channel")
+device(ao,CONSTANT,devAoSoftRaw,"Raw Soft Channel")
+device(ao,CONSTANT,devAoSoftCallback,"Async Soft Channel")
+device(bi,CONSTANT,devBiSoft,"Soft Channel")
+device(bi,CONSTANT,devBiSoftRaw,"Raw Soft Channel")
+device(bo,CONSTANT,devBoSoft,"Soft Channel")
+device(bo,CONSTANT,devBoSoftRaw,"Raw Soft Channel")
+device(bo,CONSTANT,devBoSoftCallback,"Async Soft Channel")
+device(calcout,CONSTANT,devCalcoutSoft,"Soft Channel")
+device(calcout,CONSTANT,devCalcoutSoftCallback,"Async Soft Channel")
+device(event,CONSTANT,devEventSoft,"Soft Channel")
+device(longin,CONSTANT,devLiSoft,"Soft Channel")
+device(longout,CONSTANT,devLoSoft,"Soft Channel")
+device(longout,CONSTANT,devLoSoftCallback,"Async Soft Channel")
+device(mbbi,CONSTANT,devMbbiSoft,"Soft Channel")
+device(mbbi,CONSTANT,devMbbiSoftRaw,"Raw Soft Channel")
+device(mbbiDirect,CONSTANT,devMbbiDirectSoft,"Soft Channel")
+device(mbbiDirect,CONSTANT,devMbbiDirectSoftRaw,"Raw Soft Channel")
+device(mbbo,CONSTANT,devMbboSoft,"Soft Channel")
+device(mbbo,CONSTANT,devMbboSoftRaw,"Raw Soft Channel")
+device(mbbo,CONSTANT,devMbboSoftCallback,"Async Soft Channel")
+device(mbboDirect,CONSTANT,devMbboDirectSoft,"Soft Channel")
+device(mbboDirect,CONSTANT,devMbboDirectSoftRaw,"Raw Soft Channel")
+device(mbboDirect,CONSTANT,devMbboDirectSoftCallback,"Async Soft Channel")
+device(stringin,CONSTANT,devSiSoft,"Soft Channel")
+device(stringin,INST_IO,devTimestampSI,"Soft Timestamp")
+device(stringout,CONSTANT,devSoSoft,"Soft Channel")
+device(stringout,CONSTANT,devSoSoftCallback,"Async Soft Channel")
+device(subArray,CONSTANT,devSASoft,"Soft Channel")
+device(waveform,CONSTANT,devWfSoft,"Soft Channel")
+device(xxx,CONSTANT,devXxxSoft,"SoftChannel")
+registrar(asSub)
+function(evtbuild_init)
+function(evtbuild_proc)
+function(genRunId_init)
+function(genRunId_proc)
+function(writeRunId_init)
+function(writeRunId_proc)
+variable(asCaDebug,int)
+variable(dbRecordsOnceOnly,int)
+variable(evtbuildDebug,int)
+variable(genrunidDebug,int)
+variable(writerunidDebug,int)
diff --git a/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd.depends b/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd.depends
new file mode 100644 (file)
index 0000000..b43649a
--- /dev/null
@@ -0,0 +1,51 @@
+# DO NOT EDIT: This file created by mkmf.pl,v 1.5 2002/03/25 21:33:24 jba Exp $ 
+
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/base.dbd
+../O.Common/ebctrl.dbd : ../xxxSupport.dbd
+../O.Common/ebctrl.dbd : ../genSubRecord.dbd
+../O.Common/ebctrl.dbd : ../evtbuild.dbd
+../O.Common/ebctrl.dbd : ../genrunid.dbd
+../O.Common/ebctrl.dbd : ../writerunid.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuGlobal.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuConvert.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/aiRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/aoRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/biRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/boRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/calcRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/calcoutRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/compressRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/dfanoutRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/eventRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/fanoutRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/longinRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/longoutRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/mbbiRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/mbbiDirectRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/mbboRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/mbboDirectRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/permissiveRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/selRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/seqRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/stateRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/stringinRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/stringoutRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/subRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/subArrayRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/waveformRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/devSoft.dbd
+../O.Common/ebctrl.dbd : ../xxxRecord.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/dbCommon.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuAlarmSevr.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuAlarmStat.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuArrType.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuCompress.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuFtype.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuIvoa.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuOmsl.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuPriority.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuScan.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuYesNo.dbd
+../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuSimm.dbd
+
+
diff --git a/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrlInclude.dbd b/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrlInclude.dbd
new file mode 100644 (file)
index 0000000..6032334
--- /dev/null
@@ -0,0 +1,6 @@
+include "base.dbd"
+include "xxxSupport.dbd"
+include "genSubRecord.dbd"
+include "evtbuild.dbd"
+include "genrunid.dbd"
+include "writerunid.dbd"
diff --git a/ebctrl/ioc/ebctrlApp/src/O.Common/genSubRecord.h b/ebctrl/ioc/ebctrlApp/src/O.Common/genSubRecord.h
new file mode 100644 (file)
index 0000000..857cb7c
--- /dev/null
@@ -0,0 +1,1275 @@
+#include "ellLib.h"
+#include "epicsMutex.h"
+#include "link.h"
+#include "epicsTime.h"
+#include "epicsTypes.h"
+
+#ifndef INCgenSubLFLGH
+#define INCgenSubLFLGH
+typedef enum {
+       genSubLFLG_IGNORE,
+       genSubLFLG_READ
+}genSubLFLG;
+#endif /*INCgenSubLFLGH*/
+
+#ifndef INCgenSubEFLGH
+#define INCgenSubEFLGH
+typedef enum {
+       genSubEFLG_NEVER,
+       genSubEFLG_ON_CHANGE,
+       genSubEFLG_ALWAYS
+}genSubEFLG;
+#endif /*INCgenSubEFLGH*/
+#ifndef INCgenSubH
+#define INCgenSubH
+typedef struct genSubRecord {
+       char            name[61]; /*Record Name*/
+       char            desc[29]; /*Descriptor*/
+       char            asg[29]; /*Access Security Group*/
+       epicsEnum16     scan;   /*Scan Mechanism*/
+       epicsEnum16     pini;   /*Process at iocInit*/
+       short           phas;   /*Scan Phase*/
+       short           evnt;   /*Event Number*/
+       short           tse;    /*Time Stamp Event*/
+       DBLINK          tsel;   /*Time Stamp Link*/
+       epicsEnum16     dtyp;   /*Device Type*/
+       short           disv;   /*Disable Value*/
+       short           disa;   /*Disable*/
+       DBLINK          sdis;   /*Scanning Disable*/
+       epicsMutexId    mlok;   /*Monitor lock*/
+       ELLLIST         mlis;   /*Monitor List*/
+       unsigned char   disp;   /*Disable putField*/
+       unsigned char   proc;   /*Force Processing*/
+       epicsEnum16     stat;   /*Alarm Status*/
+       epicsEnum16     sevr;   /*Alarm Severity*/
+       epicsEnum16     nsta;   /*New Alarm Status*/
+       epicsEnum16     nsev;   /*New Alarm Severity*/
+       epicsEnum16     acks;   /*Alarm Ack Severity*/
+       epicsEnum16     ackt;   /*Alarm Ack Transient*/
+       epicsEnum16     diss;   /*Disable Alarm Sevrty*/
+       unsigned char   lcnt;   /*Lock Count*/
+       unsigned char   pact;   /*Record active*/
+       unsigned char   putf;   /*dbPutField process*/
+       unsigned char   rpro;   /*Reprocess */
+       void            *asp;   /*Access Security Pvt*/
+       struct putNotify *ppn;  /*addr of PUTNOTIFY*/
+       struct putNotifyRecord *ppnr;   /*pputNotifyRecord*/
+       struct scan_element *spvt;      /*Scan Private*/
+       struct rset     *rset;  /*Address of RSET*/
+       struct dset     *dset;  /*DSET address*/
+       void            *dpvt;  /*Device Private*/
+       struct dbRecordType *rdes;      /*Address of dbRecordType*/
+       struct lockRecord *lset;        /*Lock Set*/
+       epicsEnum16     prio;   /*Scheduling Priority*/
+       unsigned char   tpro;   /*Trace Processing*/
+       char bkpt;      /*Break Point*/
+       unsigned char   udf;    /*Undefined*/
+       epicsTimeStamp  time;   /*Time*/
+       DBLINK          flnk;   /*Forward Process Link*/
+       double          vers;   /*Version Number*/
+       epicsInt32              val;    /*Subr. return value*/
+       epicsInt32              oval;   /*Old return value*/
+       epicsInt32              sadr;   /*Subroutine Address*/
+       epicsInt32              osad;   /*Old Subr. Address*/
+       epicsEnum16     lflg;   /*Link Flag*/
+       epicsEnum16     eflg;   /*Event Flag*/
+       DBLINK          subl;   /*Subroutine Input Link*/
+       char            inam[40]; /*Init Routine Name*/
+       char            snam[40]; /*Process Subr. Name*/
+       char            onam[40]; /*Old Subroutine Name*/
+       epicsEnum16     brsv;   /*Bad Return Severity*/
+       short           prec;   /*Display Precision*/
+       DBLINK          inpa;   /*Input Link A*/
+       DBLINK          inpb;   /*Input Link B*/
+       DBLINK          inpc;   /*Input Link C*/
+       DBLINK          inpd;   /*Input Link D*/
+       DBLINK          inpe;   /*Input Link E*/
+       DBLINK          inpf;   /*Input Link F*/
+       DBLINK          inpg;   /*Input Link G*/
+       DBLINK          inph;   /*Input Link H*/
+       DBLINK          inpi;   /*Input Link I*/
+       DBLINK          inpj;   /*Input Link J*/
+       DBLINK          inpk;   /*Input Link K*/
+       DBLINK          inpl;   /*Input Link L*/
+       DBLINK          inpm;   /*Input Link M*/
+       DBLINK          inpn;   /*Input Link N*/
+       DBLINK          inpo;   /*Input Link O*/
+       DBLINK          inpp;   /*Input Link P*/
+       DBLINK          inpq;   /*Input Link Q*/
+       DBLINK          inpr;   /*Input Link R*/
+       DBLINK          inps;   /*Input Link S*/
+       DBLINK          inpt;   /*Input Link T*/
+       DBLINK          inpu;   /*Input Link U*/
+       char            ufa[40]; /*Input Structure A*/
+       char            ufb[40]; /*Input Structure B*/
+       char            ufc[40]; /*Input Structure C*/
+       char            ufd[40]; /*Input Structure D*/
+       char            ufe[40]; /*Input Structure E*/
+       char            uff[40]; /*Input Structure F*/
+       char            ufg[40]; /*Input Structure G*/
+       char            ufh[40]; /*Input Structure H*/
+       char            ufi[40]; /*Input Structure I*/
+       char            ufj[40]; /*Input Structure J*/
+       char            ufk[40]; /*Input Structure K*/
+       char            ufl[40]; /*Input Structure L*/
+       char            ufm[40]; /*Input Structure M*/
+       char            ufn[40]; /*Input Structure N*/
+       char            ufo[40]; /*Input Structure O*/
+       char            ufp[40]; /*Input Structure P*/
+       char            ufq[40]; /*Input Structure Q*/
+       char            ufr[40]; /*Input Structure R*/
+       char            ufs[40]; /*Input Structure S*/
+       char            uft[40]; /*Input Structure T*/
+       char            ufu[40]; /*Input Structure U*/
+       void *a;        /*Value of Input A*/
+       void *b;        /*Value of Input B*/
+       void *c;        /*Value of Input C*/
+       void *d;        /*Value of Input D*/
+       void *e;        /*Value of Input E*/
+       void *f;        /*Value of Input F*/
+       void *g;        /*Value of Input G*/
+       void *h;        /*Value of Input H*/
+       void *i;        /*Value of Input I*/
+       void *j;        /*Value of Input J*/
+       void *k;        /*Value of Input K*/
+       void *l;        /*Value of Input L*/
+       void *m;        /*Value of Input M*/
+       void *n;        /*Value of Input N*/
+       void *o;        /*Value of Input O*/
+       void *p;        /*Value of Input P*/
+       void *q;        /*Value of Input Q*/
+       void *r;        /*Value of Input R*/
+       void *s;        /*Value of Input S*/
+       void *t;        /*Value of Input T*/
+       void *u;        /*Value of Input U*/
+       epicsEnum16     fta;    /*Type of A*/
+       epicsEnum16     ftb;    /*Type of B*/
+       epicsEnum16     ftc;    /*Type of C*/
+       epicsEnum16     ftd;    /*Type of D*/
+       epicsEnum16     fte;    /*Type of E*/
+       epicsEnum16     ftf;    /*Type of F*/
+       epicsEnum16     ftg;    /*Type of G*/
+       epicsEnum16     fth;    /*Type of H*/
+       epicsEnum16     fti;    /*Type of I*/
+       epicsEnum16     ftj;    /*Type of J*/
+       epicsEnum16     ftk;    /*Type of K*/
+       epicsEnum16     ftl;    /*Type of L*/
+       epicsEnum16     ftm;    /*Type of M*/
+       epicsEnum16     ftn;    /*Type of N*/
+       epicsEnum16     fto;    /*Type of O*/
+       epicsEnum16     ftp;    /*Type of P*/
+       epicsEnum16     ftq;    /*Type of Q*/
+       epicsEnum16     ftr;    /*Type of R*/
+       epicsEnum16     fts;    /*Type of S*/
+       epicsEnum16     ftt;    /*Type of T*/
+       epicsEnum16     ftu;    /*Type of U*/
+       unsigned long   noa;    /*No. in A*/
+       unsigned long   nob;    /*No. in B*/
+       unsigned long   noc;    /*No. in C*/
+       unsigned long   nod;    /*No. in D*/
+       unsigned long   noe;    /*No. in E*/
+       unsigned long   nof;    /*No. in F*/
+       unsigned long   nog;    /*No. in G*/
+       unsigned long   noh;    /*No. in H*/
+       unsigned long   noi;    /*No. in I*/
+       unsigned long   noj;    /*No. in J*/
+       unsigned long   nok;    /*No. in K*/
+       unsigned long   nol;    /*No. in L*/
+       unsigned long   nom;    /*No. in M*/
+       unsigned long   non;    /*No. in N*/
+       unsigned long   noo;    /*No. in O*/
+       unsigned long   nop;    /*No. in P*/
+       unsigned long   noq;    /*No. in Q*/
+       unsigned long   nor;    /*No. in R*/
+       unsigned long   nos;    /*No. in S*/
+       unsigned long   not;    /*No. in T*/
+       unsigned long   nou;    /*No. in U*/
+       DBLINK          outa;   /*Output Link A*/
+       DBLINK          outb;   /*Output Link B*/
+       DBLINK          outc;   /*Output Link C*/
+       DBLINK          outd;   /*Output Link D*/
+       DBLINK          oute;   /*Output Link E*/
+       DBLINK          outf;   /*Output Link F*/
+       DBLINK          outg;   /*Output Link G*/
+       DBLINK          outh;   /*Output Link H*/
+       DBLINK          outi;   /*Output Link I*/
+       DBLINK          outj;   /*Output Link J*/
+       DBLINK          outk;   /*Output Link K*/
+       DBLINK          outl;   /*Output Link L*/
+       DBLINK          outm;   /*Output Link M*/
+       DBLINK          outn;   /*Output Link N*/
+       DBLINK          outo;   /*Output Link O*/
+       DBLINK          outp;   /*Output Link P*/
+       DBLINK          outq;   /*Output Link Q*/
+       DBLINK          outr;   /*Output Link R*/
+       DBLINK          outs;   /*Output Link S*/
+       DBLINK          outt;   /*Output Link T*/
+       DBLINK          outu;   /*Output Link U*/
+       char            ufva[40]; /*Output Structure A*/
+       char            ufvb[40]; /*Output Structure B*/
+       char            ufvc[40]; /*Output Structure C*/
+       char            ufvd[40]; /*Output Structure D*/
+       char            ufve[40]; /*Output Structure E*/
+       char            ufvf[40]; /*Output Structure F*/
+       char            ufvg[40]; /*Output Structure G*/
+       char            ufvh[40]; /*Output Structure H*/
+       char            ufvi[40]; /*Output Structure I*/
+       char            ufvj[40]; /*Output Structure J*/
+       char            ufvk[40]; /*Output Structure K*/
+       char            ufvl[40]; /*Output Structure L*/
+       char            ufvm[40]; /*Output Structure M*/
+       char            ufvn[40]; /*Output Structure N*/
+       char            ufvo[40]; /*Output Structure O*/
+       char            ufvp[40]; /*Output Structure P*/
+       char            ufvq[40]; /*Output Structure Q*/
+       char            ufvr[40]; /*Output Structure R*/
+       char            ufvs[40]; /*Output Structure S*/
+       char            ufvt[40]; /*Output Structure T*/
+       char            ufvu[40]; /*Output Structure U*/
+       void *vala;     /*Value of Output A*/
+       void *valb;     /*Value of Output B*/
+       void *valc;     /*Value of Output C*/
+       void *vald;     /*Value of Output D*/
+       void *vale;     /*Value of Output E*/
+       void *valf;     /*Value of Output F*/
+       void *valg;     /*Value of Output G*/
+       void *valh;     /*Value of Output H*/
+       void *vali;     /*Value of Output I*/
+       void *valj;     /*Value of Output J*/
+       void *valk;     /*Value of Output K*/
+       void *vall;     /*Value of Output L*/
+       void *valm;     /*Value of Output M*/
+       void *valn;     /*Value of Output N*/
+       void *valo;     /*Value of Output O*/
+       void *valp;     /*Value of Output P*/
+       void *valq;     /*Value of Output Q*/
+       void *valr;     /*Value of Output R*/
+       void *vals;     /*Value of Output S*/
+       void *valt;     /*Value of Output T*/
+       void *valu;     /*Value of Output U*/
+       void *ovla;     /*Old Output A*/
+       void *ovlb;     /*Old Output B*/
+       void *ovlc;     /*Old Output C*/
+       void *ovld;     /*Old Output D*/
+       void *ovle;     /*Old Output E*/
+       void *ovlf;     /*Old Output F*/
+       void *ovlg;     /*Old Output G*/
+       void *ovlh;     /*Old Output H*/
+       void *ovli;     /*Old Output I*/
+       void *ovlj;     /*Old Output J*/
+       void *ovlk;     /*Old Output K*/
+       void *ovll;     /*Old Output L*/
+       void *ovlm;     /*Old Output M*/
+       void *ovln;     /*Old Output N*/
+       void *ovlo;     /*Old Output O*/
+       void *ovlp;     /*Old Output P*/
+       void *ovlq;     /*Old Output Q*/
+       void *ovlr;     /*Old Output R*/
+       void *ovls;     /*Old Output S*/
+       void *ovlt;     /*Old Output T*/
+       void *ovlu;     /*Old Output U*/
+       epicsEnum16     ftva;   /*Type of VALA*/
+       epicsEnum16     ftvb;   /*Type of VALB*/
+       epicsEnum16     ftvc;   /*Type of VALC*/
+       epicsEnum16     ftvd;   /*Type of VALD*/
+       epicsEnum16     ftve;   /*Type of VALE*/
+       epicsEnum16     ftvf;   /*Type of VALF*/
+       epicsEnum16     ftvg;   /*Type of VALG*/
+       epicsEnum16     ftvh;   /*Type of VALH*/
+       epicsEnum16     ftvi;   /*Type of VALI*/
+       epicsEnum16     ftvj;   /*Type of VALJ*/
+       epicsEnum16     ftvk;   /*Type of VALK*/
+       epicsEnum16     ftvl;   /*Type of VALL*/
+       epicsEnum16     ftvm;   /*Type of VALM*/
+       epicsEnum16     ftvn;   /*Type of VALN*/
+       epicsEnum16     ftvo;   /*Type of VALO*/
+       epicsEnum16     ftvp;   /*Type of VALP*/
+       epicsEnum16     ftvq;   /*Type of VALQ*/
+       epicsEnum16     ftvr;   /*Type of VALR*/
+       epicsEnum16     ftvs;   /*Type of VALS*/
+       epicsEnum16     ftvt;   /*Type of VALT*/
+       epicsEnum16     ftvu;   /*Type of VALU*/
+       unsigned long   nova;   /*No. in VALA*/
+       unsigned long   novb;   /*No. in VALB*/
+       unsigned long   novc;   /*No. in VALC*/
+       unsigned long   novd;   /*No. in VALD*/
+       unsigned long   nove;   /*No. in VALE*/
+       unsigned long   novf;   /*No. in VALF*/
+       unsigned long   novg;   /*No. in VALG*/
+       unsigned long   novh;   /*No. in VAlH*/
+       unsigned long   novi;   /*No. in VALI*/
+       unsigned long   novj;   /*No. in VALJ*/
+       unsigned long   novk;   /*No. in VALK*/
+       unsigned long   novl;   /*No. in VALL*/
+       unsigned long   novm;   /*No. in VALM*/
+       unsigned long   novn;   /*No. in VALN*/
+       unsigned long   novo;   /*No. in VALO*/
+       unsigned long   novp;   /*No. in VALP*/
+       unsigned long   novq;   /*No. in VALQ*/
+       unsigned long   novr;   /*No. in VALR*/
+       unsigned long   novs;   /*No. in VALS*/
+       unsigned long   novt;   /*No. in VALT*/
+       unsigned long   novu;   /*No. in VALU*/
+       unsigned long   tova;   /*Total bytes for VALA*/
+       unsigned long   tovb;   /*Total bytes for VALB*/
+       unsigned long   tovc;   /*Total bytes for VALC*/
+       unsigned long   tovd;   /*Total bytes for VALD*/
+       unsigned long   tove;   /*Total bytes for VALE*/
+       unsigned long   tovf;   /*Total bytes for VALF*/
+       unsigned long   tovg;   /*Total bytes for VALG*/
+       unsigned long   tovh;   /*Total bytes for VAlH*/
+       unsigned long   tovi;   /*Total bytes for VALI*/
+       unsigned long   tovj;   /*Total bytes for VALJ*/
+       unsigned long   tovk;   /*Total bytes for VALK*/
+       unsigned long   tovl;   /*Total bytes for VALL*/
+       unsigned long   tovm;   /*Total bytes for VALM*/
+       unsigned long   tovn;   /*Total bytes for VALN*/
+       unsigned long   tovo;   /*Total bytes for VALO*/
+       unsigned long   tovp;   /*Total bytes for VALP*/
+       unsigned long   tovq;   /*Total bytes for VALQ*/
+       unsigned long   tovr;   /*Total bytes for VALR*/
+       unsigned long   tovs;   /*Total bytes for VALS*/
+       unsigned long   tovt;   /*Total bytes for VALT*/
+       unsigned long   tovu;   /*Total bytes for VALU*/
+} genSubRecord;
+#define genSubRecordNAME       0
+#define genSubRecordDESC       1
+#define genSubRecordASG        2
+#define genSubRecordSCAN       3
+#define genSubRecordPINI       4
+#define genSubRecordPHAS       5
+#define genSubRecordEVNT       6
+#define genSubRecordTSE        7
+#define genSubRecordTSEL       8
+#define genSubRecordDTYP       9
+#define genSubRecordDISV       10
+#define genSubRecordDISA       11
+#define genSubRecordSDIS       12
+#define genSubRecordMLOK       13
+#define genSubRecordMLIS       14
+#define genSubRecordDISP       15
+#define genSubRecordPROC       16
+#define genSubRecordSTAT       17
+#define genSubRecordSEVR       18
+#define genSubRecordNSTA       19
+#define genSubRecordNSEV       20
+#define genSubRecordACKS       21
+#define genSubRecordACKT       22
+#define genSubRecordDISS       23
+#define genSubRecordLCNT       24
+#define genSubRecordPACT       25
+#define genSubRecordPUTF       26
+#define genSubRecordRPRO       27
+#define genSubRecordASP        28
+#define genSubRecordPPN        29
+#define genSubRecordPPNR       30
+#define genSubRecordSPVT       31
+#define genSubRecordRSET       32
+#define genSubRecordDSET       33
+#define genSubRecordDPVT       34
+#define genSubRecordRDES       35
+#define genSubRecordLSET       36
+#define genSubRecordPRIO       37
+#define genSubRecordTPRO       38
+#define genSubRecordBKPT       39
+#define genSubRecordUDF        40
+#define genSubRecordTIME       41
+#define genSubRecordFLNK       42
+#define genSubRecordVERS       43
+#define genSubRecordVAL        44
+#define genSubRecordOVAL       45
+#define genSubRecordSADR       46
+#define genSubRecordOSAD       47
+#define genSubRecordLFLG       48
+#define genSubRecordEFLG       49
+#define genSubRecordSUBL       50
+#define genSubRecordINAM       51
+#define genSubRecordSNAM       52
+#define genSubRecordONAM       53
+#define genSubRecordBRSV       54
+#define genSubRecordPREC       55
+#define genSubRecordINPA       56
+#define genSubRecordINPB       57
+#define genSubRecordINPC       58
+#define genSubRecordINPD       59
+#define genSubRecordINPE       60
+#define genSubRecordINPF       61
+#define genSubRecordINPG       62
+#define genSubRecordINPH       63
+#define genSubRecordINPI       64
+#define genSubRecordINPJ       65
+#define genSubRecordINPK       66
+#define genSubRecordINPL       67
+#define genSubRecordINPM       68
+#define genSubRecordINPN       69
+#define genSubRecordINPO       70
+#define genSubRecordINPP       71
+#define genSubRecordINPQ       72
+#define genSubRecordINPR       73
+#define genSubRecordINPS       74
+#define genSubRecordINPT       75
+#define genSubRecordINPU       76
+#define genSubRecordUFA        77
+#define genSubRecordUFB        78
+#define genSubRecordUFC        79
+#define genSubRecordUFD        80
+#define genSubRecordUFE        81
+#define genSubRecordUFF        82
+#define genSubRecordUFG        83
+#define genSubRecordUFH        84
+#define genSubRecordUFI        85
+#define genSubRecordUFJ        86
+#define genSubRecordUFK        87
+#define genSubRecordUFL        88
+#define genSubRecordUFM        89
+#define genSubRecordUFN        90
+#define genSubRecordUFO        91
+#define genSubRecordUFP        92
+#define genSubRecordUFQ        93
+#define genSubRecordUFR        94
+#define genSubRecordUFS        95
+#define genSubRecordUFT        96
+#define genSubRecordUFU        97
+#define genSubRecordA  98
+#define genSubRecordB  99
+#define genSubRecordC  100
+#define genSubRecordD  101
+#define genSubRecordE  102
+#define genSubRecordF  103
+#define genSubRecordG  104
+#define genSubRecordH  105
+#define genSubRecordI  106
+#define genSubRecordJ  107
+#define genSubRecordK  108
+#define genSubRecordL  109
+#define genSubRecordM  110
+#define genSubRecordN  111
+#define genSubRecordO  112
+#define genSubRecordP  113
+#define genSubRecordQ  114
+#define genSubRecordR  115
+#define genSubRecordS  116
+#define genSubRecordT  117
+#define genSubRecordU  118
+#define genSubRecordFTA        119
+#define genSubRecordFTB        120
+#define genSubRecordFTC        121
+#define genSubRecordFTD        122
+#define genSubRecordFTE        123
+#define genSubRecordFTF        124
+#define genSubRecordFTG        125
+#define genSubRecordFTH        126
+#define genSubRecordFTI        127
+#define genSubRecordFTJ        128
+#define genSubRecordFTK        129
+#define genSubRecordFTL        130
+#define genSubRecordFTM        131
+#define genSubRecordFTN        132
+#define genSubRecordFTO        133
+#define genSubRecordFTP        134
+#define genSubRecordFTQ        135
+#define genSubRecordFTR        136
+#define genSubRecordFTS        137
+#define genSubRecordFTT        138
+#define genSubRecordFTU        139
+#define genSubRecordNOA        140
+#define genSubRecordNOB        141
+#define genSubRecordNOC        142
+#define genSubRecordNOD        143
+#define genSubRecordNOE        144
+#define genSubRecordNOF        145
+#define genSubRecordNOG        146
+#define genSubRecordNOH        147
+#define genSubRecordNOI        148
+#define genSubRecordNOJ        149
+#define genSubRecordNOK        150
+#define genSubRecordNOL        151
+#define genSubRecordNOM        152
+#define genSubRecordNON        153
+#define genSubRecordNOO        154
+#define genSubRecordNOP        155
+#define genSubRecordNOQ        156
+#define genSubRecordNOR        157
+#define genSubRecordNOS        158
+#define genSubRecordNOT        159
+#define genSubRecordNOU        160
+#define genSubRecordOUTA       161
+#define genSubRecordOUTB       162
+#define genSubRecordOUTC       163
+#define genSubRecordOUTD       164
+#define genSubRecordOUTE       165
+#define genSubRecordOUTF       166
+#define genSubRecordOUTG       167
+#define genSubRecordOUTH       168
+#define genSubRecordOUTI       169
+#define genSubRecordOUTJ       170
+#define genSubRecordOUTK       171
+#define genSubRecordOUTL       172
+#define genSubRecordOUTM       173
+#define genSubRecordOUTN       174
+#define genSubRecordOUTO       175
+#define genSubRecordOUTP       176
+#define genSubRecordOUTQ       177
+#define genSubRecordOUTR       178
+#define genSubRecordOUTS       179
+#define genSubRecordOUTT       180
+#define genSubRecordOUTU       181
+#define genSubRecordUFVA       182
+#define genSubRecordUFVB       183
+#define genSubRecordUFVC       184
+#define genSubRecordUFVD       185
+#define genSubRecordUFVE       186
+#define genSubRecordUFVF       187
+#define genSubRecordUFVG       188
+#define genSubRecordUFVH       189
+#define genSubRecordUFVI       190
+#define genSubRecordUFVJ       191
+#define genSubRecordUFVK       192
+#define genSubRecordUFVL       193
+#define genSubRecordUFVM       194
+#define genSubRecordUFVN       195
+#define genSubRecordUFVO       196
+#define genSubRecordUFVP       197
+#define genSubRecordUFVQ       198
+#define genSubRecordUFVR       199
+#define genSubRecordUFVS       200
+#define genSubRecordUFVT       201
+#define genSubRecordUFVU       202
+#define genSubRecordVALA       203
+#define genSubRecordVALB       204
+#define genSubRecordVALC       205
+#define genSubRecordVALD       206
+#define genSubRecordVALE       207
+#define genSubRecordVALF       208
+#define genSubRecordVALG       209
+#define genSubRecordVALH       210
+#define genSubRecordVALI       211
+#define genSubRecordVALJ       212
+#define genSubRecordVALK       213
+#define genSubRecordVALL       214
+#define genSubRecordVALM       215
+#define genSubRecordVALN       216
+#define genSubRecordVALO       217
+#define genSubRecordVALP       218
+#define genSubRecordVALQ       219
+#define genSubRecordVALR       220
+#define genSubRecordVALS       221
+#define genSubRecordVALT       222
+#define genSubRecordVALU       223
+#define genSubRecordOVLA       224
+#define genSubRecordOVLB       225
+#define genSubRecordOVLC       226
+#define genSubRecordOVLD       227
+#define genSubRecordOVLE       228
+#define genSubRecordOVLF       229
+#define genSubRecordOVLG       230
+#define genSubRecordOVLH       231
+#define genSubRecordOVLI       232
+#define genSubRecordOVLJ       233
+#define genSubRecordOVLK       234
+#define genSubRecordOVLL       235
+#define genSubRecordOVLM       236
+#define genSubRecordOVLN       237
+#define genSubRecordOVLO       238
+#define genSubRecordOVLP       239
+#define genSubRecordOVLQ       240
+#define genSubRecordOVLR       241
+#define genSubRecordOVLS       242
+#define genSubRecordOVLT       243
+#define genSubRecordOVLU       244
+#define genSubRecordFTVA       245
+#define genSubRecordFTVB       246
+#define genSubRecordFTVC       247
+#define genSubRecordFTVD       248
+#define genSubRecordFTVE       249
+#define genSubRecordFTVF       250
+#define genSubRecordFTVG       251
+#define genSubRecordFTVH       252
+#define genSubRecordFTVI       253
+#define genSubRecordFTVJ       254
+#define genSubRecordFTVK       255
+#define genSubRecordFTVL       256
+#define genSubRecordFTVM       257
+#define genSubRecordFTVN       258
+#define genSubRecordFTVO       259
+#define genSubRecordFTVP       260
+#define genSubRecordFTVQ       261
+#define genSubRecordFTVR       262
+#define genSubRecordFTVS       263
+#define genSubRecordFTVT       264
+#define genSubRecordFTVU       265
+#define genSubRecordNOVA       266
+#define genSubRecordNOVB       267
+#define genSubRecordNOVC       268
+#define genSubRecordNOVD       269
+#define genSubRecordNOVE       270
+#define genSubRecordNOVF       271
+#define genSubRecordNOVG       272
+#define genSubRecordNOVH       273
+#define genSubRecordNOVI       274
+#define genSubRecordNOVJ       275
+#define genSubRecordNOVK       276
+#define genSubRecordNOVL       277
+#define genSubRecordNOVM       278
+#define genSubRecordNOVN       279
+#define genSubRecordNOVO       280
+#define genSubRecordNOVP       281
+#define genSubRecordNOVQ       282
+#define genSubRecordNOVR       283
+#define genSubRecordNOVS       284
+#define genSubRecordNOVT       285
+#define genSubRecordNOVU       286
+#define genSubRecordTOVA       287
+#define genSubRecordTOVB       288
+#define genSubRecordTOVC       289
+#define genSubRecordTOVD       290
+#define genSubRecordTOVE       291
+#define genSubRecordTOVF       292
+#define genSubRecordTOVG       293
+#define genSubRecordTOVH       294
+#define genSubRecordTOVI       295
+#define genSubRecordTOVJ       296
+#define genSubRecordTOVK       297
+#define genSubRecordTOVL       298
+#define genSubRecordTOVM       299
+#define genSubRecordTOVN       300
+#define genSubRecordTOVO       301
+#define genSubRecordTOVP       302
+#define genSubRecordTOVQ       303
+#define genSubRecordTOVR       304
+#define genSubRecordTOVS       305
+#define genSubRecordTOVT       306
+#define genSubRecordTOVU       307
+#endif /*INCgenSubH*/
+#ifdef GEN_SIZE_OFFSET
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <epicsExport.h>
+static int genSubRecordSizeOffset(dbRecordType *pdbRecordType)
+{
+    genSubRecord *prec = 0;
+  pdbRecordType->papFldDes[0]->size=sizeof(prec->name);
+  pdbRecordType->papFldDes[0]->offset=(short)((char *)&prec->name - (char *)prec);
+  pdbRecordType->papFldDes[1]->size=sizeof(prec->desc);
+  pdbRecordType->papFldDes[1]->offset=(short)((char *)&prec->desc - (char *)prec);
+  pdbRecordType->papFldDes[2]->size=sizeof(prec->asg);
+  pdbRecordType->papFldDes[2]->offset=(short)((char *)&prec->asg - (char *)prec);
+  pdbRecordType->papFldDes[3]->size=sizeof(prec->scan);
+  pdbRecordType->papFldDes[3]->offset=(short)((char *)&prec->scan - (char *)prec);
+  pdbRecordType->papFldDes[4]->size=sizeof(prec->pini);
+  pdbRecordType->papFldDes[4]->offset=(short)((char *)&prec->pini - (char *)prec);
+  pdbRecordType->papFldDes[5]->size=sizeof(prec->phas);
+  pdbRecordType->papFldDes[5]->offset=(short)((char *)&prec->phas - (char *)prec);
+  pdbRecordType->papFldDes[6]->size=sizeof(prec->evnt);
+  pdbRecordType->papFldDes[6]->offset=(short)((char *)&prec->evnt - (char *)prec);
+  pdbRecordType->papFldDes[7]->size=sizeof(prec->tse);
+  pdbRecordType->papFldDes[7]->offset=(short)((char *)&prec->tse - (char *)prec);
+  pdbRecordType->papFldDes[8]->size=sizeof(prec->tsel);
+  pdbRecordType->papFldDes[8]->offset=(short)((char *)&prec->tsel - (char *)prec);
+  pdbRecordType->papFldDes[9]->size=sizeof(prec->dtyp);
+  pdbRecordType->papFldDes[9]->offset=(short)((char *)&prec->dtyp - (char *)prec);
+  pdbRecordType->papFldDes[10]->size=sizeof(prec->disv);
+  pdbRecordType->papFldDes[10]->offset=(short)((char *)&prec->disv - (char *)prec);
+  pdbRecordType->papFldDes[11]->size=sizeof(prec->disa);
+  pdbRecordType->papFldDes[11]->offset=(short)((char *)&prec->disa - (char *)prec);
+  pdbRecordType->papFldDes[12]->size=sizeof(prec->sdis);
+  pdbRecordType->papFldDes[12]->offset=(short)((char *)&prec->sdis - (char *)prec);
+  pdbRecordType->papFldDes[13]->size=sizeof(prec->mlok);
+  pdbRecordType->papFldDes[13]->offset=(short)((char *)&prec->mlok - (char *)prec);
+  pdbRecordType->papFldDes[14]->size=sizeof(prec->mlis);
+  pdbRecordType->papFldDes[14]->offset=(short)((char *)&prec->mlis - (char *)prec);
+  pdbRecordType->papFldDes[15]->size=sizeof(prec->disp);
+  pdbRecordType->papFldDes[15]->offset=(short)((char *)&prec->disp - (char *)prec);
+  pdbRecordType->papFldDes[16]->size=sizeof(prec->proc);
+  pdbRecordType->papFldDes[16]->offset=(short)((char *)&prec->proc - (char *)prec);
+  pdbRecordType->papFldDes[17]->size=sizeof(prec->stat);
+  pdbRecordType->papFldDes[17]->offset=(short)((char *)&prec->stat - (char *)prec);
+  pdbRecordType->papFldDes[18]->size=sizeof(prec->sevr);
+  pdbRecordType->papFldDes[18]->offset=(short)((char *)&prec->sevr - (char *)prec);
+  pdbRecordType->papFldDes[19]->size=sizeof(prec->nsta);
+  pdbRecordType->papFldDes[19]->offset=(short)((char *)&prec->nsta - (char *)prec);
+  pdbRecordType->papFldDes[20]->size=sizeof(prec->nsev);
+  pdbRecordType->papFldDes[20]->offset=(short)((char *)&prec->nsev - (char *)prec);
+  pdbRecordType->papFldDes[21]->size=sizeof(prec->acks);
+  pdbRecordType->papFldDes[21]->offset=(short)((char *)&prec->acks - (char *)prec);
+  pdbRecordType->papFldDes[22]->size=sizeof(prec->ackt);
+  pdbRecordType->papFldDes[22]->offset=(short)((char *)&prec->ackt - (char *)prec);
+  pdbRecordType->papFldDes[23]->size=sizeof(prec->diss);
+  pdbRecordType->papFldDes[23]->offset=(short)((char *)&prec->diss - (char *)prec);
+  pdbRecordType->papFldDes[24]->size=sizeof(prec->lcnt);
+  pdbRecordType->papFldDes[24]->offset=(short)((char *)&prec->lcnt - (char *)prec);
+  pdbRecordType->papFldDes[25]->size=sizeof(prec->pact);
+  pdbRecordType->papFldDes[25]->offset=(short)((char *)&prec->pact - (char *)prec);
+  pdbRecordType->papFldDes[26]->size=sizeof(prec->putf);
+  pdbRecordType->papFldDes[26]->offset=(short)((char *)&prec->putf - (char *)prec);
+  pdbRecordType->papFldDes[27]->size=sizeof(prec->rpro);
+  pdbRecordType->papFldDes[27]->offset=(short)((char *)&prec->rpro - (char *)prec);
+  pdbRecordType->papFldDes[28]->size=sizeof(prec->asp);
+  pdbRecordType->papFldDes[28]->offset=(short)((char *)&prec->asp - (char *)prec);
+  pdbRecordType->papFldDes[29]->size=sizeof(prec->ppn);
+  pdbRecordType->papFldDes[29]->offset=(short)((char *)&prec->ppn - (char *)prec);
+  pdbRecordType->papFldDes[30]->size=sizeof(prec->ppnr);
+  pdbRecordType->papFldDes[30]->offset=(short)((char *)&prec->ppnr - (char *)prec);
+  pdbRecordType->papFldDes[31]->size=sizeof(prec->spvt);
+  pdbRecordType->papFldDes[31]->offset=(short)((char *)&prec->spvt - (char *)prec);
+  pdbRecordType->papFldDes[32]->size=sizeof(prec->rset);
+  pdbRecordType->papFldDes[32]->offset=(short)((char *)&prec->rset - (char *)prec);
+  pdbRecordType->papFldDes[33]->size=sizeof(prec->dset);
+  pdbRecordType->papFldDes[33]->offset=(short)((char *)&prec->dset - (char *)prec);
+  pdbRecordType->papFldDes[34]->size=sizeof(prec->dpvt);
+  pdbRecordType->papFldDes[34]->offset=(short)((char *)&prec->dpvt - (char *)prec);
+  pdbRecordType->papFldDes[35]->size=sizeof(prec->rdes);
+  pdbRecordType->papFldDes[35]->offset=(short)((char *)&prec->rdes - (char *)prec);
+  pdbRecordType->papFldDes[36]->size=sizeof(prec->lset);
+  pdbRecordType->papFldDes[36]->offset=(short)((char *)&prec->lset - (char *)prec);
+  pdbRecordType->papFldDes[37]->size=sizeof(prec->prio);
+  pdbRecordType->papFldDes[37]->offset=(short)((char *)&prec->prio - (char *)prec);
+  pdbRecordType->papFldDes[38]->size=sizeof(prec->tpro);
+  pdbRecordType->papFldDes[38]->offset=(short)((char *)&prec->tpro - (char *)prec);
+  pdbRecordType->papFldDes[39]->size=sizeof(prec->bkpt);
+  pdbRecordType->papFldDes[39]->offset=(short)((char *)&prec->bkpt - (char *)prec);
+  pdbRecordType->papFldDes[40]->size=sizeof(prec->udf);
+  pdbRecordType->papFldDes[40]->offset=(short)((char *)&prec->udf - (char *)prec);
+  pdbRecordType->papFldDes[41]->size=sizeof(prec->time);
+  pdbRecordType->papFldDes[41]->offset=(short)((char *)&prec->time - (char *)prec);
+  pdbRecordType->papFldDes[42]->size=sizeof(prec->flnk);
+  pdbRecordType->papFldDes[42]->offset=(short)((char *)&prec->flnk - (char *)prec);
+  pdbRecordType->papFldDes[43]->size=sizeof(prec->vers);
+  pdbRecordType->papFldDes[43]->offset=(short)((char *)&prec->vers - (char *)prec);
+  pdbRecordType->papFldDes[44]->size=sizeof(prec->val);
+  pdbRecordType->papFldDes[44]->offset=(short)((char *)&prec->val - (char *)prec);
+  pdbRecordType->papFldDes[45]->size=sizeof(prec->oval);
+  pdbRecordType->papFldDes[45]->offset=(short)((char *)&prec->oval - (char *)prec);
+  pdbRecordType->papFldDes[46]->size=sizeof(prec->sadr);
+  pdbRecordType->papFldDes[46]->offset=(short)((char *)&prec->sadr - (char *)prec);
+  pdbRecordType->papFldDes[47]->size=sizeof(prec->osad);
+  pdbRecordType->papFldDes[47]->offset=(short)((char *)&prec->osad - (char *)prec);
+  pdbRecordType->papFldDes[48]->size=sizeof(prec->lflg);
+  pdbRecordType->papFldDes[48]->offset=(short)((char *)&prec->lflg - (char *)prec);
+  pdbRecordType->papFldDes[49]->size=sizeof(prec->eflg);
+  pdbRecordType->papFldDes[49]->offset=(short)((char *)&prec->eflg - (char *)prec);
+  pdbRecordType->papFldDes[50]->size=sizeof(prec->subl);
+  pdbRecordType->papFldDes[50]->offset=(short)((char *)&prec->subl - (char *)prec);
+  pdbRecordType->papFldDes[51]->size=sizeof(prec->inam);
+  pdbRecordType->papFldDes[51]->offset=(short)((char *)&prec->inam - (char *)prec);
+  pdbRecordType->papFldDes[52]->size=sizeof(prec->snam);
+  pdbRecordType->papFldDes[52]->offset=(short)((char *)&prec->snam - (char *)prec);
+  pdbRecordType->papFldDes[53]->size=sizeof(prec->onam);
+  pdbRecordType->papFldDes[53]->offset=(short)((char *)&prec->onam - (char *)prec);
+  pdbRecordType->papFldDes[54]->size=sizeof(prec->brsv);
+  pdbRecordType->papFldDes[54]->offset=(short)((char *)&prec->brsv - (char *)prec);
+  pdbRecordType->papFldDes[55]->size=sizeof(prec->prec);
+  pdbRecordType->papFldDes[55]->offset=(short)((char *)&prec->prec - (char *)prec);
+  pdbRecordType->papFldDes[56]->size=sizeof(prec->inpa);
+  pdbRecordType->papFldDes[56]->offset=(short)((char *)&prec->inpa - (char *)prec);
+  pdbRecordType->papFldDes[57]->size=sizeof(prec->inpb);
+  pdbRecordType->papFldDes[57]->offset=(short)((char *)&prec->inpb - (char *)prec);
+  pdbRecordType->papFldDes[58]->size=sizeof(prec->inpc);
+  pdbRecordType->papFldDes[58]->offset=(short)((char *)&prec->inpc - (char *)prec);
+  pdbRecordType->papFldDes[59]->size=sizeof(prec->inpd);
+  pdbRecordType->papFldDes[59]->offset=(short)((char *)&prec->inpd - (char *)prec);
+  pdbRecordType->papFldDes[60]->size=sizeof(prec->inpe);
+  pdbRecordType->papFldDes[60]->offset=(short)((char *)&prec->inpe - (char *)prec);
+  pdbRecordType->papFldDes[61]->size=sizeof(prec->inpf);
+  pdbRecordType->papFldDes[61]->offset=(short)((char *)&prec->inpf - (char *)prec);
+  pdbRecordType->papFldDes[62]->size=sizeof(prec->inpg);
+  pdbRecordType->papFldDes[62]->offset=(short)((char *)&prec->inpg - (char *)prec);
+  pdbRecordType->papFldDes[63]->size=sizeof(prec->inph);
+  pdbRecordType->papFldDes[63]->offset=(short)((char *)&prec->inph - (char *)prec);
+  pdbRecordType->papFldDes[64]->size=sizeof(prec->inpi);
+  pdbRecordType->papFldDes[64]->offset=(short)((char *)&prec->inpi - (char *)prec);
+  pdbRecordType->papFldDes[65]->size=sizeof(prec->inpj);
+  pdbRecordType->papFldDes[65]->offset=(short)((char *)&prec->inpj - (char *)prec);
+  pdbRecordType->papFldDes[66]->size=sizeof(prec->inpk);
+  pdbRecordType->papFldDes[66]->offset=(short)((char *)&prec->inpk - (char *)prec);
+  pdbRecordType->papFldDes[67]->size=sizeof(prec->inpl);
+  pdbRecordType->papFldDes[67]->offset=(short)((char *)&prec->inpl - (char *)prec);
+  pdbRecordType->papFldDes[68]->size=sizeof(prec->inpm);
+  pdbRecordType->papFldDes[68]->offset=(short)((char *)&prec->inpm - (char *)prec);
+  pdbRecordType->papFldDes[69]->size=sizeof(prec->inpn);
+  pdbRecordType->papFldDes[69]->offset=(short)((char *)&prec->inpn - (char *)prec);
+  pdbRecordType->papFldDes[70]->size=sizeof(prec->inpo);
+  pdbRecordType->papFldDes[70]->offset=(short)((char *)&prec->inpo - (char *)prec);
+  pdbRecordType->papFldDes[71]->size=sizeof(prec->inpp);
+  pdbRecordType->papFldDes[71]->offset=(short)((char *)&prec->inpp - (char *)prec);
+  pdbRecordType->papFldDes[72]->size=sizeof(prec->inpq);
+  pdbRecordType->papFldDes[72]->offset=(short)((char *)&prec->inpq - (char *)prec);
+  pdbRecordType->papFldDes[73]->size=sizeof(prec->inpr);
+  pdbRecordType->papFldDes[73]->offset=(short)((char *)&prec->inpr - (char *)prec);
+  pdbRecordType->papFldDes[74]->size=sizeof(prec->inps);
+  pdbRecordType->papFldDes[74]->offset=(short)((char *)&prec->inps - (char *)prec);
+  pdbRecordType->papFldDes[75]->size=sizeof(prec->inpt);
+  pdbRecordType->papFldDes[75]->offset=(short)((char *)&prec->inpt - (char *)prec);
+  pdbRecordType->papFldDes[76]->size=sizeof(prec->inpu);
+  pdbRecordType->papFldDes[76]->offset=(short)((char *)&prec->inpu - (char *)prec);
+  pdbRecordType->papFldDes[77]->size=sizeof(prec->ufa);
+  pdbRecordType->papFldDes[77]->offset=(short)((char *)&prec->ufa - (char *)prec);
+  pdbRecordType->papFldDes[78]->size=sizeof(prec->ufb);
+  pdbRecordType->papFldDes[78]->offset=(short)((char *)&prec->ufb - (char *)prec);
+  pdbRecordType->papFldDes[79]->size=sizeof(prec->ufc);
+  pdbRecordType->papFldDes[79]->offset=(short)((char *)&prec->ufc - (char *)prec);
+  pdbRecordType->papFldDes[80]->size=sizeof(prec->ufd);
+  pdbRecordType->papFldDes[80]->offset=(short)((char *)&prec->ufd - (char *)prec);
+  pdbRecordType->papFldDes[81]->size=sizeof(prec->ufe);
+  pdbRecordType->papFldDes[81]->offset=(short)((char *)&prec->ufe - (char *)prec);
+  pdbRecordType->papFldDes[82]->size=sizeof(prec->uff);
+  pdbRecordType->papFldDes[82]->offset=(short)((char *)&prec->uff - (char *)prec);
+  pdbRecordType->papFldDes[83]->size=sizeof(prec->ufg);
+  pdbRecordType->papFldDes[83]->offset=(short)((char *)&prec->ufg - (char *)prec);
+  pdbRecordType->papFldDes[84]->size=sizeof(prec->ufh);
+  pdbRecordType->papFldDes[84]->offset=(short)((char *)&prec->ufh - (char *)prec);
+  pdbRecordType->papFldDes[85]->size=sizeof(prec->ufi);
+  pdbRecordType->papFldDes[85]->offset=(short)((char *)&prec->ufi - (char *)prec);
+  pdbRecordType->papFldDes[86]->size=sizeof(prec->ufj);
+  pdbRecordType->papFldDes[86]->offset=(short)((char *)&prec->ufj - (char *)prec);
+  pdbRecordType->papFldDes[87]->size=sizeof(prec->ufk);
+  pdbRecordType->papFldDes[87]->offset=(short)((char *)&prec->ufk - (char *)prec);
+  pdbRecordType->papFldDes[88]->size=sizeof(prec->ufl);
+  pdbRecordType->papFldDes[88]->offset=(short)((char *)&prec->ufl - (char *)prec);
+  pdbRecordType->papFldDes[89]->size=sizeof(prec->ufm);
+  pdbRecordType->papFldDes[89]->offset=(short)((char *)&prec->ufm - (char *)prec);
+  pdbRecordType->papFldDes[90]->size=sizeof(prec->ufn);
+  pdbRecordType->papFldDes[90]->offset=(short)((char *)&prec->ufn - (char *)prec);
+  pdbRecordType->papFldDes[91]->size=sizeof(prec->ufo);
+  pdbRecordType->papFldDes[91]->offset=(short)((char *)&prec->ufo - (char *)prec);
+  pdbRecordType->papFldDes[92]->size=sizeof(prec->ufp);
+  pdbRecordType->papFldDes[92]->offset=(short)((char *)&prec->ufp - (char *)prec);
+  pdbRecordType->papFldDes[93]->size=sizeof(prec->ufq);
+  pdbRecordType->papFldDes[93]->offset=(short)((char *)&prec->ufq - (char *)prec);
+  pdbRecordType->papFldDes[94]->size=sizeof(prec->ufr);
+  pdbRecordType->papFldDes[94]->offset=(short)((char *)&prec->ufr - (char *)prec);
+  pdbRecordType->papFldDes[95]->size=sizeof(prec->ufs);
+  pdbRecordType->papFldDes[95]->offset=(short)((char *)&prec->ufs - (char *)prec);
+  pdbRecordType->papFldDes[96]->size=sizeof(prec->uft);
+  pdbRecordType->papFldDes[96]->offset=(short)((char *)&prec->uft - (char *)prec);
+  pdbRecordType->papFldDes[97]->size=sizeof(prec->ufu);
+  pdbRecordType->papFldDes[97]->offset=(short)((char *)&prec->ufu - (char *)prec);
+  pdbRecordType->papFldDes[98]->size=sizeof(prec->a);
+  pdbRecordType->papFldDes[98]->offset=(short)((char *)&prec->a - (char *)prec);
+  pdbRecordType->papFldDes[99]->size=sizeof(prec->b);
+  pdbRecordType->papFldDes[99]->offset=(short)((char *)&prec->b - (char *)prec);
+  pdbRecordType->papFldDes[100]->size=sizeof(prec->c);
+  pdbRecordType->papFldDes[100]->offset=(short)((char *)&prec->c - (char *)prec);
+  pdbRecordType->papFldDes[101]->size=sizeof(prec->d);
+  pdbRecordType->papFldDes[101]->offset=(short)((char *)&prec->d - (char *)prec);
+  pdbRecordType->papFldDes[102]->size=sizeof(prec->e);
+  pdbRecordType->papFldDes[102]->offset=(short)((char *)&prec->e - (char *)prec);
+  pdbRecordType->papFldDes[103]->size=sizeof(prec->f);
+  pdbRecordType->papFldDes[103]->offset=(short)((char *)&prec->f - (char *)prec);
+  pdbRecordType->papFldDes[104]->size=sizeof(prec->g);
+  pdbRecordType->papFldDes[104]->offset=(short)((char *)&prec->g - (char *)prec);
+  pdbRecordType->papFldDes[105]->size=sizeof(prec->h);
+  pdbRecordType->papFldDes[105]->offset=(short)((char *)&prec->h - (char *)prec);
+  pdbRecordType->papFldDes[106]->size=sizeof(prec->i);
+  pdbRecordType->papFldDes[106]->offset=(short)((char *)&prec->i - (char *)prec);
+  pdbRecordType->papFldDes[107]->size=sizeof(prec->j);
+  pdbRecordType->papFldDes[107]->offset=(short)((char *)&prec->j - (char *)prec);
+  pdbRecordType->papFldDes[108]->size=sizeof(prec->k);
+  pdbRecordType->papFldDes[108]->offset=(short)((char *)&prec->k - (char *)prec);
+  pdbRecordType->papFldDes[109]->size=sizeof(prec->l);
+  pdbRecordType->papFldDes[109]->offset=(short)((char *)&prec->l - (char *)prec);
+  pdbRecordType->papFldDes[110]->size=sizeof(prec->m);
+  pdbRecordType->papFldDes[110]->offset=(short)((char *)&prec->m - (char *)prec);
+  pdbRecordType->papFldDes[111]->size=sizeof(prec->n);
+  pdbRecordType->papFldDes[111]->offset=(short)((char *)&prec->n - (char *)prec);
+  pdbRecordType->papFldDes[112]->size=sizeof(prec->o);
+  pdbRecordType->papFldDes[112]->offset=(short)((char *)&prec->o - (char *)prec);
+  pdbRecordType->papFldDes[113]->size=sizeof(prec->p);
+  pdbRecordType->papFldDes[113]->offset=(short)((char *)&prec->p - (char *)prec);
+  pdbRecordType->papFldDes[114]->size=sizeof(prec->q);
+  pdbRecordType->papFldDes[114]->offset=(short)((char *)&prec->q - (char *)prec);
+  pdbRecordType->papFldDes[115]->size=sizeof(prec->r);
+  pdbRecordType->papFldDes[115]->offset=(short)((char *)&prec->r - (char *)prec);
+  pdbRecordType->papFldDes[116]->size=sizeof(prec->s);
+  pdbRecordType->papFldDes[116]->offset=(short)((char *)&prec->s - (char *)prec);
+  pdbRecordType->papFldDes[117]->size=sizeof(prec->t);
+  pdbRecordType->papFldDes[117]->offset=(short)((char *)&prec->t - (char *)prec);
+  pdbRecordType->papFldDes[118]->size=sizeof(prec->u);
+  pdbRecordType->papFldDes[118]->offset=(short)((char *)&prec->u - (char *)prec);
+  pdbRecordType->papFldDes[119]->size=sizeof(prec->fta);
+  pdbRecordType->papFldDes[119]->offset=(short)((char *)&prec->fta - (char *)prec);
+  pdbRecordType->papFldDes[120]->size=sizeof(prec->ftb);
+  pdbRecordType->papFldDes[120]->offset=(short)((char *)&prec->ftb - (char *)prec);
+  pdbRecordType->papFldDes[121]->size=sizeof(prec->ftc);
+  pdbRecordType->papFldDes[121]->offset=(short)((char *)&prec->ftc - (char *)prec);
+  pdbRecordType->papFldDes[122]->size=sizeof(prec->ftd);
+  pdbRecordType->papFldDes[122]->offset=(short)((char *)&prec->ftd - (char *)prec);
+  pdbRecordType->papFldDes[123]->size=sizeof(prec->fte);
+  pdbRecordType->papFldDes[123]->offset=(short)((char *)&prec->fte - (char *)prec);
+  pdbRecordType->papFldDes[124]->size=sizeof(prec->ftf);
+  pdbRecordType->papFldDes[124]->offset=(short)((char *)&prec->ftf - (char *)prec);
+  pdbRecordType->papFldDes[125]->size=sizeof(prec->ftg);
+  pdbRecordType->papFldDes[125]->offset=(short)((char *)&prec->ftg - (char *)prec);
+  pdbRecordType->papFldDes[126]->size=sizeof(prec->fth);
+  pdbRecordType->papFldDes[126]->offset=(short)((char *)&prec->fth - (char *)prec);
+  pdbRecordType->papFldDes[127]->size=sizeof(prec->fti);
+  pdbRecordType->papFldDes[127]->offset=(short)((char *)&prec->fti - (char *)prec);
+  pdbRecordType->papFldDes[128]->size=sizeof(prec->ftj);
+  pdbRecordType->papFldDes[128]->offset=(short)((char *)&prec->ftj - (char *)prec);
+  pdbRecordType->papFldDes[129]->size=sizeof(prec->ftk);
+  pdbRecordType->papFldDes[129]->offset=(short)((char *)&prec->ftk - (char *)prec);
+  pdbRecordType->papFldDes[130]->size=sizeof(prec->ftl);
+  pdbRecordType->papFldDes[130]->offset=(short)((char *)&prec->ftl - (char *)prec);
+  pdbRecordType->papFldDes[131]->size=sizeof(prec->ftm);
+  pdbRecordType->papFldDes[131]->offset=(short)((char *)&prec->ftm - (char *)prec);
+  pdbRecordType->papFldDes[132]->size=sizeof(prec->ftn);
+  pdbRecordType->papFldDes[132]->offset=(short)((char *)&prec->ftn - (char *)prec);
+  pdbRecordType->papFldDes[133]->size=sizeof(prec->fto);
+  pdbRecordType->papFldDes[133]->offset=(short)((char *)&prec->fto - (char *)prec);
+  pdbRecordType->papFldDes[134]->size=sizeof(prec->ftp);
+  pdbRecordType->papFldDes[134]->offset=(short)((char *)&prec->ftp - (char *)prec);
+  pdbRecordType->papFldDes[135]->size=sizeof(prec->ftq);
+  pdbRecordType->papFldDes[135]->offset=(short)((char *)&prec->ftq - (char *)prec);
+  pdbRecordType->papFldDes[136]->size=sizeof(prec->ftr);
+  pdbRecordType->papFldDes[136]->offset=(short)((char *)&prec->ftr - (char *)prec);
+  pdbRecordType->papFldDes[137]->size=sizeof(prec->fts);
+  pdbRecordType->papFldDes[137]->offset=(short)((char *)&prec->fts - (char *)prec);
+  pdbRecordType->papFldDes[138]->size=sizeof(prec->ftt);
+  pdbRecordType->papFldDes[138]->offset=(short)((char *)&prec->ftt - (char *)prec);
+  pdbRecordType->papFldDes[139]->size=sizeof(prec->ftu);
+  pdbRecordType->papFldDes[139]->offset=(short)((char *)&prec->ftu - (char *)prec);
+  pdbRecordType->papFldDes[140]->size=sizeof(prec->noa);
+  pdbRecordType->papFldDes[140]->offset=(short)((char *)&prec->noa - (char *)prec);
+  pdbRecordType->papFldDes[141]->size=sizeof(prec->nob);
+  pdbRecordType->papFldDes[141]->offset=(short)((char *)&prec->nob - (char *)prec);
+  pdbRecordType->papFldDes[142]->size=sizeof(prec->noc);
+  pdbRecordType->papFldDes[142]->offset=(short)((char *)&prec->noc - (char *)prec);
+  pdbRecordType->papFldDes[143]->size=sizeof(prec->nod);
+  pdbRecordType->papFldDes[143]->offset=(short)((char *)&prec->nod - (char *)prec);
+  pdbRecordType->papFldDes[144]->size=sizeof(prec->noe);
+  pdbRecordType->papFldDes[144]->offset=(short)((char *)&prec->noe - (char *)prec);
+  pdbRecordType->papFldDes[145]->size=sizeof(prec->nof);
+  pdbRecordType->papFldDes[145]->offset=(short)((char *)&prec->nof - (char *)prec);
+  pdbRecordType->papFldDes[146]->size=sizeof(prec->nog);
+  pdbRecordType->papFldDes[146]->offset=(short)((char *)&prec->nog - (char *)prec);
+  pdbRecordType->papFldDes[147]->size=sizeof(prec->noh);
+  pdbRecordType->papFldDes[147]->offset=(short)((char *)&prec->noh - (char *)prec);
+  pdbRecordType->papFldDes[148]->size=sizeof(prec->noi);
+  pdbRecordType->papFldDes[148]->offset=(short)((char *)&prec->noi - (char *)prec);
+  pdbRecordType->papFldDes[149]->size=sizeof(prec->noj);
+  pdbRecordType->papFldDes[149]->offset=(short)((char *)&prec->noj - (char *)prec);
+  pdbRecordType->papFldDes[150]->size=sizeof(prec->nok);
+  pdbRecordType->papFldDes[150]->offset=(short)((char *)&prec->nok - (char *)prec);
+  pdbRecordType->papFldDes[151]->size=sizeof(prec->nol);
+  pdbRecordType->papFldDes[151]->offset=(short)((char *)&prec->nol - (char *)prec);
+  pdbRecordType->papFldDes[152]->size=sizeof(prec->nom);
+  pdbRecordType->papFldDes[152]->offset=(short)((char *)&prec->nom - (char *)prec);
+  pdbRecordType->papFldDes[153]->size=sizeof(prec->non);
+  pdbRecordType->papFldDes[153]->offset=(short)((char *)&prec->non - (char *)prec);
+  pdbRecordType->papFldDes[154]->size=sizeof(prec->noo);
+  pdbRecordType->papFldDes[154]->offset=(short)((char *)&prec->noo - (char *)prec);
+  pdbRecordType->papFldDes[155]->size=sizeof(prec->nop);
+  pdbRecordType->papFldDes[155]->offset=(short)((char *)&prec->nop - (char *)prec);
+  pdbRecordType->papFldDes[156]->size=sizeof(prec->noq);
+  pdbRecordType->papFldDes[156]->offset=(short)((char *)&prec->noq - (char *)prec);
+  pdbRecordType->papFldDes[157]->size=sizeof(prec->nor);
+  pdbRecordType->papFldDes[157]->offset=(short)((char *)&prec->nor - (char *)prec);
+  pdbRecordType->papFldDes[158]->size=sizeof(prec->nos);
+  pdbRecordType->papFldDes[158]->offset=(short)((char *)&prec->nos - (char *)prec);
+  pdbRecordType->papFldDes[159]->size=sizeof(prec->not);
+  pdbRecordType->papFldDes[159]->offset=(short)((char *)&prec->not - (char *)prec);
+  pdbRecordType->papFldDes[160]->size=sizeof(prec->nou);
+  pdbRecordType->papFldDes[160]->offset=(short)((char *)&prec->nou - (char *)prec);
+  pdbRecordType->papFldDes[161]->size=sizeof(prec->outa);
+  pdbRecordType->papFldDes[161]->offset=(short)((char *)&prec->outa - (char *)prec);
+  pdbRecordType->papFldDes[162]->size=sizeof(prec->outb);
+  pdbRecordType->papFldDes[162]->offset=(short)((char *)&prec->outb - (char *)prec);
+  pdbRecordType->papFldDes[163]->size=sizeof(prec->outc);
+  pdbRecordType->papFldDes[163]->offset=(short)((char *)&prec->outc - (char *)prec);
+  pdbRecordType->papFldDes[164]->size=sizeof(prec->outd);
+  pdbRecordType->papFldDes[164]->offset=(short)((char *)&prec->outd - (char *)prec);
+  pdbRecordType->papFldDes[165]->size=sizeof(prec->oute);
+  pdbRecordType->papFldDes[165]->offset=(short)((char *)&prec->oute - (char *)prec);
+  pdbRecordType->papFldDes[166]->size=sizeof(prec->outf);
+  pdbRecordType->papFldDes[166]->offset=(short)((char *)&prec->outf - (char *)prec);
+  pdbRecordType->papFldDes[167]->size=sizeof(prec->outg);
+  pdbRecordType->papFldDes[167]->offset=(short)((char *)&prec->outg - (char *)prec);
+  pdbRecordType->papFldDes[168]->size=sizeof(prec->outh);
+  pdbRecordType->papFldDes[168]->offset=(short)((char *)&prec->outh - (char *)prec);
+  pdbRecordType->papFldDes[169]->size=sizeof(prec->outi);
+  pdbRecordType->papFldDes[169]->offset=(short)((char *)&prec->outi - (char *)prec);
+  pdbRecordType->papFldDes[170]->size=sizeof(prec->outj);
+  pdbRecordType->papFldDes[170]->offset=(short)((char *)&prec->outj - (char *)prec);
+  pdbRecordType->papFldDes[171]->size=sizeof(prec->outk);
+  pdbRecordType->papFldDes[171]->offset=(short)((char *)&prec->outk - (char *)prec);
+  pdbRecordType->papFldDes[172]->size=sizeof(prec->outl);
+  pdbRecordType->papFldDes[172]->offset=(short)((char *)&prec->outl - (char *)prec);
+  pdbRecordType->papFldDes[173]->size=sizeof(prec->outm);
+  pdbRecordType->papFldDes[173]->offset=(short)((char *)&prec->outm - (char *)prec);
+  pdbRecordType->papFldDes[174]->size=sizeof(prec->outn);
+  pdbRecordType->papFldDes[174]->offset=(short)((char *)&prec->outn - (char *)prec);
+  pdbRecordType->papFldDes[175]->size=sizeof(prec->outo);
+  pdbRecordType->papFldDes[175]->offset=(short)((char *)&prec->outo - (char *)prec);
+  pdbRecordType->papFldDes[176]->size=sizeof(prec->outp);
+  pdbRecordType->papFldDes[176]->offset=(short)((char *)&prec->outp - (char *)prec);
+  pdbRecordType->papFldDes[177]->size=sizeof(prec->outq);
+  pdbRecordType->papFldDes[177]->offset=(short)((char *)&prec->outq - (char *)prec);
+  pdbRecordType->papFldDes[178]->size=sizeof(prec->outr);
+  pdbRecordType->papFldDes[178]->offset=(short)((char *)&prec->outr - (char *)prec);
+  pdbRecordType->papFldDes[179]->size=sizeof(prec->outs);
+  pdbRecordType->papFldDes[179]->offset=(short)((char *)&prec->outs - (char *)prec);
+  pdbRecordType->papFldDes[180]->size=sizeof(prec->outt);
+  pdbRecordType->papFldDes[180]->offset=(short)((char *)&prec->outt - (char *)prec);
+  pdbRecordType->papFldDes[181]->size=sizeof(prec->outu);
+  pdbRecordType->papFldDes[181]->offset=(short)((char *)&prec->outu - (char *)prec);
+  pdbRecordType->papFldDes[182]->size=sizeof(prec->ufva);
+  pdbRecordType->papFldDes[182]->offset=(short)((char *)&prec->ufva - (char *)prec);
+  pdbRecordType->papFldDes[183]->size=sizeof(prec->ufvb);
+  pdbRecordType->papFldDes[183]->offset=(short)((char *)&prec->ufvb - (char *)prec);
+  pdbRecordType->papFldDes[184]->size=sizeof(prec->ufvc);
+  pdbRecordType->papFldDes[184]->offset=(short)((char *)&prec->ufvc - (char *)prec);
+  pdbRecordType->papFldDes[185]->size=sizeof(prec->ufvd);
+  pdbRecordType->papFldDes[185]->offset=(short)((char *)&prec->ufvd - (char *)prec);
+  pdbRecordType->papFldDes[186]->size=sizeof(prec->ufve);
+  pdbRecordType->papFldDes[186]->offset=(short)((char *)&prec->ufve - (char *)prec);
+  pdbRecordType->papFldDes[187]->size=sizeof(prec->ufvf);
+  pdbRecordType->papFldDes[187]->offset=(short)((char *)&prec->ufvf - (char *)prec);
+  pdbRecordType->papFldDes[188]->size=sizeof(prec->ufvg);
+  pdbRecordType->papFldDes[188]->offset=(short)((char *)&prec->ufvg - (char *)prec);
+  pdbRecordType->papFldDes[189]->size=sizeof(prec->ufvh);
+  pdbRecordType->papFldDes[189]->offset=(short)((char *)&prec->ufvh - (char *)prec);
+  pdbRecordType->papFldDes[190]->size=sizeof(prec->ufvi);
+  pdbRecordType->papFldDes[190]->offset=(short)((char *)&prec->ufvi - (char *)prec);
+  pdbRecordType->papFldDes[191]->size=sizeof(prec->ufvj);
+  pdbRecordType->papFldDes[191]->offset=(short)((char *)&prec->ufvj - (char *)prec);
+  pdbRecordType->papFldDes[192]->size=sizeof(prec->ufvk);
+  pdbRecordType->papFldDes[192]->offset=(short)((char *)&prec->ufvk - (char *)prec);
+  pdbRecordType->papFldDes[193]->size=sizeof(prec->ufvl);
+  pdbRecordType->papFldDes[193]->offset=(short)((char *)&prec->ufvl - (char *)prec);
+  pdbRecordType->papFldDes[194]->size=sizeof(prec->ufvm);
+  pdbRecordType->papFldDes[194]->offset=(short)((char *)&prec->ufvm - (char *)prec);
+  pdbRecordType->papFldDes[195]->size=sizeof(prec->ufvn);
+  pdbRecordType->papFldDes[195]->offset=(short)((char *)&prec->ufvn - (char *)prec);
+  pdbRecordType->papFldDes[196]->size=sizeof(prec->ufvo);
+  pdbRecordType->papFldDes[196]->offset=(short)((char *)&prec->ufvo - (char *)prec);
+  pdbRecordType->papFldDes[197]->size=sizeof(prec->ufvp);
+  pdbRecordType->papFldDes[197]->offset=(short)((char *)&prec->ufvp - (char *)prec);
+  pdbRecordType->papFldDes[198]->size=sizeof(prec->ufvq);
+  pdbRecordType->papFldDes[198]->offset=(short)((char *)&prec->ufvq - (char *)prec);
+  pdbRecordType->papFldDes[199]->size=sizeof(prec->ufvr);
+  pdbRecordType->papFldDes[199]->offset=(short)((char *)&prec->ufvr - (char *)prec);
+  pdbRecordType->papFldDes[200]->size=sizeof(prec->ufvs);
+  pdbRecordType->papFldDes[200]->offset=(short)((char *)&prec->ufvs - (char *)prec);
+  pdbRecordType->papFldDes[201]->size=sizeof(prec->ufvt);
+  pdbRecordType->papFldDes[201]->offset=(short)((char *)&prec->ufvt - (char *)prec);
+  pdbRecordType->papFldDes[202]->size=sizeof(prec->ufvu);
+  pdbRecordType->papFldDes[202]->offset=(short)((char *)&prec->ufvu - (char *)prec);
+  pdbRecordType->papFldDes[203]->size=sizeof(prec->vala);
+  pdbRecordType->papFldDes[203]->offset=(short)((char *)&prec->vala - (char *)prec);
+  pdbRecordType->papFldDes[204]->size=sizeof(prec->valb);
+  pdbRecordType->papFldDes[204]->offset=(short)((char *)&prec->valb - (char *)prec);
+  pdbRecordType->papFldDes[205]->size=sizeof(prec->valc);
+  pdbRecordType->papFldDes[205]->offset=(short)((char *)&prec->valc - (char *)prec);
+  pdbRecordType->papFldDes[206]->size=sizeof(prec->vald);
+  pdbRecordType->papFldDes[206]->offset=(short)((char *)&prec->vald - (char *)prec);
+  pdbRecordType->papFldDes[207]->size=sizeof(prec->vale);
+  pdbRecordType->papFldDes[207]->offset=(short)((char *)&prec->vale - (char *)prec);
+  pdbRecordType->papFldDes[208]->size=sizeof(prec->valf);
+  pdbRecordType->papFldDes[208]->offset=(short)((char *)&prec->valf - (char *)prec);
+  pdbRecordType->papFldDes[209]->size=sizeof(prec->valg);
+  pdbRecordType->papFldDes[209]->offset=(short)((char *)&prec->valg - (char *)prec);
+  pdbRecordType->papFldDes[210]->size=sizeof(prec->valh);
+  pdbRecordType->papFldDes[210]->offset=(short)((char *)&prec->valh - (char *)prec);
+  pdbRecordType->papFldDes[211]->size=sizeof(prec->vali);
+  pdbRecordType->papFldDes[211]->offset=(short)((char *)&prec->vali - (char *)prec);
+  pdbRecordType->papFldDes[212]->size=sizeof(prec->valj);
+  pdbRecordType->papFldDes[212]->offset=(short)((char *)&prec->valj - (char *)prec);
+  pdbRecordType->papFldDes[213]->size=sizeof(prec->valk);
+  pdbRecordType->papFldDes[213]->offset=(short)((char *)&prec->valk - (char *)prec);
+  pdbRecordType->papFldDes[214]->size=sizeof(prec->vall);
+  pdbRecordType->papFldDes[214]->offset=(short)((char *)&prec->vall - (char *)prec);
+  pdbRecordType->papFldDes[215]->size=sizeof(prec->valm);
+  pdbRecordType->papFldDes[215]->offset=(short)((char *)&prec->valm - (char *)prec);
+  pdbRecordType->papFldDes[216]->size=sizeof(prec->valn);
+  pdbRecordType->papFldDes[216]->offset=(short)((char *)&prec->valn - (char *)prec);
+  pdbRecordType->papFldDes[217]->size=sizeof(prec->valo);
+  pdbRecordType->papFldDes[217]->offset=(short)((char *)&prec->valo - (char *)prec);
+  pdbRecordType->papFldDes[218]->size=sizeof(prec->valp);
+  pdbRecordType->papFldDes[218]->offset=(short)((char *)&prec->valp - (char *)prec);
+  pdbRecordType->papFldDes[219]->size=sizeof(prec->valq);
+  pdbRecordType->papFldDes[219]->offset=(short)((char *)&prec->valq - (char *)prec);
+  pdbRecordType->papFldDes[220]->size=sizeof(prec->valr);
+  pdbRecordType->papFldDes[220]->offset=(short)((char *)&prec->valr - (char *)prec);
+  pdbRecordType->papFldDes[221]->size=sizeof(prec->vals);
+  pdbRecordType->papFldDes[221]->offset=(short)((char *)&prec->vals - (char *)prec);
+  pdbRecordType->papFldDes[222]->size=sizeof(prec->valt);
+  pdbRecordType->papFldDes[222]->offset=(short)((char *)&prec->valt - (char *)prec);
+  pdbRecordType->papFldDes[223]->size=sizeof(prec->valu);
+  pdbRecordType->papFldDes[223]->offset=(short)((char *)&prec->valu - (char *)prec);
+  pdbRecordType->papFldDes[224]->size=sizeof(prec->ovla);
+  pdbRecordType->papFldDes[224]->offset=(short)((char *)&prec->ovla - (char *)prec);
+  pdbRecordType->papFldDes[225]->size=sizeof(prec->ovlb);
+  pdbRecordType->papFldDes[225]->offset=(short)((char *)&prec->ovlb - (char *)prec);
+  pdbRecordType->papFldDes[226]->size=sizeof(prec->ovlc);
+  pdbRecordType->papFldDes[226]->offset=(short)((char *)&prec->ovlc - (char *)prec);
+  pdbRecordType->papFldDes[227]->size=sizeof(prec->ovld);
+  pdbRecordType->papFldDes[227]->offset=(short)((char *)&prec->ovld - (char *)prec);
+  pdbRecordType->papFldDes[228]->size=sizeof(prec->ovle);
+  pdbRecordType->papFldDes[228]->offset=(short)((char *)&prec->ovle - (char *)prec);
+  pdbRecordType->papFldDes[229]->size=sizeof(prec->ovlf);
+  pdbRecordType->papFldDes[229]->offset=(short)((char *)&prec->ovlf - (char *)prec);
+  pdbRecordType->papFldDes[230]->size=sizeof(prec->ovlg);
+  pdbRecordType->papFldDes[230]->offset=(short)((char *)&prec->ovlg - (char *)prec);
+  pdbRecordType->papFldDes[231]->size=sizeof(prec->ovlh);
+  pdbRecordType->papFldDes[231]->offset=(short)((char *)&prec->ovlh - (char *)prec);
+  pdbRecordType->papFldDes[232]->size=sizeof(prec->ovli);
+  pdbRecordType->papFldDes[232]->offset=(short)((char *)&prec->ovli - (char *)prec);
+  pdbRecordType->papFldDes[233]->size=sizeof(prec->ovlj);
+  pdbRecordType->papFldDes[233]->offset=(short)((char *)&prec->ovlj - (char *)prec);
+  pdbRecordType->papFldDes[234]->size=sizeof(prec->ovlk);
+  pdbRecordType->papFldDes[234]->offset=(short)((char *)&prec->ovlk - (char *)prec);
+  pdbRecordType->papFldDes[235]->size=sizeof(prec->ovll);
+  pdbRecordType->papFldDes[235]->offset=(short)((char *)&prec->ovll - (char *)prec);
+  pdbRecordType->papFldDes[236]->size=sizeof(prec->ovlm);
+  pdbRecordType->papFldDes[236]->offset=(short)((char *)&prec->ovlm - (char *)prec);
+  pdbRecordType->papFldDes[237]->size=sizeof(prec->ovln);
+  pdbRecordType->papFldDes[237]->offset=(short)((char *)&prec->ovln - (char *)prec);
+  pdbRecordType->papFldDes[238]->size=sizeof(prec->ovlo);
+  pdbRecordType->papFldDes[238]->offset=(short)((char *)&prec->ovlo - (char *)prec);
+  pdbRecordType->papFldDes[239]->size=sizeof(prec->ovlp);
+  pdbRecordType->papFldDes[239]->offset=(short)((char *)&prec->ovlp - (char *)prec);
+  pdbRecordType->papFldDes[240]->size=sizeof(prec->ovlq);
+  pdbRecordType->papFldDes[240]->offset=(short)((char *)&prec->ovlq - (char *)prec);
+  pdbRecordType->papFldDes[241]->size=sizeof(prec->ovlr);
+  pdbRecordType->papFldDes[241]->offset=(short)((char *)&prec->ovlr - (char *)prec);
+  pdbRecordType->papFldDes[242]->size=sizeof(prec->ovls);
+  pdbRecordType->papFldDes[242]->offset=(short)((char *)&prec->ovls - (char *)prec);
+  pdbRecordType->papFldDes[243]->size=sizeof(prec->ovlt);
+  pdbRecordType->papFldDes[243]->offset=(short)((char *)&prec->ovlt - (char *)prec);
+  pdbRecordType->papFldDes[244]->size=sizeof(prec->ovlu);
+  pdbRecordType->papFldDes[244]->offset=(short)((char *)&prec->ovlu - (char *)prec);
+  pdbRecordType->papFldDes[245]->size=sizeof(prec->ftva);
+  pdbRecordType->papFldDes[245]->offset=(short)((char *)&prec->ftva - (char *)prec);
+  pdbRecordType->papFldDes[246]->size=sizeof(prec->ftvb);
+  pdbRecordType->papFldDes[246]->offset=(short)((char *)&prec->ftvb - (char *)prec);
+  pdbRecordType->papFldDes[247]->size=sizeof(prec->ftvc);
+  pdbRecordType->papFldDes[247]->offset=(short)((char *)&prec->ftvc - (char *)prec);
+  pdbRecordType->papFldDes[248]->size=sizeof(prec->ftvd);
+  pdbRecordType->papFldDes[248]->offset=(short)((char *)&prec->ftvd - (char *)prec);
+  pdbRecordType->papFldDes[249]->size=sizeof(prec->ftve);
+  pdbRecordType->papFldDes[249]->offset=(short)((char *)&prec->ftve - (char *)prec);
+  pdbRecordType->papFldDes[250]->size=sizeof(prec->ftvf);
+  pdbRecordType->papFldDes[250]->offset=(short)((char *)&prec->ftvf - (char *)prec);
+  pdbRecordType->papFldDes[251]->size=sizeof(prec->ftvg);
+  pdbRecordType->papFldDes[251]->offset=(short)((char *)&prec->ftvg - (char *)prec);
+  pdbRecordType->papFldDes[252]->size=sizeof(prec->ftvh);
+  pdbRecordType->papFldDes[252]->offset=(short)((char *)&prec->ftvh - (char *)prec);
+  pdbRecordType->papFldDes[253]->size=sizeof(prec->ftvi);
+  pdbRecordType->papFldDes[253]->offset=(short)((char *)&prec->ftvi - (char *)prec);
+  pdbRecordType->papFldDes[254]->size=sizeof(prec->ftvj);
+  pdbRecordType->papFldDes[254]->offset=(short)((char *)&prec->ftvj - (char *)prec);
+  pdbRecordType->papFldDes[255]->size=sizeof(prec->ftvk);
+  pdbRecordType->papFldDes[255]->offset=(short)((char *)&prec->ftvk - (char *)prec);
+  pdbRecordType->papFldDes[256]->size=sizeof(prec->ftvl);
+  pdbRecordType->papFldDes[256]->offset=(short)((char *)&prec->ftvl - (char *)prec);
+  pdbRecordType->papFldDes[257]->size=sizeof(prec->ftvm);
+  pdbRecordType->papFldDes[257]->offset=(short)((char *)&prec->ftvm - (char *)prec);
+  pdbRecordType->papFldDes[258]->size=sizeof(prec->ftvn);
+  pdbRecordType->papFldDes[258]->offset=(short)((char *)&prec->ftvn - (char *)prec);
+  pdbRecordType->papFldDes[259]->size=sizeof(prec->ftvo);
+  pdbRecordType->papFldDes[259]->offset=(short)((char *)&prec->ftvo - (char *)prec);
+  pdbRecordType->papFldDes[260]->size=sizeof(prec->ftvp);
+  pdbRecordType->papFldDes[260]->offset=(short)((char *)&prec->ftvp - (char *)prec);
+  pdbRecordType->papFldDes[261]->size=sizeof(prec->ftvq);
+  pdbRecordType->papFldDes[261]->offset=(short)((char *)&prec->ftvq - (char *)prec);
+  pdbRecordType->papFldDes[262]->size=sizeof(prec->ftvr);
+  pdbRecordType->papFldDes[262]->offset=(short)((char *)&prec->ftvr - (char *)prec);
+  pdbRecordType->papFldDes[263]->size=sizeof(prec->ftvs);
+  pdbRecordType->papFldDes[263]->offset=(short)((char *)&prec->ftvs - (char *)prec);
+  pdbRecordType->papFldDes[264]->size=sizeof(prec->ftvt);
+  pdbRecordType->papFldDes[264]->offset=(short)((char *)&prec->ftvt - (char *)prec);
+  pdbRecordType->papFldDes[265]->size=sizeof(prec->ftvu);
+  pdbRecordType->papFldDes[265]->offset=(short)((char *)&prec->ftvu - (char *)prec);
+  pdbRecordType->papFldDes[266]->size=sizeof(prec->nova);
+  pdbRecordType->papFldDes[266]->offset=(short)((char *)&prec->nova - (char *)prec);
+  pdbRecordType->papFldDes[267]->size=sizeof(prec->novb);
+  pdbRecordType->papFldDes[267]->offset=(short)((char *)&prec->novb - (char *)prec);
+  pdbRecordType->papFldDes[268]->size=sizeof(prec->novc);
+  pdbRecordType->papFldDes[268]->offset=(short)((char *)&prec->novc - (char *)prec);
+  pdbRecordType->papFldDes[269]->size=sizeof(prec->novd);
+  pdbRecordType->papFldDes[269]->offset=(short)((char *)&prec->novd - (char *)prec);
+  pdbRecordType->papFldDes[270]->size=sizeof(prec->nove);
+  pdbRecordType->papFldDes[270]->offset=(short)((char *)&prec->nove - (char *)prec);
+  pdbRecordType->papFldDes[271]->size=sizeof(prec->novf);
+  pdbRecordType->papFldDes[271]->offset=(short)((char *)&prec->novf - (char *)prec);
+  pdbRecordType->papFldDes[272]->size=sizeof(prec->novg);
+  pdbRecordType->papFldDes[272]->offset=(short)((char *)&prec->novg - (char *)prec);
+  pdbRecordType->papFldDes[273]->size=sizeof(prec->novh);
+  pdbRecordType->papFldDes[273]->offset=(short)((char *)&prec->novh - (char *)prec);
+  pdbRecordType->papFldDes[274]->size=sizeof(prec->novi);
+  pdbRecordType->papFldDes[274]->offset=(short)((char *)&prec->novi - (char *)prec);
+  pdbRecordType->papFldDes[275]->size=sizeof(prec->novj);
+  pdbRecordType->papFldDes[275]->offset=(short)((char *)&prec->novj - (char *)prec);
+  pdbRecordType->papFldDes[276]->size=sizeof(prec->novk);
+  pdbRecordType->papFldDes[276]->offset=(short)((char *)&prec->novk - (char *)prec);
+  pdbRecordType->papFldDes[277]->size=sizeof(prec->novl);
+  pdbRecordType->papFldDes[277]->offset=(short)((char *)&prec->novl - (char *)prec);
+  pdbRecordType->papFldDes[278]->size=sizeof(prec->novm);
+  pdbRecordType->papFldDes[278]->offset=(short)((char *)&prec->novm - (char *)prec);
+  pdbRecordType->papFldDes[279]->size=sizeof(prec->novn);
+  pdbRecordType->papFldDes[279]->offset=(short)((char *)&prec->novn - (char *)prec);
+  pdbRecordType->papFldDes[280]->size=sizeof(prec->novo);
+  pdbRecordType->papFldDes[280]->offset=(short)((char *)&prec->novo - (char *)prec);
+  pdbRecordType->papFldDes[281]->size=sizeof(prec->novp);
+  pdbRecordType->papFldDes[281]->offset=(short)((char *)&prec->novp - (char *)prec);
+  pdbRecordType->papFldDes[282]->size=sizeof(prec->novq);
+  pdbRecordType->papFldDes[282]->offset=(short)((char *)&prec->novq - (char *)prec);
+  pdbRecordType->papFldDes[283]->size=sizeof(prec->novr);
+  pdbRecordType->papFldDes[283]->offset=(short)((char *)&prec->novr - (char *)prec);
+  pdbRecordType->papFldDes[284]->size=sizeof(prec->novs);
+  pdbRecordType->papFldDes[284]->offset=(short)((char *)&prec->novs - (char *)prec);
+  pdbRecordType->papFldDes[285]->size=sizeof(prec->novt);
+  pdbRecordType->papFldDes[285]->offset=(short)((char *)&prec->novt - (char *)prec);
+  pdbRecordType->papFldDes[286]->size=sizeof(prec->novu);
+  pdbRecordType->papFldDes[286]->offset=(short)((char *)&prec->novu - (char *)prec);
+  pdbRecordType->papFldDes[287]->size=sizeof(prec->tova);
+  pdbRecordType->papFldDes[287]->offset=(short)((char *)&prec->tova - (char *)prec);
+  pdbRecordType->papFldDes[288]->size=sizeof(prec->tovb);
+  pdbRecordType->papFldDes[288]->offset=(short)((char *)&prec->tovb - (char *)prec);
+  pdbRecordType->papFldDes[289]->size=sizeof(prec->tovc);
+  pdbRecordType->papFldDes[289]->offset=(short)((char *)&prec->tovc - (char *)prec);
+  pdbRecordType->papFldDes[290]->size=sizeof(prec->tovd);
+  pdbRecordType->papFldDes[290]->offset=(short)((char *)&prec->tovd - (char *)prec);
+  pdbRecordType->papFldDes[291]->size=sizeof(prec->tove);
+  pdbRecordType->papFldDes[291]->offset=(short)((char *)&prec->tove - (char *)prec);
+  pdbRecordType->papFldDes[292]->size=sizeof(prec->tovf);
+  pdbRecordType->papFldDes[292]->offset=(short)((char *)&prec->tovf - (char *)prec);
+  pdbRecordType->papFldDes[293]->size=sizeof(prec->tovg);
+  pdbRecordType->papFldDes[293]->offset=(short)((char *)&prec->tovg - (char *)prec);
+  pdbRecordType->papFldDes[294]->size=sizeof(prec->tovh);
+  pdbRecordType->papFldDes[294]->offset=(short)((char *)&prec->tovh - (char *)prec);
+  pdbRecordType->papFldDes[295]->size=sizeof(prec->tovi);
+  pdbRecordType->papFldDes[295]->offset=(short)((char *)&prec->tovi - (char *)prec);
+  pdbRecordType->papFldDes[296]->size=sizeof(prec->tovj);
+  pdbRecordType->papFldDes[296]->offset=(short)((char *)&prec->tovj - (char *)prec);
+  pdbRecordType->papFldDes[297]->size=sizeof(prec->tovk);
+  pdbRecordType->papFldDes[297]->offset=(short)((char *)&prec->tovk - (char *)prec);
+  pdbRecordType->papFldDes[298]->size=sizeof(prec->tovl);
+  pdbRecordType->papFldDes[298]->offset=(short)((char *)&prec->tovl - (char *)prec);
+  pdbRecordType->papFldDes[299]->size=sizeof(prec->tovm);
+  pdbRecordType->papFldDes[299]->offset=(short)((char *)&prec->tovm - (char *)prec);
+  pdbRecordType->papFldDes[300]->size=sizeof(prec->tovn);
+  pdbRecordType->papFldDes[300]->offset=(short)((char *)&prec->tovn - (char *)prec);
+  pdbRecordType->papFldDes[301]->size=sizeof(prec->tovo);
+  pdbRecordType->papFldDes[301]->offset=(short)((char *)&prec->tovo - (char *)prec);
+  pdbRecordType->papFldDes[302]->size=sizeof(prec->tovp);
+  pdbRecordType->papFldDes[302]->offset=(short)((char *)&prec->tovp - (char *)prec);
+  pdbRecordType->papFldDes[303]->size=sizeof(prec->tovq);
+  pdbRecordType->papFldDes[303]->offset=(short)((char *)&prec->tovq - (char *)prec);
+  pdbRecordType->papFldDes[304]->size=sizeof(prec->tovr);
+  pdbRecordType->papFldDes[304]->offset=(short)((char *)&prec->tovr - (char *)prec);
+  pdbRecordType->papFldDes[305]->size=sizeof(prec->tovs);
+  pdbRecordType->papFldDes[305]->offset=(short)((char *)&prec->tovs - (char *)prec);
+  pdbRecordType->papFldDes[306]->size=sizeof(prec->tovt);
+  pdbRecordType->papFldDes[306]->offset=(short)((char *)&prec->tovt - (char *)prec);
+  pdbRecordType->papFldDes[307]->size=sizeof(prec->tovu);
+  pdbRecordType->papFldDes[307]->offset=(short)((char *)&prec->tovu - (char *)prec);
+    pdbRecordType->rec_size = sizeof(*prec);
+    return(0);
+}
+epicsExportRegistrar(genSubRecordSizeOffset);
+#ifdef __cplusplus
+}
+#endif
+#endif /*GEN_SIZE_OFFSET*/
diff --git a/ebctrl/ioc/ebctrlApp/src/O.Common/xxxRecord.h b/ebctrl/ioc/ebctrlApp/src/O.Common/xxxRecord.h
new file mode 100644 (file)
index 0000000..93fabce
--- /dev/null
@@ -0,0 +1,278 @@
+#include "ellLib.h"
+#include "epicsMutex.h"
+#include "link.h"
+#include "epicsTime.h"
+#include "epicsTypes.h"
+#ifndef INCxxxH
+#define INCxxxH
+typedef struct xxxRecord {
+       char            name[61]; /*Record Name*/
+       char            desc[29]; /*Descriptor*/
+       char            asg[29]; /*Access Security Group*/
+       epicsEnum16     scan;   /*Scan Mechanism*/
+       epicsEnum16     pini;   /*Process at iocInit*/
+       short           phas;   /*Scan Phase*/
+       short           evnt;   /*Event Number*/
+       short           tse;    /*Time Stamp Event*/
+       DBLINK          tsel;   /*Time Stamp Link*/
+       epicsEnum16     dtyp;   /*Device Type*/
+       short           disv;   /*Disable Value*/
+       short           disa;   /*Disable*/
+       DBLINK          sdis;   /*Scanning Disable*/
+       epicsMutexId    mlok;   /*Monitor lock*/
+       ELLLIST         mlis;   /*Monitor List*/
+       unsigned char   disp;   /*Disable putField*/
+       unsigned char   proc;   /*Force Processing*/
+       epicsEnum16     stat;   /*Alarm Status*/
+       epicsEnum16     sevr;   /*Alarm Severity*/
+       epicsEnum16     nsta;   /*New Alarm Status*/
+       epicsEnum16     nsev;   /*New Alarm Severity*/
+       epicsEnum16     acks;   /*Alarm Ack Severity*/
+       epicsEnum16     ackt;   /*Alarm Ack Transient*/
+       epicsEnum16     diss;   /*Disable Alarm Sevrty*/
+       unsigned char   lcnt;   /*Lock Count*/
+       unsigned char   pact;   /*Record active*/
+       unsigned char   putf;   /*dbPutField process*/
+       unsigned char   rpro;   /*Reprocess */
+       void            *asp;   /*Access Security Pvt*/
+       struct putNotify *ppn;  /*addr of PUTNOTIFY*/
+       struct putNotifyRecord *ppnr;   /*pputNotifyRecord*/
+       struct scan_element *spvt;      /*Scan Private*/
+       struct rset     *rset;  /*Address of RSET*/
+       struct dset     *dset;  /*DSET address*/
+       void            *dpvt;  /*Device Private*/
+       struct dbRecordType *rdes;      /*Address of dbRecordType*/
+       struct lockRecord *lset;        /*Lock Set*/
+       epicsEnum16     prio;   /*Scheduling Priority*/
+       unsigned char   tpro;   /*Trace Processing*/
+       char bkpt;      /*Break Point*/
+       unsigned char   udf;    /*Undefined*/
+       epicsTimeStamp  time;   /*Time*/
+       DBLINK          flnk;   /*Forward Process Link*/
+       double          val;    /*Current EGU Value*/
+       DBLINK          inp;    /*Input Specification*/
+       short           prec;   /*Display Precision*/
+       char            egu[16]; /*Engineering Units*/
+       float           hopr;   /*High Operating Range*/
+       float           lopr;   /*Low Operating Range*/
+       float           hihi;   /*Hihi Alarm Limit*/
+       float           lolo;   /*Lolo Alarm Limit*/
+       float           high;   /*High Alarm Limit*/
+       float           low;    /*Low Alarm Limit*/
+       epicsEnum16     hhsv;   /*Hihi Severity*/
+       epicsEnum16     llsv;   /*Lolo Severity*/
+       epicsEnum16     hsv;    /*High Severity*/
+       epicsEnum16     lsv;    /*Low Severity*/
+       double          hyst;   /*Alarm Deadband*/
+       double          adel;   /*Archive Deadband*/
+       double          mdel;   /*Monitor Deadband*/
+       double          lalm;   /*Last Value Alarmed*/
+       double          alst;   /*Last Value Archived*/
+       double          mlst;   /*Last Val Monitored*/
+} xxxRecord;
+#define xxxRecordNAME  0
+#define xxxRecordDESC  1
+#define xxxRecordASG   2
+#define xxxRecordSCAN  3
+#define xxxRecordPINI  4
+#define xxxRecordPHAS  5
+#define xxxRecordEVNT  6
+#define xxxRecordTSE   7
+#define xxxRecordTSEL  8
+#define xxxRecordDTYP  9
+#define xxxRecordDISV  10
+#define xxxRecordDISA  11
+#define xxxRecordSDIS  12
+#define xxxRecordMLOK  13
+#define xxxRecordMLIS  14
+#define xxxRecordDISP  15
+#define xxxRecordPROC  16
+#define xxxRecordSTAT  17
+#define xxxRecordSEVR  18
+#define xxxRecordNSTA  19
+#define xxxRecordNSEV  20
+#define xxxRecordACKS  21
+#define xxxRecordACKT  22
+#define xxxRecordDISS  23
+#define xxxRecordLCNT  24
+#define xxxRecordPACT  25
+#define xxxRecordPUTF  26
+#define xxxRecordRPRO  27
+#define xxxRecordASP   28
+#define xxxRecordPPN   29
+#define xxxRecordPPNR  30
+#define xxxRecordSPVT  31
+#define xxxRecordRSET  32
+#define xxxRecordDSET  33
+#define xxxRecordDPVT  34
+#define xxxRecordRDES  35
+#define xxxRecordLSET  36
+#define xxxRecordPRIO  37
+#define xxxRecordTPRO  38
+#define xxxRecordBKPT  39
+#define xxxRecordUDF   40
+#define xxxRecordTIME  41
+#define xxxRecordFLNK  42
+#define xxxRecordVAL   43
+#define xxxRecordINP   44
+#define xxxRecordPREC  45
+#define xxxRecordEGU   46
+#define xxxRecordHOPR  47
+#define xxxRecordLOPR  48
+#define xxxRecordHIHI  49
+#define xxxRecordLOLO  50
+#define xxxRecordHIGH  51
+#define xxxRecordLOW   52
+#define xxxRecordHHSV  53
+#define xxxRecordLLSV  54
+#define xxxRecordHSV   55
+#define xxxRecordLSV   56
+#define xxxRecordHYST  57
+#define xxxRecordADEL  58
+#define xxxRecordMDEL  59
+#define xxxRecordLALM  60
+#define xxxRecordALST  61
+#define xxxRecordMLST  62
+#endif /*INCxxxH*/
+#ifdef GEN_SIZE_OFFSET
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <epicsExport.h>
+static int xxxRecordSizeOffset(dbRecordType *pdbRecordType)
+{
+    xxxRecord *prec = 0;
+  pdbRecordType->papFldDes[0]->size=sizeof(prec->name);
+  pdbRecordType->papFldDes[0]->offset=(short)((char *)&prec->name - (char *)prec);
+  pdbRecordType->papFldDes[1]->size=sizeof(prec->desc);
+  pdbRecordType->papFldDes[1]->offset=(short)((char *)&prec->desc - (char *)prec);
+  pdbRecordType->papFldDes[2]->size=sizeof(prec->asg);
+  pdbRecordType->papFldDes[2]->offset=(short)((char *)&prec->asg - (char *)prec);
+  pdbRecordType->papFldDes[3]->size=sizeof(prec->scan);
+  pdbRecordType->papFldDes[3]->offset=(short)((char *)&prec->scan - (char *)prec);
+  pdbRecordType->papFldDes[4]->size=sizeof(prec->pini);
+  pdbRecordType->papFldDes[4]->offset=(short)((char *)&prec->pini - (char *)prec);
+  pdbRecordType->papFldDes[5]->size=sizeof(prec->phas);
+  pdbRecordType->papFldDes[5]->offset=(short)((char *)&prec->phas - (char *)prec);
+  pdbRecordType->papFldDes[6]->size=sizeof(prec->evnt);
+  pdbRecordType->papFldDes[6]->offset=(short)((char *)&prec->evnt - (char *)prec);
+  pdbRecordType->papFldDes[7]->size=sizeof(prec->tse);
+  pdbRecordType->papFldDes[7]->offset=(short)((char *)&prec->tse - (char *)prec);
+  pdbRecordType->papFldDes[8]->size=sizeof(prec->tsel);
+  pdbRecordType->papFldDes[8]->offset=(short)((char *)&prec->tsel - (char *)prec);
+  pdbRecordType->papFldDes[9]->size=sizeof(prec->dtyp);
+  pdbRecordType->papFldDes[9]->offset=(short)((char *)&prec->dtyp - (char *)prec);
+  pdbRecordType->papFldDes[10]->size=sizeof(prec->disv);
+  pdbRecordType->papFldDes[10]->offset=(short)((char *)&prec->disv - (char *)prec);
+  pdbRecordType->papFldDes[11]->size=sizeof(prec->disa);
+  pdbRecordType->papFldDes[11]->offset=(short)((char *)&prec->disa - (char *)prec);
+  pdbRecordType->papFldDes[12]->size=sizeof(prec->sdis);
+  pdbRecordType->papFldDes[12]->offset=(short)((char *)&prec->sdis - (char *)prec);
+  pdbRecordType->papFldDes[13]->size=sizeof(prec->mlok);
+  pdbRecordType->papFldDes[13]->offset=(short)((char *)&prec->mlok - (char *)prec);
+  pdbRecordType->papFldDes[14]->size=sizeof(prec->mlis);
+  pdbRecordType->papFldDes[14]->offset=(short)((char *)&prec->mlis - (char *)prec);
+  pdbRecordType->papFldDes[15]->size=sizeof(prec->disp);
+  pdbRecordType->papFldDes[15]->offset=(short)((char *)&prec->disp - (char *)prec);
+  pdbRecordType->papFldDes[16]->size=sizeof(prec->proc);
+  pdbRecordType->papFldDes[16]->offset=(short)((char *)&prec->proc - (char *)prec);
+  pdbRecordType->papFldDes[17]->size=sizeof(prec->stat);
+  pdbRecordType->papFldDes[17]->offset=(short)((char *)&prec->stat - (char *)prec);
+  pdbRecordType->papFldDes[18]->size=sizeof(prec->sevr);
+  pdbRecordType->papFldDes[18]->offset=(short)((char *)&prec->sevr - (char *)prec);
+  pdbRecordType->papFldDes[19]->size=sizeof(prec->nsta);
+  pdbRecordType->papFldDes[19]->offset=(short)((char *)&prec->nsta - (char *)prec);
+  pdbRecordType->papFldDes[20]->size=sizeof(prec->nsev);
+  pdbRecordType->papFldDes[20]->offset=(short)((char *)&prec->nsev - (char *)prec);
+  pdbRecordType->papFldDes[21]->size=sizeof(prec->acks);
+  pdbRecordType->papFldDes[21]->offset=(short)((char *)&prec->acks - (char *)prec);
+  pdbRecordType->papFldDes[22]->size=sizeof(prec->ackt);
+  pdbRecordType->papFldDes[22]->offset=(short)((char *)&prec->ackt - (char *)prec);
+  pdbRecordType->papFldDes[23]->size=sizeof(prec->diss);
+  pdbRecordType->papFldDes[23]->offset=(short)((char *)&prec->diss - (char *)prec);
+  pdbRecordType->papFldDes[24]->size=sizeof(prec->lcnt);
+  pdbRecordType->papFldDes[24]->offset=(short)((char *)&prec->lcnt - (char *)prec);
+  pdbRecordType->papFldDes[25]->size=sizeof(prec->pact);
+  pdbRecordType->papFldDes[25]->offset=(short)((char *)&prec->pact - (char *)prec);
+  pdbRecordType->papFldDes[26]->size=sizeof(prec->putf);
+  pdbRecordType->papFldDes[26]->offset=(short)((char *)&prec->putf - (char *)prec);
+  pdbRecordType->papFldDes[27]->size=sizeof(prec->rpro);
+  pdbRecordType->papFldDes[27]->offset=(short)((char *)&prec->rpro - (char *)prec);
+  pdbRecordType->papFldDes[28]->size=sizeof(prec->asp);
+  pdbRecordType->papFldDes[28]->offset=(short)((char *)&prec->asp - (char *)prec);
+  pdbRecordType->papFldDes[29]->size=sizeof(prec->ppn);
+  pdbRecordType->papFldDes[29]->offset=(short)((char *)&prec->ppn - (char *)prec);
+  pdbRecordType->papFldDes[30]->size=sizeof(prec->ppnr);
+  pdbRecordType->papFldDes[30]->offset=(short)((char *)&prec->ppnr - (char *)prec);
+  pdbRecordType->papFldDes[31]->size=sizeof(prec->spvt);
+  pdbRecordType->papFldDes[31]->offset=(short)((char *)&prec->spvt - (char *)prec);
+  pdbRecordType->papFldDes[32]->size=sizeof(prec->rset);
+  pdbRecordType->papFldDes[32]->offset=(short)((char *)&prec->rset - (char *)prec);
+  pdbRecordType->papFldDes[33]->size=sizeof(prec->dset);
+  pdbRecordType->papFldDes[33]->offset=(short)((char *)&prec->dset - (char *)prec);
+  pdbRecordType->papFldDes[34]->size=sizeof(prec->dpvt);
+  pdbRecordType->papFldDes[34]->offset=(short)((char *)&prec->dpvt - (char *)prec);
+  pdbRecordType->papFldDes[35]->size=sizeof(prec->rdes);
+  pdbRecordType->papFldDes[35]->offset=(short)((char *)&prec->rdes - (char *)prec);
+  pdbRecordType->papFldDes[36]->size=sizeof(prec->lset);
+  pdbRecordType->papFldDes[36]->offset=(short)((char *)&prec->lset - (char *)prec);
+  pdbRecordType->papFldDes[37]->size=sizeof(prec->prio);
+  pdbRecordType->papFldDes[37]->offset=(short)((char *)&prec->prio - (char *)prec);
+  pdbRecordType->papFldDes[38]->size=sizeof(prec->tpro);
+  pdbRecordType->papFldDes[38]->offset=(short)((char *)&prec->tpro - (char *)prec);
+  pdbRecordType->papFldDes[39]->size=sizeof(prec->bkpt);
+  pdbRecordType->papFldDes[39]->offset=(short)((char *)&prec->bkpt - (char *)prec);
+  pdbRecordType->papFldDes[40]->size=sizeof(prec->udf);
+  pdbRecordType->papFldDes[40]->offset=(short)((char *)&prec->udf - (char *)prec);
+  pdbRecordType->papFldDes[41]->size=sizeof(prec->time);
+  pdbRecordType->papFldDes[41]->offset=(short)((char *)&prec->time - (char *)prec);
+  pdbRecordType->papFldDes[42]->size=sizeof(prec->flnk);
+  pdbRecordType->papFldDes[42]->offset=(short)((char *)&prec->flnk - (char *)prec);
+  pdbRecordType->papFldDes[43]->size=sizeof(prec->val);
+  pdbRecordType->papFldDes[43]->offset=(short)((char *)&prec->val - (char *)prec);
+  pdbRecordType->papFldDes[44]->size=sizeof(prec->inp);
+  pdbRecordType->papFldDes[44]->offset=(short)((char *)&prec->inp - (char *)prec);
+  pdbRecordType->papFldDes[45]->size=sizeof(prec->prec);
+  pdbRecordType->papFldDes[45]->offset=(short)((char *)&prec->prec - (char *)prec);
+  pdbRecordType->papFldDes[46]->size=sizeof(prec->egu);
+  pdbRecordType->papFldDes[46]->offset=(short)((char *)&prec->egu - (char *)prec);
+  pdbRecordType->papFldDes[47]->size=sizeof(prec->hopr);
+  pdbRecordType->papFldDes[47]->offset=(short)((char *)&prec->hopr - (char *)prec);
+  pdbRecordType->papFldDes[48]->size=sizeof(prec->lopr);
+  pdbRecordType->papFldDes[48]->offset=(short)((char *)&prec->lopr - (char *)prec);
+  pdbRecordType->papFldDes[49]->size=sizeof(prec->hihi);
+  pdbRecordType->papFldDes[49]->offset=(short)((char *)&prec->hihi - (char *)prec);
+  pdbRecordType->papFldDes[50]->size=sizeof(prec->lolo);
+  pdbRecordType->papFldDes[50]->offset=(short)((char *)&prec->lolo - (char *)prec);
+  pdbRecordType->papFldDes[51]->size=sizeof(prec->high);
+  pdbRecordType->papFldDes[51]->offset=(short)((char *)&prec->high - (char *)prec);
+  pdbRecordType->papFldDes[52]->size=sizeof(prec->low);
+  pdbRecordType->papFldDes[52]->offset=(short)((char *)&prec->low - (char *)prec);
+  pdbRecordType->papFldDes[53]->size=sizeof(prec->hhsv);
+  pdbRecordType->papFldDes[53]->offset=(short)((char *)&prec->hhsv - (char *)prec);
+  pdbRecordType->papFldDes[54]->size=sizeof(prec->llsv);
+  pdbRecordType->papFldDes[54]->offset=(short)((char *)&prec->llsv - (char *)prec);
+  pdbRecordType->papFldDes[55]->size=sizeof(prec->hsv);
+  pdbRecordType->papFldDes[55]->offset=(short)((char *)&prec->hsv - (char *)prec);
+  pdbRecordType->papFldDes[56]->size=sizeof(prec->lsv);
+  pdbRecordType->papFldDes[56]->offset=(short)((char *)&prec->lsv - (char *)prec);
+  pdbRecordType->papFldDes[57]->size=sizeof(prec->hyst);
+  pdbRecordType->papFldDes[57]->offset=(short)((char *)&prec->hyst - (char *)prec);
+  pdbRecordType->papFldDes[58]->size=sizeof(prec->adel);
+  pdbRecordType->papFldDes[58]->offset=(short)((char *)&prec->adel - (char *)prec);
+  pdbRecordType->papFldDes[59]->size=sizeof(prec->mdel);
+  pdbRecordType->papFldDes[59]->offset=(short)((char *)&prec->mdel - (char *)prec);
+  pdbRecordType->papFldDes[60]->size=sizeof(prec->lalm);
+  pdbRecordType->papFldDes[60]->offset=(short)((char *)&prec->lalm - (char *)prec);
+  pdbRecordType->papFldDes[61]->size=sizeof(prec->alst);
+  pdbRecordType->papFldDes[61]->offset=(short)((char *)&prec->alst - (char *)prec);
+  pdbRecordType->papFldDes[62]->size=sizeof(prec->mlst);
+  pdbRecordType->papFldDes[62]->offset=(short)((char *)&prec->mlst - (char *)prec);
+    pdbRecordType->rec_size = sizeof(*prec);
+    return(0);
+}
+epicsExportRegistrar(xxxRecordSizeOffset);
+#ifdef __cplusplus
+}
+#endif
+#endif /*GEN_SIZE_OFFSET*/
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/Makefile b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/Makefile
new file mode 100644 (file)
index 0000000..da5269a
--- /dev/null
@@ -0,0 +1,10 @@
+#This Makefile created by makeMakefile.pl
+
+
+all :
+       $(MAKE) -f ../Makefile TOP=../../.. T_A=linux-x86  $@
+
+.DEFAULT: force
+       $(MAKE) -f ../Makefile TOP=../../.. T_A=linux-x86  $@
+
+force:  ;
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/MakefileInclude b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/MakefileInclude
new file mode 100644 (file)
index 0000000..b78ba4a
--- /dev/null
@@ -0,0 +1,359 @@
+#Do not modify this file.
+#This file is created during the build.
+
+ifneq ($(strip $(ebctrl_SRCS_$(OS_CLASS))),)
+ebctrl_SRCS+=$(subst -nil-,,$(ebctrl_SRCS_$(OS_CLASS)))
+else
+ifdef ebctrl_SRCS_DEFAULT
+ebctrl_SRCS+=$(ebctrl_SRCS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(ebctrl_RCS_$(OS_CLASS))),)
+ebctrl_RCS+=$(subst -nil-,,$(ebctrl_RCS_$(OS_CLASS)))
+else
+ifdef ebctrl_RCS_DEFAULT
+ebctrl_RCS+=$(ebctrl_RCS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(ebctrl_OBJS_$(OS_CLASS))),)
+ebctrl_OBJS+=$(subst -nil-,,$(ebctrl_OBJS_$(OS_CLASS)))
+else
+ifdef ebctrl_OBJS_DEFAULT
+ebctrl_OBJS+=$(ebctrl_OBJS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(ebctrl_LDFLAGS_$(OS_CLASS))),)
+ebctrl_LDFLAGS+=$(subst -nil-,,$(ebctrl_LDFLAGS_$(OS_CLASS)))
+else
+ifdef ebctrl_LDFLAGS_DEFAULT
+ebctrl_LDFLAGS+=$(ebctrl_LDFLAGS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(ebctrl_OBJLIBS_$(OS_CLASS))),)
+ebctrl_OBJLIBS+=$(subst -nil-,,$(ebctrl_OBJLIBS_$(OS_CLASS)))
+else
+ifdef ebctrl_OBJLIBS_DEFAULT
+ebctrl_OBJLIBS+=$(ebctrl_OBJLIBS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(ebctrl_LDOBJS_$(OS_CLASS))),)
+ebctrl_LDOBJS+=$(subst -nil-,,$(ebctrl_LDOBJS_$(OS_CLASS)))
+else
+ifdef ebctrl_LDOBJS_DEFAULT
+ebctrl_LDOBJS+=$(ebctrl_LDOBJS_DEFAULT)
+endif
+endif
+ebctrl_LDLIBS+=$(ebctrl_LIBS)
+ifneq ($(strip $(ebctrl_LIBS_$(OS_CLASS))),)
+ebctrl_LDLIBS+=$(subst -nil-,,$(ebctrl_LIBS_$(OS_CLASS)))
+else
+ifdef ebctrl_LIBS_DEFAULT
+ebctrl_LDLIBS+=$(ebctrl_LIBS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(ebctrl_SYS_LIBS_$(OS_CLASS))),)
+ebctrl_SYS_LIBS+=$(subst -nil-,,$(ebctrl_SYS_LIBS_$(OS_CLASS)))
+else
+ifdef ebctrl_SYS_LIBS_DEFAULT
+ebctrl_SYS_LIBS+=$(ebctrl_SYS_LIBS_DEFAULT)
+endif
+endif
+ebctrl_OBJS+=$(addsuffix $(OBJ),$(basename $(ebctrl_SRCS)))
+
+ifeq ($(filter ebctrl,$(TESTPROD) $(PROD)),ebctrl)
+ifeq (,$(strip $(ebctrl_OBJS) $(PRODUCT_OBJS)))
+ebctrl_OBJS+=ebctrl$(OBJ)
+endif
+ebctrl_RESS+=$(addsuffix $(RES),$(basename $(ebctrl_RCS)))
+ebctrl_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(ebctrl_OBJS)))
+ebctrl_DEPLIBS=$(foreach lib, $(ebctrl_LDLIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+ebctrl$(EXE): $(ebctrl_OBJSNAME) $(ebctrl_RESS) $(ebctrl_DEPLIBS)
+endif
+
+ifeq ($(filter ebctrl,$(LIBRARY)),ebctrl)
+ifneq ($(filter ebctrl,$(LOADABLE_LIBRARY)),ebctrl)
+ifneq (,$(strip $(ebctrl_OBJS) $(LIBRARY_OBJS)))
+BUILD_LIBRARY += ebctrl
+endif
+ebctrl_RESS+=$(addsuffix $(RES),$(basename $(ebctrl_RCS)))
+ebctrl_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(ebctrl_OBJS)))
+ebctrl_DEPLIBS=$(foreach lib, $(ebctrl_LDLIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+ebctrl_DLL_DEPLIBS=$(foreach lib, $(ebctrl_DLL_LIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+$(LIB_PREFIX)ebctrl$(LIB_SUFFIX):$(ebctrl_OBJSNAME) $(ebctrl_RESS)
+$(LIB_PREFIX)ebctrl$(LIB_SUFFIX):$(ebctrl_DEPLIBS)
+$(LIB_PREFIX)ebctrl$(SHRLIB_SUFFIX):$(ebctrl_OBJSNAME) $(ebctrl_RESS)
+$(LIB_PREFIX)ebctrl$(SHRLIB_SUFFIX):$(ebctrl_DEPLIBS)
+$(LIB_PREFIX)ebctrl$(SHRLIB_SUFFIX):$(ebctrl_DLL_DEPLIBS)
+endif
+endif
+ifeq ($(filter ebctrl,$(LOADABLE_LIBRARY)),ebctrl)
+ifneq (,$(strip $(ebctrl_OBJS) $(LIBRARY_OBJS)))
+LOADABLE_BUILD_LIBRARY += ebctrl
+endif
+ebctrl_RESS+=$(addsuffix $(RES),$(basename $(ebctrl_RCS)))
+ebctrl_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(ebctrl_OBJS)))
+ebctrl_DEPLIBS=$(foreach lib, $(ebctrl_LDLIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+ebctrl_DLL_DEPLIBS=$(foreach lib, $(ebctrl_DLL_LIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+$(LOADABLE_SHRLIB_PREFIX)ebctrl$(LOADABLE_SHRLIB_SUFFIX):$(ebctrl_OBJSNAME) $(ebctrl_RESS)
+$(LOADABLE_SHRLIB_PREFIX)ebctrl$(LOADABLE_SHRLIB_SUFFIX):$(ebctrl_DEPLIBS)
+$(LOADABLE_SHRLIB_PREFIX)ebctrl$(LOADABLE_SHRLIB_SUFFIX):$(ebctrl_DLL_DEPLIBS)
+endif
+
+
+ifneq ($(strip $(xxxSupport_SRCS_$(OS_CLASS))),)
+xxxSupport_SRCS+=$(subst -nil-,,$(xxxSupport_SRCS_$(OS_CLASS)))
+else
+ifdef xxxSupport_SRCS_DEFAULT
+xxxSupport_SRCS+=$(xxxSupport_SRCS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(xxxSupport_RCS_$(OS_CLASS))),)
+xxxSupport_RCS+=$(subst -nil-,,$(xxxSupport_RCS_$(OS_CLASS)))
+else
+ifdef xxxSupport_RCS_DEFAULT
+xxxSupport_RCS+=$(xxxSupport_RCS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(xxxSupport_OBJS_$(OS_CLASS))),)
+xxxSupport_OBJS+=$(subst -nil-,,$(xxxSupport_OBJS_$(OS_CLASS)))
+else
+ifdef xxxSupport_OBJS_DEFAULT
+xxxSupport_OBJS+=$(xxxSupport_OBJS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(xxxSupport_LDFLAGS_$(OS_CLASS))),)
+xxxSupport_LDFLAGS+=$(subst -nil-,,$(xxxSupport_LDFLAGS_$(OS_CLASS)))
+else
+ifdef xxxSupport_LDFLAGS_DEFAULT
+xxxSupport_LDFLAGS+=$(xxxSupport_LDFLAGS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(xxxSupport_OBJLIBS_$(OS_CLASS))),)
+xxxSupport_OBJLIBS+=$(subst -nil-,,$(xxxSupport_OBJLIBS_$(OS_CLASS)))
+else
+ifdef xxxSupport_OBJLIBS_DEFAULT
+xxxSupport_OBJLIBS+=$(xxxSupport_OBJLIBS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(xxxSupport_LDOBJS_$(OS_CLASS))),)
+xxxSupport_LDOBJS+=$(subst -nil-,,$(xxxSupport_LDOBJS_$(OS_CLASS)))
+else
+ifdef xxxSupport_LDOBJS_DEFAULT
+xxxSupport_LDOBJS+=$(xxxSupport_LDOBJS_DEFAULT)
+endif
+endif
+xxxSupport_LDLIBS+=$(xxxSupport_LIBS)
+ifneq ($(strip $(xxxSupport_LIBS_$(OS_CLASS))),)
+xxxSupport_LDLIBS+=$(subst -nil-,,$(xxxSupport_LIBS_$(OS_CLASS)))
+else
+ifdef xxxSupport_LIBS_DEFAULT
+xxxSupport_LDLIBS+=$(xxxSupport_LIBS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(xxxSupport_SYS_LIBS_$(OS_CLASS))),)
+xxxSupport_SYS_LIBS+=$(subst -nil-,,$(xxxSupport_SYS_LIBS_$(OS_CLASS)))
+else
+ifdef xxxSupport_SYS_LIBS_DEFAULT
+xxxSupport_SYS_LIBS+=$(xxxSupport_SYS_LIBS_DEFAULT)
+endif
+endif
+xxxSupport_OBJS+=$(addsuffix $(OBJ),$(basename $(xxxSupport_SRCS)))
+
+ifeq ($(filter xxxSupport,$(TESTPROD) $(PROD)),xxxSupport)
+ifeq (,$(strip $(xxxSupport_OBJS) $(PRODUCT_OBJS)))
+xxxSupport_OBJS+=xxxSupport$(OBJ)
+endif
+xxxSupport_RESS+=$(addsuffix $(RES),$(basename $(xxxSupport_RCS)))
+xxxSupport_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(xxxSupport_OBJS)))
+xxxSupport_DEPLIBS=$(foreach lib, $(xxxSupport_LDLIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+xxxSupport$(EXE): $(xxxSupport_OBJSNAME) $(xxxSupport_RESS) $(xxxSupport_DEPLIBS)
+endif
+
+ifeq ($(filter xxxSupport,$(LIBRARY)),xxxSupport)
+ifneq ($(filter xxxSupport,$(LOADABLE_LIBRARY)),xxxSupport)
+ifneq (,$(strip $(xxxSupport_OBJS) $(LIBRARY_OBJS)))
+BUILD_LIBRARY += xxxSupport
+endif
+xxxSupport_RESS+=$(addsuffix $(RES),$(basename $(xxxSupport_RCS)))
+xxxSupport_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(xxxSupport_OBJS)))
+xxxSupport_DEPLIBS=$(foreach lib, $(xxxSupport_LDLIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+xxxSupport_DLL_DEPLIBS=$(foreach lib, $(xxxSupport_DLL_LIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+$(LIB_PREFIX)xxxSupport$(LIB_SUFFIX):$(xxxSupport_OBJSNAME) $(xxxSupport_RESS)
+$(LIB_PREFIX)xxxSupport$(LIB_SUFFIX):$(xxxSupport_DEPLIBS)
+$(LIB_PREFIX)xxxSupport$(SHRLIB_SUFFIX):$(xxxSupport_OBJSNAME) $(xxxSupport_RESS)
+$(LIB_PREFIX)xxxSupport$(SHRLIB_SUFFIX):$(xxxSupport_DEPLIBS)
+$(LIB_PREFIX)xxxSupport$(SHRLIB_SUFFIX):$(xxxSupport_DLL_DEPLIBS)
+endif
+endif
+ifeq ($(filter xxxSupport,$(LOADABLE_LIBRARY)),xxxSupport)
+ifneq (,$(strip $(xxxSupport_OBJS) $(LIBRARY_OBJS)))
+LOADABLE_BUILD_LIBRARY += xxxSupport
+endif
+xxxSupport_RESS+=$(addsuffix $(RES),$(basename $(xxxSupport_RCS)))
+xxxSupport_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(xxxSupport_OBJS)))
+xxxSupport_DEPLIBS=$(foreach lib, $(xxxSupport_LDLIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+xxxSupport_DLL_DEPLIBS=$(foreach lib, $(xxxSupport_DLL_LIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+$(LOADABLE_SHRLIB_PREFIX)xxxSupport$(LOADABLE_SHRLIB_SUFFIX):$(xxxSupport_OBJSNAME) $(xxxSupport_RESS)
+$(LOADABLE_SHRLIB_PREFIX)xxxSupport$(LOADABLE_SHRLIB_SUFFIX):$(xxxSupport_DEPLIBS)
+$(LOADABLE_SHRLIB_PREFIX)xxxSupport$(LOADABLE_SHRLIB_SUFFIX):$(xxxSupport_DLL_DEPLIBS)
+endif
+
+
+ifneq ($(strip $(genSub_SRCS_$(OS_CLASS))),)
+genSub_SRCS+=$(subst -nil-,,$(genSub_SRCS_$(OS_CLASS)))
+else
+ifdef genSub_SRCS_DEFAULT
+genSub_SRCS+=$(genSub_SRCS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(genSub_RCS_$(OS_CLASS))),)
+genSub_RCS+=$(subst -nil-,,$(genSub_RCS_$(OS_CLASS)))
+else
+ifdef genSub_RCS_DEFAULT
+genSub_RCS+=$(genSub_RCS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(genSub_OBJS_$(OS_CLASS))),)
+genSub_OBJS+=$(subst -nil-,,$(genSub_OBJS_$(OS_CLASS)))
+else
+ifdef genSub_OBJS_DEFAULT
+genSub_OBJS+=$(genSub_OBJS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(genSub_LDFLAGS_$(OS_CLASS))),)
+genSub_LDFLAGS+=$(subst -nil-,,$(genSub_LDFLAGS_$(OS_CLASS)))
+else
+ifdef genSub_LDFLAGS_DEFAULT
+genSub_LDFLAGS+=$(genSub_LDFLAGS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(genSub_OBJLIBS_$(OS_CLASS))),)
+genSub_OBJLIBS+=$(subst -nil-,,$(genSub_OBJLIBS_$(OS_CLASS)))
+else
+ifdef genSub_OBJLIBS_DEFAULT
+genSub_OBJLIBS+=$(genSub_OBJLIBS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(genSub_LDOBJS_$(OS_CLASS))),)
+genSub_LDOBJS+=$(subst -nil-,,$(genSub_LDOBJS_$(OS_CLASS)))
+else
+ifdef genSub_LDOBJS_DEFAULT
+genSub_LDOBJS+=$(genSub_LDOBJS_DEFAULT)
+endif
+endif
+genSub_LDLIBS+=$(genSub_LIBS)
+ifneq ($(strip $(genSub_LIBS_$(OS_CLASS))),)
+genSub_LDLIBS+=$(subst -nil-,,$(genSub_LIBS_$(OS_CLASS)))
+else
+ifdef genSub_LIBS_DEFAULT
+genSub_LDLIBS+=$(genSub_LIBS_DEFAULT)
+endif
+endif
+ifneq ($(strip $(genSub_SYS_LIBS_$(OS_CLASS))),)
+genSub_SYS_LIBS+=$(subst -nil-,,$(genSub_SYS_LIBS_$(OS_CLASS)))
+else
+ifdef genSub_SYS_LIBS_DEFAULT
+genSub_SYS_LIBS+=$(genSub_SYS_LIBS_DEFAULT)
+endif
+endif
+genSub_OBJS+=$(addsuffix $(OBJ),$(basename $(genSub_SRCS)))
+
+ifeq ($(filter genSub,$(TESTPROD) $(PROD)),genSub)
+ifeq (,$(strip $(genSub_OBJS) $(PRODUCT_OBJS)))
+genSub_OBJS+=genSub$(OBJ)
+endif
+genSub_RESS+=$(addsuffix $(RES),$(basename $(genSub_RCS)))
+genSub_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(genSub_OBJS)))
+genSub_DEPLIBS=$(foreach lib, $(genSub_LDLIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+genSub$(EXE): $(genSub_OBJSNAME) $(genSub_RESS) $(genSub_DEPLIBS)
+endif
+
+ifeq ($(filter genSub,$(LIBRARY)),genSub)
+ifneq ($(filter genSub,$(LOADABLE_LIBRARY)),genSub)
+ifneq (,$(strip $(genSub_OBJS) $(LIBRARY_OBJS)))
+BUILD_LIBRARY += genSub
+endif
+genSub_RESS+=$(addsuffix $(RES),$(basename $(genSub_RCS)))
+genSub_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(genSub_OBJS)))
+genSub_DEPLIBS=$(foreach lib, $(genSub_LDLIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+genSub_DLL_DEPLIBS=$(foreach lib, $(genSub_DLL_LIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+$(LIB_PREFIX)genSub$(LIB_SUFFIX):$(genSub_OBJSNAME) $(genSub_RESS)
+$(LIB_PREFIX)genSub$(LIB_SUFFIX):$(genSub_DEPLIBS)
+$(LIB_PREFIX)genSub$(SHRLIB_SUFFIX):$(genSub_OBJSNAME) $(genSub_RESS)
+$(LIB_PREFIX)genSub$(SHRLIB_SUFFIX):$(genSub_DEPLIBS)
+$(LIB_PREFIX)genSub$(SHRLIB_SUFFIX):$(genSub_DLL_DEPLIBS)
+endif
+endif
+ifeq ($(filter genSub,$(LOADABLE_LIBRARY)),genSub)
+ifneq (,$(strip $(genSub_OBJS) $(LIBRARY_OBJS)))
+LOADABLE_BUILD_LIBRARY += genSub
+endif
+genSub_RESS+=$(addsuffix $(RES),$(basename $(genSub_RCS)))
+genSub_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(genSub_OBJS)))
+genSub_DEPLIBS=$(foreach lib, $(genSub_LDLIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+genSub_DLL_DEPLIBS=$(foreach lib, $(genSub_DLL_LIBS),\
+ $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\
+ $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\
+ $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\
+ $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/)))
+$(LOADABLE_SHRLIB_PREFIX)genSub$(LOADABLE_SHRLIB_SUFFIX):$(genSub_OBJSNAME) $(genSub_RESS)
+$(LOADABLE_SHRLIB_PREFIX)genSub$(LOADABLE_SHRLIB_SUFFIX):$(genSub_DEPLIBS)
+$(LOADABLE_SHRLIB_PREFIX)genSub$(LOADABLE_SHRLIB_SUFFIX):$(genSub_DLL_DEPLIBS)
+endif
+
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/devXxxSoft.depends b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/devXxxSoft.depends
new file mode 100644 (file)
index 0000000..b328cc4
--- /dev/null
@@ -0,0 +1,34 @@
+# DO NOT EDIT: This file created by mkmf.pl,v 1.5 2002/03/25 21:33:24 jba Exp $ 
+
+devXxxSoft.o : /home/scs/base-3.14.9/include/alarm.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/cvtTable.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/dbDefs.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/dbAccess.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/recGbl.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/recSup.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/devSup.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/link.h
+devXxxSoft.o : ../../../include/xxxRecord.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/epicsExport.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/shareLib.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/epicsTypes.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/errMdef.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/epicsTime.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/caeventmask.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/dbFldTypes.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/dbBase.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/dbAddr.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/dbLock.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/dbAccessDefs.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/dbCa.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/dbCommon.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/db_field_log.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/ellLib.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/epicsMutex.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/errlog.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/os/Linux/osdTime.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/epicsAssert.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/compilerDependencies.h
+devXxxSoft.o : /home/scs/base-3.14.9/include/os/Linux/osdMutex.h
+
+
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl
new file mode 100755 (executable)
index 0000000..71b0b6a
Binary files /dev/null and b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl differ
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrlMain.depends b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrlMain.depends
new file mode 100644 (file)
index 0000000..af944e4
--- /dev/null
@@ -0,0 +1,15 @@
+# DO NOT EDIT: This file created by mkmf.pl,v 1.5 2002/03/25 21:33:24 jba Exp $ 
+
+ebctrlMain.o : /home/scs/base-3.14.9/include/epicsExit.h
+ebctrlMain.o : /home/scs/base-3.14.9/include/epicsThread.h
+ebctrlMain.o : /home/scs/base-3.14.9/include/iocsh.h
+ebctrlMain.o : /home/scs/base-3.14.9/include/shareLib.h
+ebctrlMain.o : /home/scs/base-3.14.9/include/epicsEvent.h
+ebctrlMain.o : /home/scs/base-3.14.9/include/epicsMutex.h
+ebctrlMain.o : /home/scs/base-3.14.9/include/os/Linux/osdThread.h
+ebctrlMain.o : /home/scs/base-3.14.9/include/epicsAssert.h
+ebctrlMain.o : /home/scs/base-3.14.9/include/os/Linux/osdEvent.h
+ebctrlMain.o : /home/scs/base-3.14.9/include/compilerDependencies.h
+ebctrlMain.o : /home/scs/base-3.14.9/include/os/Linux/osdMutex.h
+
+
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl_registerRecordDeviceDriver.cpp b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl_registerRecordDeviceDriver.cpp
new file mode 100644 (file)
index 0000000..323cc26
--- /dev/null
@@ -0,0 +1,293 @@
+/* THIS IS A GENERATED FILE. DO NOT EDIT */
+/* Generated from ../O.Common/ebctrl.dbd */
+
+#include "registryCommon.h"
+
+extern "C" {
+epicsShareExtern rset *pvar_rset_aiRSET;
+epicsShareExtern int (*pvar_func_aiRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_aoRSET;
+epicsShareExtern int (*pvar_func_aoRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_biRSET;
+epicsShareExtern int (*pvar_func_biRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_boRSET;
+epicsShareExtern int (*pvar_func_boRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_calcRSET;
+epicsShareExtern int (*pvar_func_calcRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_calcoutRSET;
+epicsShareExtern int (*pvar_func_calcoutRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_compressRSET;
+epicsShareExtern int (*pvar_func_compressRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_dfanoutRSET;
+epicsShareExtern int (*pvar_func_dfanoutRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_eventRSET;
+epicsShareExtern int (*pvar_func_eventRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_fanoutRSET;
+epicsShareExtern int (*pvar_func_fanoutRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_longinRSET;
+epicsShareExtern int (*pvar_func_longinRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_longoutRSET;
+epicsShareExtern int (*pvar_func_longoutRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_mbbiRSET;
+epicsShareExtern int (*pvar_func_mbbiRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_mbbiDirectRSET;
+epicsShareExtern int (*pvar_func_mbbiDirectRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_mbboRSET;
+epicsShareExtern int (*pvar_func_mbboRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_mbboDirectRSET;
+epicsShareExtern int (*pvar_func_mbboDirectRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_permissiveRSET;
+epicsShareExtern int (*pvar_func_permissiveRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_selRSET;
+epicsShareExtern int (*pvar_func_selRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_seqRSET;
+epicsShareExtern int (*pvar_func_seqRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_stateRSET;
+epicsShareExtern int (*pvar_func_stateRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_stringinRSET;
+epicsShareExtern int (*pvar_func_stringinRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_stringoutRSET;
+epicsShareExtern int (*pvar_func_stringoutRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_subRSET;
+epicsShareExtern int (*pvar_func_subRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_subArrayRSET;
+epicsShareExtern int (*pvar_func_subArrayRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_waveformRSET;
+epicsShareExtern int (*pvar_func_waveformRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_xxxRSET;
+epicsShareExtern int (*pvar_func_xxxRecordSizeOffset)(dbRecordType *pdbRecordType);
+epicsShareExtern rset *pvar_rset_genSubRSET;
+epicsShareExtern int (*pvar_func_genSubRecordSizeOffset)(dbRecordType *pdbRecordType);
+
+static const char * const recordTypeNames[27] = {
+    "ai",
+    "ao",
+    "bi",
+    "bo",
+    "calc",
+    "calcout",
+    "compress",
+    "dfanout",
+    "event",
+    "fanout",
+    "longin",
+    "longout",
+    "mbbi",
+    "mbbiDirect",
+    "mbbo",
+    "mbboDirect",
+    "permissive",
+    "sel",
+    "seq",
+    "state",
+    "stringin",
+    "stringout",
+    "sub",
+    "subArray",
+    "waveform",
+    "xxx",
+    "genSub"
+};
+
+static const recordTypeLocation rtl[27] = {
+    {pvar_rset_aiRSET, pvar_func_aiRecordSizeOffset},
+    {pvar_rset_aoRSET, pvar_func_aoRecordSizeOffset},
+    {pvar_rset_biRSET, pvar_func_biRecordSizeOffset},
+    {pvar_rset_boRSET, pvar_func_boRecordSizeOffset},
+    {pvar_rset_calcRSET, pvar_func_calcRecordSizeOffset},
+    {pvar_rset_calcoutRSET, pvar_func_calcoutRecordSizeOffset},
+    {pvar_rset_compressRSET, pvar_func_compressRecordSizeOffset},
+    {pvar_rset_dfanoutRSET, pvar_func_dfanoutRecordSizeOffset},
+    {pvar_rset_eventRSET, pvar_func_eventRecordSizeOffset},
+    {pvar_rset_fanoutRSET, pvar_func_fanoutRecordSizeOffset},
+    {pvar_rset_longinRSET, pvar_func_longinRecordSizeOffset},
+    {pvar_rset_longoutRSET, pvar_func_longoutRecordSizeOffset},
+    {pvar_rset_mbbiRSET, pvar_func_mbbiRecordSizeOffset},
+    {pvar_rset_mbbiDirectRSET, pvar_func_mbbiDirectRecordSizeOffset},
+    {pvar_rset_mbboRSET, pvar_func_mbboRecordSizeOffset},
+    {pvar_rset_mbboDirectRSET, pvar_func_mbboDirectRecordSizeOffset},
+    {pvar_rset_permissiveRSET, pvar_func_permissiveRecordSizeOffset},
+    {pvar_rset_selRSET, pvar_func_selRecordSizeOffset},
+    {pvar_rset_seqRSET, pvar_func_seqRecordSizeOffset},
+    {pvar_rset_stateRSET, pvar_func_stateRecordSizeOffset},
+    {pvar_rset_stringinRSET, pvar_func_stringinRecordSizeOffset},
+    {pvar_rset_stringoutRSET, pvar_func_stringoutRecordSizeOffset},
+    {pvar_rset_subRSET, pvar_func_subRecordSizeOffset},
+    {pvar_rset_subArrayRSET, pvar_func_subArrayRecordSizeOffset},
+    {pvar_rset_waveformRSET, pvar_func_waveformRecordSizeOffset},
+    {pvar_rset_xxxRSET, pvar_func_xxxRecordSizeOffset},
+    {pvar_rset_genSubRSET, pvar_func_genSubRecordSizeOffset}
+};
+
+epicsShareExtern dset *pvar_dset_devAiSoft;
+epicsShareExtern dset *pvar_dset_devAiSoftRaw;
+epicsShareExtern dset *pvar_dset_devAoSoft;
+epicsShareExtern dset *pvar_dset_devAoSoftRaw;
+epicsShareExtern dset *pvar_dset_devAoSoftCallback;
+epicsShareExtern dset *pvar_dset_devBiSoft;
+epicsShareExtern dset *pvar_dset_devBiSoftRaw;
+epicsShareExtern dset *pvar_dset_devBoSoft;
+epicsShareExtern dset *pvar_dset_devBoSoftRaw;
+epicsShareExtern dset *pvar_dset_devBoSoftCallback;
+epicsShareExtern dset *pvar_dset_devCalcoutSoft;
+epicsShareExtern dset *pvar_dset_devCalcoutSoftCallback;
+epicsShareExtern dset *pvar_dset_devEventSoft;
+epicsShareExtern dset *pvar_dset_devLiSoft;
+epicsShareExtern dset *pvar_dset_devLoSoft;
+epicsShareExtern dset *pvar_dset_devLoSoftCallback;
+epicsShareExtern dset *pvar_dset_devMbbiSoft;
+epicsShareExtern dset *pvar_dset_devMbbiSoftRaw;
+epicsShareExtern dset *pvar_dset_devMbbiDirectSoft;
+epicsShareExtern dset *pvar_dset_devMbbiDirectSoftRaw;
+epicsShareExtern dset *pvar_dset_devMbboSoft;
+epicsShareExtern dset *pvar_dset_devMbboSoftRaw;
+epicsShareExtern dset *pvar_dset_devMbboSoftCallback;
+epicsShareExtern dset *pvar_dset_devMbboDirectSoft;
+epicsShareExtern dset *pvar_dset_devMbboDirectSoftRaw;
+epicsShareExtern dset *pvar_dset_devMbboDirectSoftCallback;
+epicsShareExtern dset *pvar_dset_devSiSoft;
+epicsShareExtern dset *pvar_dset_devTimestampSI;
+epicsShareExtern dset *pvar_dset_devSoSoft;
+epicsShareExtern dset *pvar_dset_devSoSoftCallback;
+epicsShareExtern dset *pvar_dset_devSASoft;
+epicsShareExtern dset *pvar_dset_devWfSoft;
+epicsShareExtern dset *pvar_dset_devXxxSoft;
+
+static const char * const deviceSupportNames[33] = {
+    "devAiSoft",
+    "devAiSoftRaw",
+    "devAoSoft",
+    "devAoSoftRaw",
+    "devAoSoftCallback",
+    "devBiSoft",
+    "devBiSoftRaw",
+    "devBoSoft",
+    "devBoSoftRaw",
+    "devBoSoftCallback",
+    "devCalcoutSoft",
+    "devCalcoutSoftCallback",
+    "devEventSoft",
+    "devLiSoft",
+    "devLoSoft",
+    "devLoSoftCallback",
+    "devMbbiSoft",
+    "devMbbiSoftRaw",
+    "devMbbiDirectSoft",
+    "devMbbiDirectSoftRaw",
+    "devMbboSoft",
+    "devMbboSoftRaw",
+    "devMbboSoftCallback",
+    "devMbboDirectSoft",
+    "devMbboDirectSoftRaw",
+    "devMbboDirectSoftCallback",
+    "devSiSoft",
+    "devTimestampSI",
+    "devSoSoft",
+    "devSoSoftCallback",
+    "devSASoft",
+    "devWfSoft",
+    "devXxxSoft"
+};
+
+static const dset * const devsl[33] = {
+    pvar_dset_devAiSoft,
+    pvar_dset_devAiSoftRaw,
+    pvar_dset_devAoSoft,
+    pvar_dset_devAoSoftRaw,
+    pvar_dset_devAoSoftCallback,
+    pvar_dset_devBiSoft,
+    pvar_dset_devBiSoftRaw,
+    pvar_dset_devBoSoft,
+    pvar_dset_devBoSoftRaw,
+    pvar_dset_devBoSoftCallback,
+    pvar_dset_devCalcoutSoft,
+    pvar_dset_devCalcoutSoftCallback,
+    pvar_dset_devEventSoft,
+    pvar_dset_devLiSoft,
+    pvar_dset_devLoSoft,
+    pvar_dset_devLoSoftCallback,
+    pvar_dset_devMbbiSoft,
+    pvar_dset_devMbbiSoftRaw,
+    pvar_dset_devMbbiDirectSoft,
+    pvar_dset_devMbbiDirectSoftRaw,
+    pvar_dset_devMbboSoft,
+    pvar_dset_devMbboSoftRaw,
+    pvar_dset_devMbboSoftCallback,
+    pvar_dset_devMbboDirectSoft,
+    pvar_dset_devMbboDirectSoftRaw,
+    pvar_dset_devMbboDirectSoftCallback,
+    pvar_dset_devSiSoft,
+    pvar_dset_devTimestampSI,
+    pvar_dset_devSoSoft,
+    pvar_dset_devSoSoftCallback,
+    pvar_dset_devSASoft,
+    pvar_dset_devWfSoft,
+    pvar_dset_devXxxSoft
+};
+
+epicsShareExtern void (*pvar_func_asSub)(void);
+epicsShareExtern void (*pvar_func_register_func_evtbuild_init)(void);
+epicsShareExtern void (*pvar_func_register_func_evtbuild_proc)(void);
+epicsShareExtern void (*pvar_func_register_func_genRunId_init)(void);
+epicsShareExtern void (*pvar_func_register_func_genRunId_proc)(void);
+epicsShareExtern void (*pvar_func_register_func_writeRunId_init)(void);
+epicsShareExtern void (*pvar_func_register_func_writeRunId_proc)(void);
+
+epicsShareExtern int *pvar_int_asCaDebug;
+epicsShareExtern int *pvar_int_dbRecordsOnceOnly;
+epicsShareExtern int *pvar_int_evtbuildDebug;
+epicsShareExtern int *pvar_int_genrunidDebug;
+epicsShareExtern int *pvar_int_writerunidDebug;
+static struct iocshVarDef vardefs[] = {
+       {"asCaDebug", iocshArgInt, (void * const)pvar_int_asCaDebug},
+       {"dbRecordsOnceOnly", iocshArgInt, (void * const)pvar_int_dbRecordsOnceOnly},
+       {"evtbuildDebug", iocshArgInt, (void * const)pvar_int_evtbuildDebug},
+       {"genrunidDebug", iocshArgInt, (void * const)pvar_int_genrunidDebug},
+       {"writerunidDebug", iocshArgInt, (void * const)pvar_int_writerunidDebug},
+       {NULL, iocshArgInt, NULL}
+};
+
+int ebctrl_registerRecordDeviceDriver(DBBASE *pbase)
+{
+    registerRecordTypes(pbase, 27, recordTypeNames, rtl);
+    registerDevices(pbase, 33, deviceSupportNames, devsl);
+    (*pvar_func_asSub)();
+    (*pvar_func_register_func_evtbuild_init)();
+    (*pvar_func_register_func_evtbuild_proc)();
+    (*pvar_func_register_func_genRunId_init)();
+    (*pvar_func_register_func_genRunId_proc)();
+    (*pvar_func_register_func_writeRunId_init)();
+    (*pvar_func_register_func_writeRunId_proc)();
+    iocshRegisterVariable(vardefs);
+    return 0;
+}
+
+/* registerRecordDeviceDriver */
+static const iocshArg registerRecordDeviceDriverArg0 =
+                                            {"pdbbase",iocshArgPdbbase};
+static const iocshArg *registerRecordDeviceDriverArgs[1] =
+                                            {&registerRecordDeviceDriverArg0};
+static const iocshFuncDef registerRecordDeviceDriverFuncDef =
+                {"ebctrl_registerRecordDeviceDriver",1,registerRecordDeviceDriverArgs};
+static void registerRecordDeviceDriverCallFunc(const iocshArgBuf *)
+{
+    ebctrl_registerRecordDeviceDriver(pdbbase);
+}
+
+} // extern "C"
+/*
+ * Register commands on application startup
+ */
+#include "iocshRegisterCommon.h"
+class IoccrfReg {
+  public:
+    IoccrfReg() {
+        iocshRegisterCommon();
+        iocshRegister(&registerRecordDeviceDriverFuncDef,registerRecordDeviceDriverCallFunc);
+    }
+};
+#if !defined(__GNUC__) || !(__GNUC__<2 || (__GNUC__==2 && __GNUC_MINOR__<=95))
+namespace { IoccrfReg iocshReg; }
+#else
+IoccrfReg iocshReg;
+#endif
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl_registerRecordDeviceDriver.depends b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl_registerRecordDeviceDriver.depends
new file mode 100644 (file)
index 0000000..9f18717
--- /dev/null
@@ -0,0 +1,35 @@
+# DO NOT EDIT: This file created by mkmf.pl,v 1.5 2002/03/25 21:33:24 jba Exp $ 
+
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/registryCommon.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/iocshRegisterCommon.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/dbBase.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/dbStaticLib.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/dbAccess.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/devSup.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/drvSup.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/recSup.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/registryRecordType.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/iocsh.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/shareLib.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/dbFldTypes.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/ellLib.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/dbDefs.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/link.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/errMdef.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/epicsTime.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/caeventmask.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/dbAddr.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/dbLock.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/dbAccessDefs.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/dbCa.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/dbCommon.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/db_field_log.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/epicsTypes.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/errlog.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/os/Linux/osdTime.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/epicsMutex.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/compilerDependencies.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/epicsAssert.h
+ebctrl_registerRecordDeviceDriver.o : /home/scs/base-3.14.9/include/os/Linux/osdMutex.h
+
+
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/evtbuild.depends b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/evtbuild.depends
new file mode 100644 (file)
index 0000000..45b1800
--- /dev/null
@@ -0,0 +1,23 @@
+# DO NOT EDIT: This file created by mkmf.pl,v 1.5 2002/03/25 21:33:24 jba Exp $ 
+
+evtbuild.o : /home/scs/base-3.14.9/include/dbDefs.h
+evtbuild.o : /home/scs/base-3.14.9/include/registryFunction.h
+evtbuild.o : /home/scs/base-3.14.9/include/subRecord.h
+evtbuild.o : /home/scs/base-3.14.9/include/epicsExport.h
+evtbuild.o : ../../../include/genSubRecord.h
+evtbuild.o : ../../../include/worker.h
+evtbuild.o : /home/scs/base-3.14.9/include/errMdef.h
+evtbuild.o : /home/scs/base-3.14.9/include/epicsTypes.h
+evtbuild.o : /home/scs/base-3.14.9/include/shareLib.h
+evtbuild.o : /home/scs/base-3.14.9/include/ellLib.h
+evtbuild.o : /home/scs/base-3.14.9/include/epicsMutex.h
+evtbuild.o : /home/scs/base-3.14.9/include/link.h
+evtbuild.o : /home/scs/base-3.14.9/include/epicsTime.h
+evtbuild.o : ../../../include/psxshm.h
+evtbuild.o : /home/scs/base-3.14.9/include/errlog.h
+evtbuild.o : /home/scs/base-3.14.9/include/epicsAssert.h
+evtbuild.o : /home/scs/base-3.14.9/include/compilerDependencies.h
+evtbuild.o : /home/scs/base-3.14.9/include/os/Linux/osdMutex.h
+evtbuild.o : /home/scs/base-3.14.9/include/os/Linux/osdTime.h
+
+
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/genSubRecord.depends b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/genSubRecord.depends
new file mode 100644 (file)
index 0000000..b53f90e
--- /dev/null
@@ -0,0 +1,40 @@
+# DO NOT EDIT: This file created by mkmf.pl,v 1.5 2002/03/25 21:33:24 jba Exp $ 
+
+genSubRecord.o : /home/scs/base-3.14.9/include/alarm.h
+genSubRecord.o : /home/scs/base-3.14.9/include/dbDefs.h
+genSubRecord.o : /home/scs/base-3.14.9/include/dbEvent.h
+genSubRecord.o : /home/scs/base-3.14.9/include/dbAccess.h
+genSubRecord.o : /home/scs/base-3.14.9/include/dbFldTypes.h
+genSubRecord.o : /home/scs/base-3.14.9/include/errMdef.h
+genSubRecord.o : /home/scs/base-3.14.9/include/recSup.h
+genSubRecord.o : /home/scs/base-3.14.9/include/devSup.h
+genSubRecord.o : /home/scs/base-3.14.9/include/special.h
+genSubRecord.o : /home/scs/base-3.14.9/include/registryFunction.h
+genSubRecord.o : /home/scs/base-3.14.9/include/epicsExport.h
+genSubRecord.o : /home/scs/base-3.14.9/include/recGbl.h
+genSubRecord.o : ../../../include/genSubRecord.h
+genSubRecord.o : /home/scs/base-3.14.9/include/shareLib.h
+genSubRecord.o : /home/scs/base-3.14.9/include/epicsTypes.h
+genSubRecord.o : /home/scs/base-3.14.9/include/epicsThread.h
+genSubRecord.o : /home/scs/base-3.14.9/include/epicsTime.h
+genSubRecord.o : /home/scs/base-3.14.9/include/caeventmask.h
+genSubRecord.o : /home/scs/base-3.14.9/include/link.h
+genSubRecord.o : /home/scs/base-3.14.9/include/dbBase.h
+genSubRecord.o : /home/scs/base-3.14.9/include/dbAddr.h
+genSubRecord.o : /home/scs/base-3.14.9/include/dbLock.h
+genSubRecord.o : /home/scs/base-3.14.9/include/dbAccessDefs.h
+genSubRecord.o : /home/scs/base-3.14.9/include/dbCa.h
+genSubRecord.o : /home/scs/base-3.14.9/include/dbCommon.h
+genSubRecord.o : /home/scs/base-3.14.9/include/db_field_log.h
+genSubRecord.o : /home/scs/base-3.14.9/include/ellLib.h
+genSubRecord.o : /home/scs/base-3.14.9/include/errlog.h
+genSubRecord.o : /home/scs/base-3.14.9/include/epicsMutex.h
+genSubRecord.o : /home/scs/base-3.14.9/include/epicsEvent.h
+genSubRecord.o : /home/scs/base-3.14.9/include/os/Linux/osdThread.h
+genSubRecord.o : /home/scs/base-3.14.9/include/os/Linux/osdTime.h
+genSubRecord.o : /home/scs/base-3.14.9/include/compilerDependencies.h
+genSubRecord.o : /home/scs/base-3.14.9/include/epicsAssert.h
+genSubRecord.o : /home/scs/base-3.14.9/include/os/Linux/osdMutex.h
+genSubRecord.o : /home/scs/base-3.14.9/include/os/Linux/osdEvent.h
+
+
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/genrunid.depends b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/genrunid.depends
new file mode 100644 (file)
index 0000000..c5798d3
--- /dev/null
@@ -0,0 +1,20 @@
+# DO NOT EDIT: This file created by mkmf.pl,v 1.5 2002/03/25 21:33:24 jba Exp $ 
+
+genrunid.o : /home/scs/base-3.14.9/include/dbDefs.h
+genrunid.o : /home/scs/base-3.14.9/include/registryFunction.h
+genrunid.o : /home/scs/base-3.14.9/include/subRecord.h
+genrunid.o : /home/scs/base-3.14.9/include/epicsExport.h
+genrunid.o : /home/scs/base-3.14.9/include/errMdef.h
+genrunid.o : /home/scs/base-3.14.9/include/epicsTypes.h
+genrunid.o : /home/scs/base-3.14.9/include/shareLib.h
+genrunid.o : /home/scs/base-3.14.9/include/ellLib.h
+genrunid.o : /home/scs/base-3.14.9/include/epicsMutex.h
+genrunid.o : /home/scs/base-3.14.9/include/link.h
+genrunid.o : /home/scs/base-3.14.9/include/epicsTime.h
+genrunid.o : /home/scs/base-3.14.9/include/errlog.h
+genrunid.o : /home/scs/base-3.14.9/include/epicsAssert.h
+genrunid.o : /home/scs/base-3.14.9/include/compilerDependencies.h
+genrunid.o : /home/scs/base-3.14.9/include/os/Linux/osdMutex.h
+genrunid.o : /home/scs/base-3.14.9/include/os/Linux/osdTime.h
+
+
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/writerunid.depends b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/writerunid.depends
new file mode 100644 (file)
index 0000000..174c958
--- /dev/null
@@ -0,0 +1,22 @@
+# DO NOT EDIT: This file created by mkmf.pl,v 1.5 2002/03/25 21:33:24 jba Exp $ 
+
+writerunid.o : /home/scs/base-3.14.9/include/dbDefs.h
+writerunid.o : /home/scs/base-3.14.9/include/registryFunction.h
+writerunid.o : /home/scs/base-3.14.9/include/subRecord.h
+writerunid.o : /home/scs/base-3.14.9/include/epicsExport.h
+writerunid.o : ../../../include/worker.h
+writerunid.o : /home/scs/base-3.14.9/include/errMdef.h
+writerunid.o : /home/scs/base-3.14.9/include/epicsTypes.h
+writerunid.o : /home/scs/base-3.14.9/include/shareLib.h
+writerunid.o : /home/scs/base-3.14.9/include/ellLib.h
+writerunid.o : /home/scs/base-3.14.9/include/epicsMutex.h
+writerunid.o : /home/scs/base-3.14.9/include/link.h
+writerunid.o : /home/scs/base-3.14.9/include/epicsTime.h
+writerunid.o : ../../../include/psxshm.h
+writerunid.o : /home/scs/base-3.14.9/include/errlog.h
+writerunid.o : /home/scs/base-3.14.9/include/epicsAssert.h
+writerunid.o : /home/scs/base-3.14.9/include/compilerDependencies.h
+writerunid.o : /home/scs/base-3.14.9/include/os/Linux/osdMutex.h
+writerunid.o : /home/scs/base-3.14.9/include/os/Linux/osdTime.h
+
+
diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/xxxRecord.depends b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/xxxRecord.depends
new file mode 100644 (file)
index 0000000..2f606ca
--- /dev/null
@@ -0,0 +1,39 @@
+# DO NOT EDIT: This file created by mkmf.pl,v 1.5 2002/03/25 21:33:24 jba Exp $ 
+
+xxxRecord.o : /home/scs/base-3.14.9/include/alarm.h
+xxxRecord.o : /home/scs/base-3.14.9/include/dbAccess.h
+xxxRecord.o : /home/scs/base-3.14.9/include/recGbl.h
+xxxRecord.o : /home/scs/base-3.14.9/include/dbEvent.h
+xxxRecord.o : /home/scs/base-3.14.9/include/dbDefs.h
+xxxRecord.o : /home/scs/base-3.14.9/include/devSup.h
+xxxRecord.o : /home/scs/base-3.14.9/include/errMdef.h
+xxxRecord.o : /home/scs/base-3.14.9/include/recSup.h
+xxxRecord.o : /home/scs/base-3.14.9/include/special.h
+xxxRecord.o : ../../../include/xxxRecord.h
+xxxRecord.o : /home/scs/base-3.14.9/include/epicsExport.h
+xxxRecord.o : /home/scs/base-3.14.9/include/shareLib.h
+xxxRecord.o : /home/scs/base-3.14.9/include/epicsTypes.h
+xxxRecord.o : /home/scs/base-3.14.9/include/epicsTime.h
+xxxRecord.o : /home/scs/base-3.14.9/include/caeventmask.h
+xxxRecord.o : /home/scs/base-3.14.9/include/dbFldTypes.h
+xxxRecord.o : /home/scs/base-3.14.9/include/link.h
+xxxRecord.o : /home/scs/base-3.14.9/include/dbBase.h
+xxxRecord.o : /home/scs/base-3.14.9/include/dbAddr.h
+xxxRecord.o : /home/scs/base-3.14.9/include/dbLock.h
+xxxRecord.o : /home/scs/base-3.14.9/include/dbAccessDefs.h
+xxxRecord.o : /home/scs/base-3.14.9/include/dbCa.h
+xxxRecord.o : /home/scs/base-3.14.9/include/dbCommon.h
+xxxRecord.o : /home/scs/base-3.14.9/include/db_field_log.h
+xxxRecord.o : /home/scs/base-3.14.9/include/epicsThread.h
+xxxRecord.o : /home/scs/base-3.14.9/include/ellLib.h
+xxxRecord.o : /home/scs/base-3.14.9/include/errlog.h
+xxxRecord.o : /home/scs/base-3.14.9/include/epicsMutex.h
+xxxRecord.o : /home/scs/base-3.14.9/include/os/Linux/osdTime.h
+xxxRecord.o : /home/scs/base-3.14.9/include/epicsEvent.h
+xxxRecord.o : /home/scs/base-3.14.9/include/os/Linux/osdThread.h
+xxxRecord.o : /home/scs/base-3.14.9/include/compilerDependencies.h
+xxxRecord.o : /home/scs/base-3.14.9/include/epicsAssert.h
+xxxRecord.o : /home/scs/base-3.14.9/include/os/Linux/osdMutex.h
+xxxRecord.o : /home/scs/base-3.14.9/include/os/Linux/osdEvent.h
+
+
diff --git a/ebctrl/ioc/ebctrlApp/src/dbSubExample.c b/ebctrl/ioc/ebctrlApp/src/dbSubExample.c
new file mode 100644 (file)
index 0000000..9a5776d
--- /dev/null
@@ -0,0 +1,32 @@
+#include <stdio.h>
+
+#include <dbDefs.h>
+#include <registryFunction.h>
+#include <subRecord.h>
+#include <epicsExport.h>
+
+int mySubDebug;
+
+typedef long (*processMethod)(subRecord *precord);
+
+static long mySubInit(subRecord *precord,processMethod process)
+{
+    if (mySubDebug)
+        printf("Record %s called mySubInit(%p, %p)\n",
+               precord->name, (void*) precord, (void*) process);
+    return(0);
+}
+
+static long mySubProcess(subRecord *precord)
+{
+    if (mySubDebug)
+        printf("Record %s called mySubProcess(%p)\n",
+               precord->name, (void*) precord);
+    return(0);
+}
+
+/* Register these symbols for use by IOC code: */
+
+epicsExportAddress(int, mySubDebug);
+epicsRegisterFunction(mySubInit);
+epicsRegisterFunction(mySubProcess);
diff --git a/ebctrl/ioc/ebctrlApp/src/dbSubExample.dbd b/ebctrl/ioc/ebctrlApp/src/dbSubExample.dbd
new file mode 100644 (file)
index 0000000..a907fb7
--- /dev/null
@@ -0,0 +1,3 @@
+variable(mySubDebug)
+function(mySubInit)
+function(mySubProcess)
diff --git a/ebctrl/ioc/ebctrlApp/src/devXxxSoft.c b/ebctrl/ioc/ebctrlApp/src/devXxxSoft.c
new file mode 100644 (file)
index 0000000..0507fdf
--- /dev/null
@@ -0,0 +1,58 @@
+/* devXxxSoft.c */
+/* Example device support module */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "alarm.h"
+#include "cvtTable.h"
+#include "dbDefs.h"
+#include "dbAccess.h"
+#include "recGbl.h"
+#include "recSup.h"
+#include "devSup.h"
+#include "link.h"
+#include "xxxRecord.h"
+#include "epicsExport.h"
+
+/*Create the dset for devXxxSoft */
+static long init_record();
+static long read_xxx();
+struct {
+       long            number;
+       DEVSUPFUN       report;
+       DEVSUPFUN       init;
+       DEVSUPFUN       init_record;
+       DEVSUPFUN       get_ioint_info;
+       DEVSUPFUN       read_xxx;
+}devXxxSoft={
+       5,
+       NULL,
+       NULL,
+       init_record,
+       NULL,
+       read_xxx,
+};
+epicsExportAddress(dset,devXxxSoft);
+\f
+
+static long init_record(pxxx)
+    struct xxxRecord   *pxxx;
+{
+    if(recGblInitConstantLink(&pxxx->inp,DBF_DOUBLE,&pxxx->val))
+         pxxx->udf = FALSE;
+    return(0);
+}
+\f
+static long read_xxx(pxxx)
+    struct xxxRecord   *pxxx;
+{
+    long status;
+
+    status = dbGetLink(&(pxxx->inp),DBF_DOUBLE, &(pxxx->val),0,0);
+    /*If return was succesful then set undefined false*/
+    if(!status) pxxx->udf = FALSE;
+    return(0);
+}
diff --git a/ebctrl/ioc/ebctrlApp/src/ebctrlHello.c b/ebctrl/ioc/ebctrlApp/src/ebctrlHello.c
new file mode 100644 (file)
index 0000000..9b4418a
--- /dev/null
@@ -0,0 +1,31 @@
+/* Example showing how to register a new command with iocsh */
+
+#include <stdio.h>
+
+#include <epicsExport.h>
+#include <iocsh.h>
+
+/* This is the command, which the vxWorks shell will call directly */
+void hello(const char *name) {
+    if (name) {
+       printf("Hello %s, from ebctrl\n", name);
+    } else {
+       puts("Hello from ebctrl");
+    }
+}
+
+/* Information needed by iocsh */
+static const iocshArg     helloArg0 = {"name", iocshArgString};
+static const iocshArg    *helloArgs[] = {&helloArg0};
+static const iocshFuncDef helloFuncDef = {"hello", 1, helloArgs};
+
+/* Wrapper called by iocsh, selects the argument types that hello needs */
+static void helloCallFunc(const iocshArgBuf *args) {
+    hello(args[0].sval);
+}
+
+/* Registration routine, runs at startup */
+static void helloRegister(void) {
+    iocshRegister(&helloFuncDef, helloCallFunc);
+}
+epicsExportRegistrar(helloRegister);
diff --git a/ebctrl/ioc/ebctrlApp/src/ebctrlHello.dbd b/ebctrl/ioc/ebctrlApp/src/ebctrlHello.dbd
new file mode 100644 (file)
index 0000000..64eb038
--- /dev/null
@@ -0,0 +1 @@
+registrar(helloRegister)
diff --git a/ebctrl/ioc/ebctrlApp/src/ebctrlMain.cpp b/ebctrl/ioc/ebctrlApp/src/ebctrlMain.cpp
new file mode 100644 (file)
index 0000000..43a48f6
--- /dev/null
@@ -0,0 +1,23 @@
+/* ebctrlMain.cpp */
+/* Author:  Marty Kraimer Date:    17MAR2000 */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "epicsExit.h"
+#include "epicsThread.h"
+#include "iocsh.h"
+
+int main(int argc,char *argv[])
+{
+    if(argc>=2) {    
+        iocsh(argv[1]);
+        epicsThreadSleep(.2);
+    }
+    iocsh(NULL);
+    epicsExit(0);
+    return(0);
+}
diff --git a/ebctrl/ioc/ebctrlApp/src/evtbuild.c b/ebctrl/ioc/ebctrlApp/src/evtbuild.c
new file mode 100644 (file)
index 0000000..b0a9baa
--- /dev/null
@@ -0,0 +1,93 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <dbDefs.h>
+#include <registryFunction.h>
+#include <subRecord.h>
+#include <epicsExport.h>
+#include <genSubRecord.h>
+
+#include "worker.h"
+
+int evtbuildDebug;
+
+long evtbuild_init( struct genSubRecord *pgsub )
+{
+  return(0);
+}
+
+long evtbuild_proc( struct genSubRecord *pgsub )
+{
+  
+  unsigned long *out[7];
+  unsigned long *temp;
+  int i;
+
+  out[0] = (unsigned long *)pgsub->vala;
+  out[1] = (unsigned long *)pgsub->valb;
+  out[2] = (unsigned long *)pgsub->valc;
+  out[3] = (unsigned long *)pgsub->vald;
+  out[4] = (unsigned long *)pgsub->vale;
+  out[5] = (unsigned long *)pgsub->valf;
+  out[6] = (unsigned long *)pgsub->valg;
+  out[7] = (unsigned long *)pgsub->valh; 
+
+  for( i=0; i<7; i++ )
+    *out[i] = 0;
+
+  if( Worker_getStatistic( "daq_evtbuild", "nrOfMsgs", out[0] ) == -1) {
+    *out[7] = 0; /* status: Event Builder is off */
+    if(evtbuildDebug)
+      printf("Worker_getStatistic failed for nrOfMsgs!\n");
+  }
+  else {
+    *out[7] = 1; /* status: Event Builder is on */
+    if(evtbuildDebug)
+      printf("Worker_getStatistic::nrOfMsgs = %lu\n", (*out[0]));
+  }
+
+  if( Worker_getStatistic( "daq_evtbuild", "bytesWritten", out[1] ) == -1)
+    if(evtbuildDebug)
+      printf("Worker_getStatistic failed for bytesWritten!\n");
+
+  if( Worker_getStatistic( "daq_evtbuild", "evtsComplete", out[2] ) == -1)
+    if(evtbuildDebug)
+      printf("Worker_getStatistic failed for evtsComplete!\n");
+
+  if( Worker_getStatistic( "daq_evtbuild", "evtsDiscarded", out[3] ) == -1)
+    if(evtbuildDebug)
+      printf("Worker_getStatistic failed for evtsDiscarded!\n");
+
+  if( Worker_getStatistic( "daq_evtbuild", "evtsDataError", out[4] ) == -1)
+    if(evtbuildDebug)
+      printf("Worker_getStatistic failed for evtsDataError!\n");
+
+  if( Worker_getStatistic( "daq_evtbuild", "evtsTagError", out[5] ) == -1)
+    if(evtbuildDebug)
+      printf("Worker_getStatistic failed for evtsTagError!\n");
+
+  char buf[100];
+  for( i=0; i<(*out[0]); i++ ) {
+
+    sprintf( buf, "evtbuildBuff%d", i );
+
+    if( Worker_getStatistic( "daq_evtbuild", buf, out[6] ) == -1) { 
+      if(evtbuildDebug)
+       printf("Worker_getStatistic failed for %s!\n", buf);
+    }
+    else {
+      if(evtbuildDebug) 
+       printf("%s = %lu\n", buf, *out[6]);
+
+      out[6]++;
+    }
+  }
+
+  return(0);
+}
+
+/* Register these symbols for use by IOC code: */
+
+epicsExportAddress(int, evtbuildDebug);
+epicsRegisterFunction(evtbuild_init);
+epicsRegisterFunction(evtbuild_proc);
diff --git a/ebctrl/ioc/ebctrlApp/src/evtbuild.dbd b/ebctrl/ioc/ebctrlApp/src/evtbuild.dbd
new file mode 100644 (file)
index 0000000..7a19465
--- /dev/null
@@ -0,0 +1,3 @@
+variable(evtbuildDebug)
+function(evtbuild_init)
+function(evtbuild_proc)
\ No newline at end of file
diff --git a/ebctrl/ioc/ebctrlApp/src/genSubRecord.c b/ebctrl/ioc/ebctrlApp/src/genSubRecord.c
new file mode 100755 (executable)
index 0000000..4b5583c
--- /dev/null
@@ -0,0 +1,1355 @@
+/* genSubRecord.c - Record Support Routines for
+ *                  General Subroutine Records
+ *
+ *      Author: Andy Foster
+ *
+ *     History
+ *     -------
+ *     Version 1.0  12/11/96  ajf  Created.
+ *     Version 1.1  18/04/97  ajf  Fixed get_value, pvdes->pvalue, field.
+ *      Version 1.2  18/06/97  ajf  Changed number of fields from 10 to 21.
+ *      Version 1.3  05/04/00  cjm  Fixed bug where fldnames was defined as
+ *                                  a static array. Cannot do this since there
+ *                                  are many instances of the genSub record.
+ *     Version 1.4  15/03/01  ajf  Changes for 3.13.
+ *                                  Set precision of VERS field to 1.
+ *                                  Initialise "string" constants to 0.
+ *                                  Replace "symFindbyName" by "symFindbyNameEPICS"
+ *                                  for architectures which do not prepend an
+ *                                  "_" (i.e. PPC).
+ *      Version 1.5  11/12/03  ajf  Changes to comply with the new macro for 
+ *                                  "dbGetLink" in EPICS 3.13.9.
+ *      Version 1.6  16/03/04  wen  Convert to R3.14.
+ *
+ */
+
+#define DEBUG   0
+#define VERSION 1.6
+
+#include       <stdlib.h>
+#include       <stdio.h>
+#include       <string.h>
+
+#include       <alarm.h>
+#include       <dbDefs.h>
+#include       <dbEvent.h>
+#include       <dbAccess.h>
+#include       <dbFldTypes.h>
+#include       <errMdef.h>
+#include       <recSup.h>
+#include       <devSup.h>
+#include       <special.h>
+#include       <registryFunction.h>
+#include       <epicsExport.h>
+#include       <recGbl.h>
+
+#define GEN_SIZE_OFFSET
+#include       <genSubRecord.h>
+#undef  GEN_SIZE_OFFSET
+
+typedef long (*SUBFUNCPTR)(genSubRecord *);
+
+/* Create RSET - Record Support Entry Table*/
+
+static long init_record();
+static long process();
+static long get_value();
+static long get_precision();
+static long cvt_dbaddr();
+static long get_array_info();
+static long put_array_info();
+static long special();
+#define report             NULL
+#define initialize         NULL
+#define get_units          NULL
+#define get_graphic_double NULL
+#define get_control_double NULL
+#define get_alarm_double   NULL
+#define get_enum_str       NULL
+#define get_enum_strs      NULL
+#define put_enum_str       NULL
+
+rset genSubRSET={
+       RSETNUMBER,
+       report,
+       initialize,
+       init_record,
+       process,
+       special,
+       get_value,
+       cvt_dbaddr,
+       get_array_info,
+       put_array_info,
+       get_units,
+       get_precision,
+       get_enum_str,
+       get_enum_strs,
+       put_enum_str,
+       get_graphic_double,
+       get_control_double,
+       get_alarm_double };
+epicsExportAddress(rset,genSubRSET);
+
+static void monitor( genSubRecord *, int );
+static long do_sub( genSubRecord * );
+static long findField( int, struct dbAddr *, long *, long );
+
+#define ARG_MAX        21
+#define MAX_ARRAY_SIZE 10000000
+#ifndef FLDNAME_SZ
+# define FLDNAME_SZ 4
+#endif
+
+/* These are the names of the Input fields */
+static char Ifldnames[ARG_MAX][FLDNAME_SZ+1] =
+  { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
+    "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U" };
+
+/* These are the names of the Output fields */
+static char Ofldnames[ARG_MAX][FLDNAME_SZ+1] =
+  { "VALA", "VALB", "VALC", "VALD", "VALE", "VALF", "VALG", 
+    "VALH", "VALI", "VALJ", "VALK", "VALL", "VALM", "VALN",
+    "VALO", "VALP", "VALQ", "VALR", "VALS", "VALT", "VALU" };
+
+/* Sizes of field types */
+static int sizeofTypes[] = {0, 1, 1, 2, 2, 4, 4, 4, 8, 2};
+
+/* This is here so that input link checking can be switched on from the shell */
+int CHECKgensubLINKS = 0;
+
+
+static long init_record( genSubRecord *pgsub, int pass )
+{
+  SUBFUNCPTR     psubroutine;
+  SUBFUNCPTR     sub_addr;
+  long          status;
+  long           error;
+  int            i;
+  int            j;
+  char           *ufunct;
+  unsigned short *typptr;
+  void           **valptr;
+  void           **ovlptr;
+  unsigned long  *nelptr;
+  unsigned long  *totptr;
+  unsigned long  num;
+  struct link    *plinkin;
+  struct link    *plinkout;
+  char           fldnames[ARG_MAX][FLDNAME_SZ+1];
+
+  status = 0;
+  if( pass == 0 )
+  {
+    pgsub->vers = VERSION;
+    for( j=0; j<2; j++ )
+    {
+      if( j == 0 )    /* Input fields */
+      {
+        ufunct = pgsub->ufa;
+        typptr = &pgsub->fta;
+        valptr = &pgsub->a;
+        ovlptr = NULL;
+        nelptr = &pgsub->noa;
+        memcpy( fldnames, Ifldnames, ARG_MAX*(FLDNAME_SZ+1) );
+      }
+      else           /* Output fields */
+      {
+        ufunct = pgsub->ufva;
+        typptr = &pgsub->ftva;
+        valptr = &pgsub->vala;
+        ovlptr = &pgsub->ovla;
+        nelptr = &pgsub->nova;
+        memcpy( fldnames, Ofldnames, ARG_MAX*(FLDNAME_SZ+1) );
+      }
+      totptr = &pgsub->tova;
+
+      for( i=0; i<ARG_MAX; i++, ufunct+=40, typptr++, valptr++, nelptr++, totptr++ )
+      {
+        if( *nelptr <= 0 )
+          *nelptr = 1;
+
+        if( ufunct[0] != '\0' )
+        {
+          sub_addr = (SUBFUNCPTR)registryFunctionFind(ufunct);
+          if( sub_addr == NULL )
+          {
+            recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(init_record)");
+            status = S_db_BadSub;
+          }
+          else
+          {
+            psubroutine = sub_addr;
+            *totptr     = psubroutine(pgsub);
+
+            if( *typptr != DBF_CHAR )
+              *typptr = DBF_CHAR;
+
+            num = (*nelptr)*(*totptr);
+            if( num > MAX_ARRAY_SIZE )
+            {
+              printf("Link %s - Array too large! %ld Bytes\n", fldnames[i], num);
+              status = S_db_errArg;
+            }
+            else
+            {
+              *valptr   = (char *)calloc( *nelptr, *totptr );
+              if( j == 1 )
+                *ovlptr = (char *)calloc( *nelptr, *totptr );
+              *nelptr = num;
+              *totptr = num;
+#if DEBUG
+              printf("Link(%s): Address = 0x%x, Bytes = %d\n", fldnames[i], (unsigned int)(*valptr), *totptr );
+#endif
+            }
+          }
+        }
+        else
+        {
+          if( *typptr == DBF_STRING )
+          {
+            num = (*nelptr)*MAX_STRING_SIZE;
+            if( num > MAX_ARRAY_SIZE )
+            {
+              printf("Link %s - Array too large! %ld Bytes\n", fldnames[i], num);
+              status = S_db_errArg;
+            }
+            else
+            {
+              *valptr   = (char *)calloc( *nelptr, MAX_STRING_SIZE );
+              if( j == 1 )
+                *ovlptr = (char *)calloc( *nelptr, MAX_STRING_SIZE );
+              *totptr = num;
+#if DEBUG
+              printf("Link(%s): Address = 0x%x, Bytes = %d\n", fldnames[i], (unsigned int)(*valptr), *totptr);
+#endif
+            }
+          }
+          else
+          {
+            if( *typptr > DBF_ENUM )
+              *typptr = 2;
+            num = (*nelptr)*sizeofTypes[*typptr];
+            if( num > MAX_ARRAY_SIZE )
+            {
+              printf("Link %s - Array too large! %ld Bytes\n", fldnames[i], num);
+              status = S_db_errArg;
+            }
+            else
+            {
+              *valptr   = (char *)calloc( *nelptr, sizeofTypes[*typptr] );
+              if( j == 1 )
+                *ovlptr = (char *)calloc( *nelptr, sizeofTypes[*typptr] );
+              *totptr = num;
+#if DEBUG
+              printf("Link(%s): Address = 0x%x, Bytes = %d\n", fldnames[i], (unsigned int)(*valptr), *totptr);
+#endif
+            }
+          }
+        }
+        if( j == 1 )
+          ovlptr++;
+      }
+      if( status )
+        return(status);
+    }
+    return(status);
+  }
+  else if( pass == 1 )
+  {
+    /* Deal with the Subroutine Input Link */
+
+    switch( pgsub->subl.type )
+    {
+      case (CONSTANT):
+        if( pgsub->lflg == genSubLFLG_READ )
+        {
+          recGblInitConstantLink( &pgsub->subl, DBF_STRING, pgsub->snam );
+          if( !strncmp(pgsub->snam, "0.0", 3) )
+            strcpy(pgsub->snam, " ");
+        }
+        break;
+
+      case (PV_LINK):
+      case (DB_LINK):
+      case (CA_LINK):
+        break;
+
+      default:
+        recGblRecordError( S_db_badField, (void *)pgsub, 
+                           "genSubRecord(init_record) Illegal SUBROUTINE LINK" );
+        status = S_db_badField;
+        break;
+    }
+
+    if( !status )
+    {
+      /* Initialise Input Links */
+
+      plinkin = &pgsub->inpa;
+      typptr  = &pgsub->fta;
+      valptr  = &pgsub->a;
+      nelptr  = &pgsub->noa;
+      for( i=0; i<ARG_MAX; i++, plinkin++, typptr++, valptr++, nelptr++ )
+      {
+        switch( (*plinkin).type ) 
+        {
+          case (CONSTANT):
+#if DEBUG
+            printf("Input Link %s is a CONSTANT\n", Ifldnames[i] );
+#endif
+            if( *nelptr < 2 )
+            {
+              if( recGblInitConstantLink(plinkin, *typptr, *valptr) )
+              {
+                if( (*typptr == DBF_STRING) && (!strncmp((char *)(*valptr), "0.0", 3)) )
+                  strcpy((char *)(*valptr), " ");
+                pgsub->udf = FALSE;
+              }
+              else
+                pgsub->udf = TRUE;
+            }
+            break;
+
+          case (PV_LINK):
+#if DEBUG
+            printf("Input Link %s is a PV_LINK\n", Ifldnames[i] );
+#endif
+            break;
+
+          case (CA_LINK):
+#if DEBUG
+            printf("Input Link %s is a CA_LINK\n", Ifldnames[i] );
+#endif
+            break;
+
+          case (DB_LINK):
+#if DEBUG
+            printf("Input Link %s is a DB_LINK\n", Ifldnames[i] );
+#endif
+            break;
+
+          default:
+            recGblRecordError( S_db_badField, (void *)pgsub, 
+                               "genSubRecord(init_record) Illegal INPUT LINK" );
+            status = S_db_badField;
+            break;
+        }
+      }
+
+      if( status )
+        return(status);
+
+      /* Initialise Output Links */
+
+      plinkout = &pgsub->outa;
+      typptr   = &pgsub->ftva;
+      valptr   = &pgsub->vala;
+      for( i=0; i<ARG_MAX; i++, plinkout++, typptr++, valptr++ )
+      {
+        switch( (*plinkout).type ) 
+        {
+          case (CONSTANT):
+#if DEBUG
+            printf("Output Link %s is a CONSTANT\n", Ofldnames[i] );
+#endif
+            break;
+
+          case (PV_LINK):
+#if DEBUG
+            printf("Output Link %s is a PV_LINK\n", Ofldnames[i] );
+#endif
+            break;
+
+          case (CA_LINK):
+#if DEBUG
+            printf("Output Link %s is a CA_LINK\n", Ofldnames[i] );
+#endif
+            break;
+
+          case (DB_LINK):
+#if DEBUG
+            printf("Output Link %s is a DB_LINK\n", Ofldnames[i] );
+#endif
+            break;
+
+          default:
+            recGblRecordError( S_db_badField, (void *)pgsub, 
+                               "genSubRecord(init_record) Illegal OUTPUT LINK" );
+            status = S_db_badField;
+            break;
+        }
+      }
+    
+      if( !status )
+      {
+        /* Find the user initialisation routine and call it if there is one */
+        if( pgsub->inam[0] != '\0' )
+        {
+          sub_addr = (SUBFUNCPTR)registryFunctionFind(pgsub->inam);
+          if( sub_addr == NULL )
+          {
+           recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(init_record)");
+           status = S_db_BadSub;
+          }
+          else
+          {
+            psubroutine = sub_addr;
+            error       = psubroutine(pgsub);
+          }
+        }
+      }
+
+      if( !status )
+      {
+        if( pgsub->lflg == genSubLFLG_IGNORE )
+        {
+          if( pgsub->snam[0] != '\0' )
+          {
+            sub_addr = (SUBFUNCPTR)registryFunctionFind(pgsub->snam);
+#if DEBUG
+            printf("Calling registryFunctionFind from init_record\n");
+#endif
+            if( sub_addr == NULL )
+            {
+              recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(init_record)");
+              status = S_db_BadSub;
+            }
+            else
+              pgsub->sadr = (long)sub_addr;
+          }
+        }
+      }
+    }
+  }
+  return( status );
+}
+
+
+static long process( genSubRecord *pgsub )
+{
+  int            i;
+  int            j;
+  int            len;
+  SUBFUNCPTR     sub_addr;
+  long           status;
+  struct link    *plinkin;
+  struct link    *plinkout;
+  unsigned short *typptr;
+  unsigned long  *nelptr;
+  long           nRequest;
+  long           options;
+  void           **valptr;
+
+  pgsub->pact = TRUE;
+  status      = 0;
+
+  if( pgsub->lflg == genSubLFLG_READ )
+  {
+    /* Get the Subroutine Name from the Link and look it up */
+
+    nRequest = 1;
+    options  = 0;
+    status   = dbGetLink( &(pgsub->subl), DBR_STRING, pgsub->snam, &options, &nRequest );
+    if( !status )
+    {
+      if( pgsub->snam[0] != '\0' )
+      {
+        if( strcmp(pgsub->snam, pgsub->onam) )  
+        {
+          /* To save time, only look up the routine if it has a different name */
+
+          strcpy(pgsub->onam, pgsub->snam);
+          sub_addr = (SUBFUNCPTR)registryFunctionFind(pgsub->snam);
+#if DEBUG
+          printf("Calling registryFunctionFind from process\n");
+#endif
+          if( sub_addr == NULL)
+          {
+            recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(process) registryFunctionFind failed");
+            status = S_db_BadSub;
+          }
+          else
+            pgsub->sadr = (long)sub_addr;
+        }
+      }
+    }
+  }
+
+  /* Get the Values from the input links */
+
+  if( !status )
+  {
+    plinkin  = &pgsub->inpa;
+    valptr   = &pgsub->a;
+    nelptr   = &pgsub->noa;
+    typptr   = &pgsub->fta;
+    for( i=0; i<ARG_MAX; i++, plinkin++, valptr++, nelptr++, typptr++ )
+    {
+      nRequest = *nelptr;
+      options  = 0;
+      status   = dbGetLink( plinkin, *typptr, *valptr, &options, &nRequest );
+      if( status )
+      {
+        if( CHECKgensubLINKS )
+        {
+          if( !dbIsLinkConnected(plinkin) )
+          {
+            len = strlen(pgsub->name);
+            printf("genSub=\"%s\"", pgsub->name);
+            for( j=0; j<PVNAME_STRINGSZ-len; j++ )
+              printf(" ");
+            printf(", Disconnected Link (%s) to \"%s\"\n", Ifldnames[i], plinkin->value.pv_link.pvname );
+          }
+        }
+        break;
+      }
+    }
+  }
+
+  /* From EPICS 3.13.8, dbGetLink returns -1 if the link is   */
+  /* a disconnected CA link. This means that the user routine */
+  /* will no longer be called in this case. Neither will the  */
+  /* values be placed on the output links. This is consistent */
+  /* with the records in EPICS base.                          */
+
+  if( !status )
+    pgsub->val = do_sub(pgsub);
+
+  /* Put the values on the output links */
+
+  if( !status )
+  {
+    plinkout = &pgsub->outa;
+    valptr   = &pgsub->vala;
+    nelptr   = &pgsub->nova;
+    typptr   = &pgsub->ftva;
+    for( i=0; i<ARG_MAX; i++, plinkout++, valptr++, nelptr++, typptr++ )
+    {
+      nRequest = *nelptr;
+      status   = dbPutLink( plinkout, *typptr, *valptr, nRequest );
+      status   = 0;
+
+/*
+      Do not check this because dbPutLink returns -1 if channel not connected!
+      if( status )
+      {
+        printf("Status %d from recGblPutLinkValue (%s)\n", status, Ofldnames[i]);
+        break;
+      }
+*/
+    }
+  }
+
+  /* These routines should always be called */
+
+  recGblGetTimeStamp( pgsub );
+  monitor(pgsub, 1);
+  recGblFwdLink(pgsub);
+  pgsub->pact = FALSE;
+
+  return(0);
+}
+
+
+static long get_precision( struct dbAddr *paddr, long *precision )
+{
+    genSubRecord *pgsub;
+    int          fieldIndex;
+
+    fieldIndex = dbGetFieldIndex(paddr);
+    if( fieldIndex == genSubRecordVERS )
+    {
+      *precision = 1;
+      return 0;
+    }
+
+    pgsub      = (genSubRecord *)paddr->precord;
+    *precision = pgsub->prec;
+    if( paddr->pfield == (void *)&pgsub->val ) 
+      return(0);
+    recGblGetPrec(paddr,precision);
+    return(0);
+}
+
+
+static long get_value( genSubRecord *pgsub, struct valueDes *pvdes )
+{
+#if DEBUG
+    printf("Calling get_value...\n");
+#endif
+    pvdes->no_elements = 1;
+    pvdes->pvalue      = (void *)(&pgsub->val);
+    pvdes->field_type  = DBF_LONG;
+    return(0);
+}
+
+
+static void monitor( genSubRecord *pgsub, int reset )
+{
+  int            i;
+  unsigned short monitor_mask;
+  unsigned long  *totptr;
+  void           **valptr;
+  void           **ovlptr;
+
+  if( reset )
+    monitor_mask = recGblResetAlarms(pgsub);
+  else
+    monitor_mask = 0;
+
+  monitor_mask |= DBE_VALUE | DBE_LOG;
+
+  /* Post events for SADR (subroutine address) whenever this routine is called */
+
+  if( monitor_mask )
+  {
+    if( pgsub->sadr != pgsub->osad )
+    {
+      db_post_events(pgsub, &pgsub->sadr, monitor_mask);
+      pgsub->osad = pgsub->sadr;
+    }
+  }
+
+  /* Post events for VAL and output fields when this routine called from process */
+  /* Event posting on output arrays depends on the setting of pgsub->eflg        */
+
+  if( reset )
+  {
+    if( monitor_mask )
+    {
+      if( pgsub->val != pgsub->oval )
+      {
+        db_post_events(pgsub, &pgsub->val, monitor_mask);
+        pgsub->oval = pgsub->val;
+      }
+    }
+    if( pgsub->eflg == genSubEFLG_NEVER )
+      return;
+    else if( pgsub->eflg == genSubEFLG_ON_CHANGE )
+    {
+      if(monitor_mask)
+      {
+        valptr = &pgsub->vala;
+        ovlptr = &pgsub->ovla;
+        totptr = &pgsub->tova;
+        for( i=0; i<ARG_MAX; i++, valptr++, ovlptr++, totptr++ )
+        {
+          if( memcmp(*ovlptr, *valptr, *totptr) )
+          {
+#if DEBUG
+            printf("Differences in field %s were found. Total Bytes = %d\n", Ofldnames[i], *totptr);
+#endif
+            memcpy( *ovlptr, *valptr, *totptr );
+            db_post_events(pgsub, *valptr, monitor_mask);
+          }
+        }
+      }
+    }
+    else if( pgsub->eflg == genSubEFLG_ALWAYS )
+    {
+      if(monitor_mask)
+      {
+        valptr = &pgsub->vala;
+        for( i=0; i<ARG_MAX; i++, valptr++ )
+          db_post_events(pgsub, *valptr, monitor_mask);
+      }
+    }
+  }
+  return;
+}
+
+
+static long do_sub( genSubRecord *pgsub )
+{
+  long       status;
+  SUBFUNCPTR psubroutine;
+
+  /* If there is a routine, call it */
+
+  if( pgsub->snam[0] != '\0' )
+  {
+    psubroutine = (SUBFUNCPTR)((void *)pgsub->sadr);
+    if( psubroutine == NULL)
+    {
+      recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(process) NO SUBROUTINE");
+      status = S_db_BadSub;
+    }
+    else
+    {
+      status = psubroutine(pgsub);
+      if( status < 0 )
+        recGblSetSevr(pgsub, SOFT_ALARM, pgsub->brsv);
+      else
+        pgsub->udf = FALSE;
+    }
+  }
+  else
+    status = 0;
+
+  return( status );
+}
+
+
+static long cvt_dbaddr( struct dbAddr *paddr )
+{
+  int  error;
+  int  flag;
+  long no_elements;
+  long nNew;
+
+#if DEBUG
+  printf("Calling cvt_dbaddr...\n");
+#endif
+
+  flag  = 1;
+  nNew  = 0;
+  error = findField( flag, paddr, &no_elements, nNew );
+  if( error )
+    printf("cvt_dbaddr: Could not find field\n");
+  return(0);
+}
+
+
+static long get_array_info( struct dbAddr *paddr, long *no_elements, long *offset )
+{
+  int  error;
+  int  flag;
+  long nNew;
+
+#if DEBUG
+  printf("Calling get_array_info...\n");
+#endif
+  *offset = 0;
+  nNew    = 0;
+  flag    = 2;
+  error   = findField( flag, paddr, no_elements, nNew );
+  if( error )
+    printf("get_array_info: Could not find field\n");
+  return(0);
+}
+
+
+static long put_array_info( struct dbAddr *paddr, long nNew )
+{
+  int  error;
+  int  flag;
+  long no_elements;
+
+#if DEBUG
+  printf("Calling put_array_info...\n");
+#endif
+  flag  = 3;
+  error = findField( flag, paddr, &no_elements, nNew );
+  if( error )
+    printf("put_array_info: Could not find field\n");
+  return(0);
+}
+
+
+static long special( struct dbAddr *paddr, int after )
+{
+  genSubRecord *pgsub;
+  SUBFUNCPTR    sub_addr;
+
+  pgsub = (genSubRecord *)paddr->precord;
+  if( after )
+  {
+    if( pgsub->lflg == genSubLFLG_IGNORE )
+    {
+      if( pgsub->snam[0] != '\0' )
+      {
+        sub_addr = (SUBFUNCPTR)registryFunctionFind(pgsub->snam);
+#if DEBUG
+        printf("Calling registryFunctionFind from special\n");
+#endif
+        if( sub_addr == NULL)
+        {
+          recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(special) registryFunctionFind failed");
+          return(S_db_BadSub);
+        }
+        else
+        {
+          pgsub->sadr = (long)sub_addr;
+          monitor(pgsub, 0);
+        }
+      }
+    }
+  }
+  return(0);
+}
+
+
+static long findField( int flag, struct dbAddr *paddr, long *no_elements, long nNew )
+{
+  long         error;
+  int          fieldIndex;
+  genSubRecord *pgsub;
+
+  pgsub      = (genSubRecord *)paddr->precord;
+  error      = 0;
+  fieldIndex = dbGetFieldIndex(paddr);
+  switch( fieldIndex )
+  {
+    case genSubRecordA:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->a;
+        paddr->no_elements = pgsub->noa;
+        paddr->field_type  = pgsub->fta;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->noa;
+      else if( flag == 3 )
+        pgsub->noa = nNew;
+      break;
+
+    case genSubRecordB:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->b;
+        paddr->no_elements = pgsub->nob;
+        paddr->field_type  = pgsub->ftb;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nob;
+      else if( flag == 3 )
+        pgsub->nob = nNew;
+      break;
+
+    case genSubRecordC:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->c;
+        paddr->no_elements = pgsub->noc;
+        paddr->field_type  = pgsub->ftc;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->noc;
+      else if( flag == 3 )
+        pgsub->noc = nNew;
+      break;
+
+    case genSubRecordD:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->d;
+        paddr->no_elements = pgsub->nod;
+        paddr->field_type  = pgsub->ftd;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nod;
+      else if( flag == 3 )
+        pgsub->nod = nNew;
+      break;
+
+    case genSubRecordE:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->e;
+        paddr->no_elements = pgsub->noe;
+        paddr->field_type  = pgsub->fte;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->noe;
+      else if( flag == 3 )
+        pgsub->noe = nNew;
+      break;
+
+    case genSubRecordF:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->f;
+        paddr->no_elements = pgsub->nof;
+        paddr->field_type  = pgsub->ftf;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nof;
+      else if( flag == 3 )
+        pgsub->nof = nNew;
+      break;
+
+    case genSubRecordG:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->g;
+        paddr->no_elements = pgsub->nog;
+        paddr->field_type  = pgsub->ftg;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nog;
+      else if( flag == 3 )
+        pgsub->nog = nNew;
+      break;
+
+    case genSubRecordH:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->h;
+        paddr->no_elements = pgsub->noh;
+        paddr->field_type  = pgsub->fth;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->noh;
+      else if( flag == 3 )
+        pgsub->noh = nNew;
+      break;
+
+    case genSubRecordI:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->i;
+        paddr->no_elements = pgsub->noi;
+        paddr->field_type  = pgsub->fti;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->noi;
+      else if( flag == 3 )
+        pgsub->noi = nNew;
+      break;
+
+    case genSubRecordJ:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->j;
+        paddr->no_elements = pgsub->noj;
+        paddr->field_type  = pgsub->ftj;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->noj;
+      else if( flag == 3 )
+        pgsub->noj = nNew;
+      break;
+
+    case genSubRecordK:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->k;
+        paddr->no_elements = pgsub->nok;
+        paddr->field_type  = pgsub->ftk;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nok;
+      else if( flag == 3 )
+        pgsub->nok = nNew;
+      break;
+
+    case genSubRecordL:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->l;
+        paddr->no_elements = pgsub->nol;
+        paddr->field_type  = pgsub->ftl;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nol;
+      else if( flag == 3 )
+        pgsub->nol = nNew;
+      break;
+
+    case genSubRecordM:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->m;
+        paddr->no_elements = pgsub->nom;
+        paddr->field_type  = pgsub->ftm;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nom;
+      else if( flag == 3 )
+        pgsub->nom = nNew;
+      break;
+
+    case genSubRecordN:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->n;
+        paddr->no_elements = pgsub->non;
+        paddr->field_type  = pgsub->ftn;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->non;
+      else if( flag == 3 )
+        pgsub->non = nNew;
+      break;
+
+    case genSubRecordO:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->o;
+        paddr->no_elements = pgsub->noo;
+        paddr->field_type  = pgsub->fto;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->noo;
+      else if( flag == 3 )
+        pgsub->noo = nNew;
+      break;
+
+    case genSubRecordP:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->p;
+        paddr->no_elements = pgsub->nop;
+        paddr->field_type  = pgsub->ftp;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nop;
+      else if( flag == 3 )
+        pgsub->nop = nNew;
+      break;
+
+    case genSubRecordQ:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->q;
+        paddr->no_elements = pgsub->noq;
+        paddr->field_type  = pgsub->ftq;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->noq;
+      else if( flag == 3 )
+        pgsub->noq = nNew;
+      break;
+
+    case genSubRecordR:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->r;
+        paddr->no_elements = pgsub->nor;
+        paddr->field_type  = pgsub->ftr;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nor;
+      else if( flag == 3 )
+        pgsub->nor = nNew;
+      break;
+
+    case genSubRecordS:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->s;
+        paddr->no_elements = pgsub->nos;
+        paddr->field_type  = pgsub->fts;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nos;
+      else if( flag == 3 )
+        pgsub->nos = nNew;
+      break;
+
+    case genSubRecordT:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->t;
+        paddr->no_elements = pgsub->not;
+        paddr->field_type  = pgsub->ftt;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->not;
+      else if( flag == 3 )
+        pgsub->not = nNew;
+      break;
+
+    case genSubRecordU:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->u;
+        paddr->no_elements = pgsub->nou;
+        paddr->field_type  = pgsub->ftu;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nou;
+      else if( flag == 3 )
+        pgsub->nou = nNew;
+      break;
+
+    case genSubRecordVALA:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->vala;
+        paddr->no_elements = pgsub->nova;
+        paddr->field_type  = pgsub->ftva;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nova;
+      else if( flag == 3 )
+        pgsub->nova = nNew;
+      break;
+
+    case genSubRecordVALB:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valb;
+        paddr->no_elements = pgsub->novb;
+        paddr->field_type  = pgsub->ftvb;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novb;
+      else if( flag == 3 )
+        pgsub->novb = nNew;
+      break;
+
+    case genSubRecordVALC:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valc;
+        paddr->no_elements = pgsub->novc;
+        paddr->field_type  = pgsub->ftvc;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novc;
+      else if( flag == 3 )
+        pgsub->novc = nNew;
+      break;
+
+    case genSubRecordVALD:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->vald;
+        paddr->no_elements = pgsub->novd;
+        paddr->field_type  = pgsub->ftvd;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novd;
+      else if( flag == 3 )
+        pgsub->novd = nNew;
+      break;
+
+    case genSubRecordVALE:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->vale;
+        paddr->no_elements = pgsub->nove;
+        paddr->field_type  = pgsub->ftve;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->nove;
+      else if( flag == 3 )
+        pgsub->nove = nNew;
+      break;
+
+    case genSubRecordVALF:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valf;
+        paddr->no_elements = pgsub->novf;
+        paddr->field_type  = pgsub->ftvf;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novf;
+      else if( flag == 3 )
+        pgsub->novf = nNew;
+      break;
+
+    case genSubRecordVALG:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valg;
+        paddr->no_elements = pgsub->novg;
+        paddr->field_type  = pgsub->ftvg;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novg;
+      else if( flag == 3 )
+        pgsub->novg = nNew;
+      break;
+
+    case genSubRecordVALH:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valh;
+        paddr->no_elements = pgsub->novh;
+        paddr->field_type  = pgsub->ftvh;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novh;
+      else if( flag == 3 )
+        pgsub->novh = nNew;
+      break;
+
+    case genSubRecordVALI:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->vali;
+        paddr->no_elements = pgsub->novi;
+        paddr->field_type  = pgsub->ftvi;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novi;
+      else if( flag == 3 )
+        pgsub->novi = nNew;
+      break;
+
+    case genSubRecordVALJ:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valj;
+        paddr->no_elements = pgsub->novj;
+        paddr->field_type  = pgsub->ftvj;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novj;
+      else if( flag == 3 )
+        pgsub->novj = nNew;
+      break;
+
+    case genSubRecordVALK:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valk;
+        paddr->no_elements = pgsub->novk;
+        paddr->field_type  = pgsub->ftvk;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novk;
+      else if( flag == 3 )
+        pgsub->novk = nNew;
+      break;
+
+    case genSubRecordVALL:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->vall;
+        paddr->no_elements = pgsub->novl;
+        paddr->field_type  = pgsub->ftvl;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novl;
+      else if( flag == 3 )
+        pgsub->novl = nNew;
+      break;
+
+    case genSubRecordVALM:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valm;
+        paddr->no_elements = pgsub->novm;
+        paddr->field_type  = pgsub->ftvm;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novm;
+      else if( flag == 3 )
+        pgsub->novm = nNew;
+      break;
+
+    case genSubRecordVALN:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valn;
+        paddr->no_elements = pgsub->novn;
+        paddr->field_type  = pgsub->ftvn;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novn;
+      else if( flag == 3 )
+        pgsub->novn = nNew;
+      break;
+
+    case genSubRecordVALO:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valo;
+        paddr->no_elements = pgsub->novo;
+        paddr->field_type  = pgsub->ftvo;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novo;
+      else if( flag == 3 )
+        pgsub->novo = nNew;
+      break;
+
+    case genSubRecordVALP:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valp;
+        paddr->no_elements = pgsub->novp;
+        paddr->field_type  = pgsub->ftvp;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novp;
+      else if( flag == 3 )
+        pgsub->novp = nNew;
+      break;
+
+    case genSubRecordVALQ:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valq;
+        paddr->no_elements = pgsub->novq;
+        paddr->field_type  = pgsub->ftvq;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novq;
+      else if( flag == 3 )
+        pgsub->novq = nNew;
+      break;
+
+    case genSubRecordVALR:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valr;
+        paddr->no_elements = pgsub->novr;
+        paddr->field_type  = pgsub->ftvr;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novr;
+      else if( flag == 3 )
+        pgsub->novr = nNew;
+      break;
+
+    case genSubRecordVALS:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->vals;
+        paddr->no_elements = pgsub->novs;
+        paddr->field_type  = pgsub->ftvs;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novs;
+      else if( flag == 3 )
+        pgsub->novs = nNew;
+      break;
+
+    case genSubRecordVALT:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valt;
+        paddr->no_elements = pgsub->novt;
+        paddr->field_type  = pgsub->ftvt;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novt;
+      else if( flag == 3 )
+        pgsub->novt = nNew;
+      break;
+
+    case genSubRecordVALU:
+      if( flag == 1 )
+      {
+        paddr->pfield      = pgsub->valu;
+        paddr->no_elements = pgsub->novu;
+        paddr->field_type  = pgsub->ftvu;
+      }
+      else if( flag == 2 )
+        *no_elements = pgsub->novu;
+      else if( flag == 3 )
+        pgsub->novu = nNew;
+      break;
+
+    default:
+      error = 1;
+      break;
+  }
+
+  if( !error && flag == 1 )
+  {
+    paddr->dbr_field_type = paddr->field_type;
+    if( paddr->field_type == DBF_STRING )
+      paddr->field_size = MAX_STRING_SIZE;
+    else
+      paddr->field_size = sizeofTypes[paddr->field_type];
+  }
+
+  return(error);
+}
diff --git a/ebctrl/ioc/ebctrlApp/src/genSubRecord.dbd b/ebctrl/ioc/ebctrlApp/src/genSubRecord.dbd
new file mode 100755 (executable)
index 0000000..909bd69
--- /dev/null
@@ -0,0 +1,1875 @@
+menu(genSubLFLG) {
+       choice(genSubLFLG_IGNORE,"IGNORE")
+       choice(genSubLFLG_READ,"READ")
+}
+
+menu(genSubEFLG) {
+       choice(genSubEFLG_NEVER,"NEVER")
+       choice(genSubEFLG_ON_CHANGE,"ON CHANGE")
+       choice(genSubEFLG_ALWAYS,"ALWAYS")
+}
+recordtype(genSub) {
+       include "dbCommon.dbd" 
+        field(VERS,DBF_DOUBLE) {
+                prompt("Version Number")
+                promptgroup(GUI_DISPLAY)
+                special(SPC_NOMOD)
+                interest(1)
+        }
+       field(VAL,DBF_LONG) {
+               prompt("Subr. return value")
+               asl(ASL0)
+       }
+       field(OVAL,DBF_LONG) {
+               prompt("Old return value")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(SADR,DBF_LONG) {
+               prompt("Subroutine Address")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OSAD,DBF_LONG) {
+               prompt("Old Subr. Address")
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(LFLG,DBF_MENU) {
+               prompt("Link Flag")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+               menu(genSubLFLG)
+       }
+       field(EFLG,DBF_MENU) {
+               prompt("Event Flag")
+               promptgroup(GUI_OUTPUT)
+               interest(1)
+               menu(genSubEFLG)
+       }
+       field(SUBL,DBF_INLINK) {
+               prompt("Subroutine Input Link")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INAM,DBF_STRING) {
+               prompt("Init Routine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(SNAM,DBF_STRING) {
+               prompt("Process Subr. Name")
+               promptgroup(GUI_SUB)
+               special(SPC_MOD)
+               interest(1)
+               size(40)
+       }
+       field(ONAM,DBF_STRING) {
+               prompt("Old Subroutine Name")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(BRSV,DBF_MENU) {
+               prompt("Bad Return Severity")
+               promptgroup(GUI_SUB)
+               pp(TRUE)
+               interest(1)
+               menu(menuAlarmSevr)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(INPA,DBF_INLINK) {
+               prompt("Input Link A")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPB,DBF_INLINK) {
+               prompt("Input Link B")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPC,DBF_INLINK) {
+               prompt("Input Link C")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPD,DBF_INLINK) {
+               prompt("Input Link D")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPE,DBF_INLINK) {
+               prompt("Input Link E")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPF,DBF_INLINK) {
+               prompt("Input Link F")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPG,DBF_INLINK) {
+               prompt("Input Link G")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPH,DBF_INLINK) {
+               prompt("Input Link H")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPI,DBF_INLINK) {
+               prompt("Input Link I")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPJ,DBF_INLINK) {
+               prompt("Input Link J")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPK,DBF_INLINK) {
+               prompt("Input Link K")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPL,DBF_INLINK) {
+               prompt("Input Link L")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPM,DBF_INLINK) {
+               prompt("Input Link M")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPN,DBF_INLINK) {
+               prompt("Input Link N")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPO,DBF_INLINK) {
+               prompt("Input Link O")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPP,DBF_INLINK) {
+               prompt("Input Link P")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPQ,DBF_INLINK) {
+               prompt("Input Link Q")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPR,DBF_INLINK) {
+               prompt("Input Link R")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPS,DBF_INLINK) {
+               prompt("Input Link S")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPT,DBF_INLINK) {
+               prompt("Input Link T")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(INPU,DBF_INLINK) {
+               prompt("Input Link U")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(UFA,DBF_STRING) {
+               prompt("Input Structure A")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFB,DBF_STRING) {
+               prompt("Input Structure B")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFC,DBF_STRING) {
+               prompt("Input Structure C")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFD,DBF_STRING) {
+               prompt("Input Structure D")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFE,DBF_STRING) {
+               prompt("Input Structure E")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFF,DBF_STRING) {
+               prompt("Input Structure F")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFG,DBF_STRING) {
+               prompt("Input Structure G")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFH,DBF_STRING) {
+               prompt("Input Structure H")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFI,DBF_STRING) {
+               prompt("Input Structure I")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFJ,DBF_STRING) {
+               prompt("Input Structure J")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFK,DBF_STRING) {
+               prompt("Input Structure K")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFL,DBF_STRING) {
+               prompt("Input Structure L")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFM,DBF_STRING) {
+               prompt("Input Structure M")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFN,DBF_STRING) {
+               prompt("Input Structure N")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFO,DBF_STRING) {
+               prompt("Input Structure O")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFP,DBF_STRING) {
+               prompt("Input Structure P")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFQ,DBF_STRING) {
+               prompt("Input Structure Q")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFR,DBF_STRING) {
+               prompt("Input Structure R")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFS,DBF_STRING) {
+               prompt("Input Structure S")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFT,DBF_STRING) {
+               prompt("Input Structure T")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFU,DBF_STRING) {
+               prompt("Input Structure U")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(A,DBF_NOACCESS) {
+               prompt("Value of Input A")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *a")
+       }
+       field(B,DBF_NOACCESS) {
+               prompt("Value of Input B")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *b")
+       }
+       field(C,DBF_NOACCESS) {
+               prompt("Value of Input C")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *c")
+       }
+       field(D,DBF_NOACCESS) {
+               prompt("Value of Input D")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *d")
+       }
+       field(E,DBF_NOACCESS) {
+               prompt("Value of Input E")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *e")
+       }
+       field(F,DBF_NOACCESS) {
+               prompt("Value of Input F")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *f")
+       }
+       field(G,DBF_NOACCESS) {
+               prompt("Value of Input G")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *g")
+       }
+       field(H,DBF_NOACCESS) {
+               prompt("Value of Input H")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *h")
+       }
+       field(I,DBF_NOACCESS) {
+               prompt("Value of Input I")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *i")
+       }
+       field(J,DBF_NOACCESS) {
+               prompt("Value of Input J")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               pp(TRUE)
+               interest(1)
+               size(4)
+               extra("void *j")
+       }
+       field(K,DBF_NOACCESS) {
+               prompt("Value of Input K")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *k")
+       }
+       field(L,DBF_NOACCESS) {
+               prompt("Value of Input L")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *l")
+       }
+       field(M,DBF_NOACCESS) {
+               prompt("Value of Input M")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *m")
+       }
+       field(N,DBF_NOACCESS) {
+               prompt("Value of Input N")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *n")
+       }
+       field(O,DBF_NOACCESS) {
+               prompt("Value of Input O")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *o")
+       }
+       field(P,DBF_NOACCESS) {
+               prompt("Value of Input P")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *p")
+       }
+       field(Q,DBF_NOACCESS) {
+               prompt("Value of Input Q")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *q")
+       }
+       field(R,DBF_NOACCESS) {
+               prompt("Value of Input R")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *r")
+       }
+       field(S,DBF_NOACCESS) {
+               prompt("Value of Input S")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *s")
+       }
+       field(T,DBF_NOACCESS) {
+               prompt("Value of Input T")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *t")
+       }
+       field(U,DBF_NOACCESS) {
+               prompt("Value of Input U")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *u")
+       }
+       field(FTA,DBF_MENU) {
+               prompt("Type of A")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTB,DBF_MENU) {
+               prompt("Type of B")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTC,DBF_MENU) {
+               prompt("Type of C")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTD,DBF_MENU) {
+               prompt("Type of D")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTE,DBF_MENU) {
+               prompt("Type of E")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTF,DBF_MENU) {
+               prompt("Type of F")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTG,DBF_MENU) {
+               prompt("Type of G")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTH,DBF_MENU) {
+               prompt("Type of H")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTI,DBF_MENU) {
+               prompt("Type of I")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTJ,DBF_MENU) {
+               prompt("Type of J")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTK,DBF_MENU) {
+               prompt("Type of K")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTL,DBF_MENU) {
+               prompt("Type of L")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTM,DBF_MENU) {
+               prompt("Type of M")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTN,DBF_MENU) {
+               prompt("Type of N")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTO,DBF_MENU) {
+               prompt("Type of O")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTP,DBF_MENU) {
+               prompt("Type of P")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTQ,DBF_MENU) {
+               prompt("Type of Q")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTR,DBF_MENU) {
+               prompt("Type of R")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTS,DBF_MENU) {
+               prompt("Type of S")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTT,DBF_MENU) {
+               prompt("Type of T")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTU,DBF_MENU) {
+               prompt("Type of U")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(NOA,DBF_ULONG) {
+               prompt("No. in A")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOB,DBF_ULONG) {
+               prompt("No. in B")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOC,DBF_ULONG) {
+               prompt("No. in C")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOD,DBF_ULONG) {
+               prompt("No. in D")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOE,DBF_ULONG) {
+               prompt("No. in E")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOF,DBF_ULONG) {
+               prompt("No. in F")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOG,DBF_ULONG) {
+               prompt("No. in G")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOH,DBF_ULONG) {
+               prompt("No. in H")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOI,DBF_ULONG) {
+               prompt("No. in I")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOJ,DBF_ULONG) {
+               prompt("No. in J")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOK,DBF_ULONG) {
+               prompt("No. in K")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOL,DBF_ULONG) {
+               prompt("No. in L")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOM,DBF_ULONG) {
+               prompt("No. in M")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NON,DBF_ULONG) {
+               prompt("No. in N")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOO,DBF_ULONG) {
+               prompt("No. in O")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOP,DBF_ULONG) {
+               prompt("No. in P")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOQ,DBF_ULONG) {
+               prompt("No. in Q")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOR,DBF_ULONG) {
+               prompt("No. in R")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOS,DBF_ULONG) {
+               prompt("No. in S")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOT,DBF_ULONG) {
+               prompt("No. in T")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOU,DBF_ULONG) {
+               prompt("No. in U")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(OUTA,DBF_OUTLINK) {
+               prompt("Output Link A")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTB,DBF_OUTLINK) {
+               prompt("Output Link B")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTC,DBF_OUTLINK) {
+               prompt("Output Link C")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTD,DBF_OUTLINK) {
+               prompt("Output Link D")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTE,DBF_OUTLINK) {
+               prompt("Output Link E")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTF,DBF_OUTLINK) {
+               prompt("Output Link F")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTG,DBF_OUTLINK) {
+               prompt("Output Link G")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTH,DBF_OUTLINK) {
+               prompt("Output Link H")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTI,DBF_OUTLINK) {
+               prompt("Output Link I")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTJ,DBF_OUTLINK) {
+               prompt("Output Link J")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTK,DBF_OUTLINK) {
+               prompt("Output Link K")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTL,DBF_OUTLINK) {
+               prompt("Output Link L")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTM,DBF_OUTLINK) {
+               prompt("Output Link M")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTN,DBF_OUTLINK) {
+               prompt("Output Link N")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTO,DBF_OUTLINK) {
+               prompt("Output Link O")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTP,DBF_OUTLINK) {
+               prompt("Output Link P")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTQ,DBF_OUTLINK) {
+               prompt("Output Link Q")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTR,DBF_OUTLINK) {
+               prompt("Output Link R")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTS,DBF_OUTLINK) {
+               prompt("Output Link S")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTT,DBF_OUTLINK) {
+               prompt("Output Link T")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(OUTU,DBF_OUTLINK) {
+               prompt("Output Link U")
+               promptgroup(GUI_OUTPUT)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(UFVA,DBF_STRING) {
+               prompt("Output Structure A")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVB,DBF_STRING) {
+               prompt("Output Structure B")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVC,DBF_STRING) {
+               prompt("Output Structure C")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVD,DBF_STRING) {
+               prompt("Output Structure D")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVE,DBF_STRING) {
+               prompt("Output Structure E")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVF,DBF_STRING) {
+               prompt("Output Structure F")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVG,DBF_STRING) {
+               prompt("Output Structure G")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVH,DBF_STRING) {
+               prompt("Output Structure H")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVI,DBF_STRING) {
+               prompt("Output Structure I")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVJ,DBF_STRING) {
+               prompt("Output Structure J")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVK,DBF_STRING) {
+               prompt("Output Structure K")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVL,DBF_STRING) {
+               prompt("Output Structure L")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVM,DBF_STRING) {
+               prompt("Output Structure M")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVN,DBF_STRING) {
+               prompt("Output Structure N")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVO,DBF_STRING) {
+               prompt("Output Structure O")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVP,DBF_STRING) {
+               prompt("Output Structure P")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVQ,DBF_STRING) {
+               prompt("Output Structure Q")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVR,DBF_STRING) {
+               prompt("Output Structure R")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVS,DBF_STRING) {
+               prompt("Output Structure S")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVT,DBF_STRING) {
+               prompt("Output Structure T")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(UFVU,DBF_STRING) {
+               prompt("Output Structure U")
+               promptgroup(GUI_SUB)
+               special(SPC_NOMOD)
+               interest(1)
+               size(40)
+       }
+       field(VALA,DBF_NOACCESS) {
+               prompt("Value of Output A")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vala")
+       }
+       field(VALB,DBF_NOACCESS) {
+               prompt("Value of Output B")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valb")
+       }
+       field(VALC,DBF_NOACCESS) {
+               prompt("Value of Output C")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valc")
+       }
+       field(VALD,DBF_NOACCESS) {
+               prompt("Value of Output D")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vald")
+       }
+       field(VALE,DBF_NOACCESS) {
+               prompt("Value of Output E")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vale")
+       }
+       field(VALF,DBF_NOACCESS) {
+               prompt("Value of Output F")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valf")
+       }
+       field(VALG,DBF_NOACCESS) {
+               prompt("Value of Output G")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valg")
+       }
+       field(VALH,DBF_NOACCESS) {
+               prompt("Value of Output H")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valh")
+       }
+       field(VALI,DBF_NOACCESS) {
+               prompt("Value of Output I")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vali")
+       }
+       field(VALJ,DBF_NOACCESS) {
+               prompt("Value of Output J")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valj")
+       }
+       field(VALK,DBF_NOACCESS) {
+               prompt("Value of Output K")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valk")
+       }
+       field(VALL,DBF_NOACCESS) {
+               prompt("Value of Output L")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vall")
+       }
+       field(VALM,DBF_NOACCESS) {
+               prompt("Value of Output M")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valm")
+       }
+       field(VALN,DBF_NOACCESS) {
+               prompt("Value of Output N")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valn")
+       }
+       field(VALO,DBF_NOACCESS) {
+               prompt("Value of Output O")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valo")
+       }
+       field(VALP,DBF_NOACCESS) {
+               prompt("Value of Output P")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valp")
+       }
+       field(VALQ,DBF_NOACCESS) {
+               prompt("Value of Output Q")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valq")
+       }
+       field(VALR,DBF_NOACCESS) {
+               prompt("Value of Output R")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valr")
+       }
+       field(VALS,DBF_NOACCESS) {
+               prompt("Value of Output S")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *vals")
+       }
+       field(VALT,DBF_NOACCESS) {
+               prompt("Value of Output T")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valt")
+       }
+       field(VALU,DBF_NOACCESS) {
+               prompt("Value of Output U")
+               asl(ASL0)
+               special(SPC_DBADDR)
+               interest(1)
+               size(4)
+               extra("void *valu")
+       }
+       field(OVLA,DBF_NOACCESS) {
+               prompt("Old Output A")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovla")
+       }
+       field(OVLB,DBF_NOACCESS) {
+               prompt("Old Output B")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlb")
+       }
+       field(OVLC,DBF_NOACCESS) {
+               prompt("Old Output C")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlc")
+       }
+       field(OVLD,DBF_NOACCESS) {
+               prompt("Old Output D")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovld")
+       }
+       field(OVLE,DBF_NOACCESS) {
+               prompt("Old Output E")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovle")
+       }
+       field(OVLF,DBF_NOACCESS) {
+               prompt("Old Output F")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlf")
+       }
+       field(OVLG,DBF_NOACCESS) {
+               prompt("Old Output G")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlg")
+       }
+       field(OVLH,DBF_NOACCESS) {
+               prompt("Old Output H")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlh")
+       }
+       field(OVLI,DBF_NOACCESS) {
+               prompt("Old Output I")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovli")
+       }
+       field(OVLJ,DBF_NOACCESS) {
+               prompt("Old Output J")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlj")
+       }
+       field(OVLK,DBF_NOACCESS) {
+               prompt("Old Output K")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlk")
+       }
+       field(OVLL,DBF_NOACCESS) {
+               prompt("Old Output L")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovll")
+       }
+       field(OVLM,DBF_NOACCESS) {
+               prompt("Old Output M")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlm")
+       }
+       field(OVLN,DBF_NOACCESS) {
+               prompt("Old Output N")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovln")
+       }
+       field(OVLO,DBF_NOACCESS) {
+               prompt("Old Output O")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlo")
+       }
+       field(OVLP,DBF_NOACCESS) {
+               prompt("Old Output P")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlp")
+       }
+       field(OVLQ,DBF_NOACCESS) {
+               prompt("Old Output Q")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlq")
+       }
+       field(OVLR,DBF_NOACCESS) {
+               prompt("Old Output R")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlr")
+       }
+       field(OVLS,DBF_NOACCESS) {
+               prompt("Old Output S")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovls")
+       }
+       field(OVLT,DBF_NOACCESS) {
+               prompt("Old Output T")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlt")
+       }
+       field(OVLU,DBF_NOACCESS) {
+               prompt("Old Output U")
+               asl(ASL0)
+               special(SPC_NOMOD)
+               interest(1)
+               size(4)
+               extra("void *ovlu")
+       }
+       field(FTVA,DBF_MENU) {
+               prompt("Type of VALA")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVB,DBF_MENU) {
+               prompt("Type of VALB")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVC,DBF_MENU) {
+               prompt("Type of VALC")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVD,DBF_MENU) {
+               prompt("Type of VALD")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVE,DBF_MENU) {
+               prompt("Type of VALE")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVF,DBF_MENU) {
+               prompt("Type of VALF")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVG,DBF_MENU) {
+               prompt("Type of VALG")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVH,DBF_MENU) {
+               prompt("Type of VALH")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVI,DBF_MENU) {
+               prompt("Type of VALI")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVJ,DBF_MENU) {
+               prompt("Type of VALJ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVK,DBF_MENU) {
+               prompt("Type of VALK")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVL,DBF_MENU) {
+               prompt("Type of VALL")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVM,DBF_MENU) {
+               prompt("Type of VALM")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVN,DBF_MENU) {
+               prompt("Type of VALN")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVO,DBF_MENU) {
+               prompt("Type of VALO")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVP,DBF_MENU) {
+               prompt("Type of VALP")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVQ,DBF_MENU) {
+               prompt("Type of VALQ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVR,DBF_MENU) {
+               prompt("Type of VALR")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVS,DBF_MENU) {
+               prompt("Type of VALS")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVT,DBF_MENU) {
+               prompt("Type of VALT")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(FTVU,DBF_MENU) {
+               prompt("Type of VALU")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               menu(menuFtype)
+       }
+       field(NOVA,DBF_ULONG) {
+               prompt("No. in VALA")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVB,DBF_ULONG) {
+               prompt("No. in VALB")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVC,DBF_ULONG) {
+               prompt("No. in VALC")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVD,DBF_ULONG) {
+               prompt("No. in VALD")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVE,DBF_ULONG) {
+               prompt("No. in VALE")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVF,DBF_ULONG) {
+               prompt("No. in VALF")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVG,DBF_ULONG) {
+               prompt("No. in VALG")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVH,DBF_ULONG) {
+               prompt("No. in VAlH")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVI,DBF_ULONG) {
+               prompt("No. in VALI")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVJ,DBF_ULONG) {
+               prompt("No. in VALJ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVK,DBF_ULONG) {
+               prompt("No. in VALK")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVL,DBF_ULONG) {
+               prompt("No. in VALL")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVM,DBF_ULONG) {
+               prompt("No. in VALM")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVN,DBF_ULONG) {
+               prompt("No. in VALN")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVO,DBF_ULONG) {
+               prompt("No. in VALO")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVP,DBF_ULONG) {
+               prompt("No. in VALP")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVQ,DBF_ULONG) {
+               prompt("No. in VALQ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVR,DBF_ULONG) {
+               prompt("No. in VALR")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVS,DBF_ULONG) {
+               prompt("No. in VALS")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVT,DBF_ULONG) {
+               prompt("No. in VALT")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(NOVU,DBF_ULONG) {
+               prompt("No. in VALU")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVA,DBF_ULONG) {
+               prompt("Total bytes for VALA")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVB,DBF_ULONG) {
+               prompt("Total bytes for VALB")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVC,DBF_ULONG) {
+               prompt("Total bytes for VALC")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVD,DBF_ULONG) {
+               prompt("Total bytes for VALD")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVE,DBF_ULONG) {
+               prompt("Total bytes for VALE")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVF,DBF_ULONG) {
+               prompt("Total bytes for VALF")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVG,DBF_ULONG) {
+               prompt("Total bytes for VALG")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVH,DBF_ULONG) {
+               prompt("Total bytes for VAlH")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVI,DBF_ULONG) {
+               prompt("Total bytes for VALI")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVJ,DBF_ULONG) {
+               prompt("Total bytes for VALJ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVK,DBF_ULONG) {
+               prompt("Total bytes for VALK")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVL,DBF_ULONG) {
+               prompt("Total bytes for VALL")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVM,DBF_ULONG) {
+               prompt("Total bytes for VALM")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVN,DBF_ULONG) {
+               prompt("Total bytes for VALN")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVO,DBF_ULONG) {
+               prompt("Total bytes for VALO")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVP,DBF_ULONG) {
+               prompt("Total bytes for VALP")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVQ,DBF_ULONG) {
+               prompt("Total bytes for VALQ")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVR,DBF_ULONG) {
+               prompt("Total bytes for VALR")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVS,DBF_ULONG) {
+               prompt("Total bytes for VALS")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVT,DBF_ULONG) {
+               prompt("Total bytes for VALT")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+       field(TOVU,DBF_ULONG) {
+               prompt("Total bytes for VALU")
+               promptgroup(GUI_WAVE)
+               special(SPC_NOMOD)
+               interest(1)
+               initial("1")
+       }
+}
diff --git a/ebctrl/ioc/ebctrlApp/src/genrunid.c b/ebctrl/ioc/ebctrlApp/src/genrunid.c
new file mode 100644 (file)
index 0000000..4b44a75
--- /dev/null
@@ -0,0 +1,109 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+
+#include <dbDefs.h>
+#include <registryFunction.h>
+#include <subRecord.h>
+#include <epicsExport.h>
+
+int genrunidDebug;
+
+long genRunId_init( struct subRecord *pgsub )
+{
+  return(0);
+}
+
+long genRunId_proc( struct subRecord *psub )
+{
+  
+  static long runId    = 0;
+  static long runIdOld = 0;
+  long timeoffset = 1200000000;        /* seconds */
+  long sizelimit  = 500*1024*1024;     /* bytes */
+  int fileSize    = 0;
+  int status      = 0;
+  struct timeval tv;
+
+  /*  Get HOSTNAME (name of a local machine) and
+   *      EBMASTER (name of the Event Builder Master).
+   *  The Event Builder Master synchronizes other Event Builders,
+   *  which means that only the Master should generate the runId. 
+   */
+
+  char* hostname = getenv( "HOSTNAME" );
+  if( hostname == NULL ) {
+    hostname = "HOST_UNDEFINED";
+    if(genrunidDebug)
+      fprintf( stderr, "<E> genrunid.c: env variable HOSTNAME is undefined!\n");
+  }
+
+  char* ebmaster = getenv( "EBMASTER" );
+  if( ebmaster == NULL ) {
+    ebmaster = "MASTER_UNDEFINED";
+    if(genrunidDebug)
+      fprintf( stderr, "<E> genrunid.c: env variable EBMASTER is undefined!\n");
+  }
+
+  /*  If a local machine name is the name of the Event Builder Master,
+   *  generate the runId and put it to a VAL (to be read by other IOCs).
+   */
+
+  if( strcmp(ebmaster,hostname) != 0 ) {
+    if(genrunidDebug)
+      printf( "<D> genrunid.c: %s is not a master (%s).\n", hostname, ebmaster);
+  }
+  else{
+
+    fileSize = psub->a; /* size of the data file written by event builder */
+    status   = (int) psub->b; /* status of the event buidler (1=on/0=off) */
+
+    if( status == 0 ) {
+      if( genrunidDebug ) {
+       printf( "genrunid.c: Event Builder is off, status: %d\n", status );
+       /*
+        *  One of the reasons for this message might be closed permissions
+        *  for (/dev/shm/daq_evtbuild.shm) shared memory access. 
+        */
+      }
+      runId = 0;
+    }
+
+    if( genrunidDebug )
+      printf( "genrunid.c: received file size: %d\n", fileSize );
+    
+    if( fileSize < sizelimit ){
+      runIdOld = runId;
+    }
+    
+    /* Generate RUN Id: time (in sec from 1970) minus timeoffset */
+    if( (runId == 0 && status) || 
+       (fileSize > sizelimit && runIdOld == runId && runId > 0 && status) ) {
+      
+      /*
+       *  The following line is executed only ONCE 
+       *  either at the beginning when runId == 0 
+       *  or when the file size becomes bigger than the size limit.
+       */
+      gettimeofday( &tv, NULL );
+      runId = tv.tv_sec - timeoffset;
+      
+      if( genrunidDebug )
+       printf( "<D> genrunid.c: RUN Id was generated: runId = %lu \n", runId );
+    }
+    
+    psub->val = runId;
+    
+    if( genrunidDebug )
+      printf( "<D> genrunid.c: runId = %lu runIdOld = %lu\n", runId, runIdOld );
+  } /* end of EBMASTER condition */
+
+  return(0);
+}
+
+/* Register these symbols for use by IOC code: */
+
+epicsExportAddress(int, genrunidDebug);
+epicsRegisterFunction(genRunId_init);
+epicsRegisterFunction(genRunId_proc);
diff --git a/ebctrl/ioc/ebctrlApp/src/genrunid.dbd b/ebctrl/ioc/ebctrlApp/src/genrunid.dbd
new file mode 100644 (file)
index 0000000..51b2d06
--- /dev/null
@@ -0,0 +1,3 @@
+variable(genrunidDebug)
+function(genRunId_init)
+function(genRunId_proc)
\ No newline at end of file
diff --git a/ebctrl/ioc/ebctrlApp/src/sncExample.dbd b/ebctrl/ioc/ebctrlApp/src/sncExample.dbd
new file mode 100644 (file)
index 0000000..df61066
--- /dev/null
@@ -0,0 +1 @@
+registrar(sncExampleRegistrar)
diff --git a/ebctrl/ioc/ebctrlApp/src/sncExample.stt b/ebctrl/ioc/ebctrlApp/src/sncExample.stt
new file mode 100644 (file)
index 0000000..235f3f4
--- /dev/null
@@ -0,0 +1,22 @@
+program sncExample
+double v;
+assign v to "{user}:aiExample";
+monitor v;
+
+ss ss1 {
+    state init {
+       when (delay(10)) {
+           printf("sncExample: Startup delay over\n");
+       } state low
+    }
+    state low {
+       when (v > 5.0) {
+           printf("sncExample: Changing to high\n");
+       } state high
+    }
+    state high {
+       when (v <= 5.0) {
+           printf("sncExample: Changing to low\n");
+       } state low
+    }
+}
diff --git a/ebctrl/ioc/ebctrlApp/src/sncProgram.st b/ebctrl/ioc/ebctrlApp/src/sncProgram.st
new file mode 100644 (file)
index 0000000..1ba2989
--- /dev/null
@@ -0,0 +1 @@
+#include "../sncExample.stt"
diff --git a/ebctrl/ioc/ebctrlApp/src/writerunid.c b/ebctrl/ioc/ebctrlApp/src/writerunid.c
new file mode 100644 (file)
index 0000000..6e4cf4f
--- /dev/null
@@ -0,0 +1,52 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+
+#include <dbDefs.h>
+#include <registryFunction.h>
+#include <subRecord.h>
+#include <epicsExport.h>
+
+#include "worker.h"
+
+int writerunidDebug;
+
+long writeRunId_init( struct subRecord *pgsub )
+{
+  return(0);
+}
+
+long writeRunId_proc( struct subRecord *psub )
+{
+  
+  /*  Get a distributed runId and write it to
+   *  a shared memory of a local Event Builder.
+   */
+
+  static unsigned long runId = 0;
+  
+  runId = (unsigned long) psub->a;
+  
+  if( Worker_setStatistic( "daq_evtbuild", "runId", &runId ) == -1 ) {
+    if(writerunidDebug) {
+      fprintf( stderr, "<E> writerunid.c: Worker_setStatistic failed for runId! Either shared memory daq_evtbuild was not created or statistic runId was not added by the event builder.\n");
+    }
+  }
+  else
+    if(writerunidDebug) {
+      printf("<D> writerunid.c: Worker_setStatistic runId = %lu\n", runId);
+
+      unsigned long runId_check;
+      if( Worker_getStatistic( "daq_evtbuild", "runId", &runId_check ) == -1 ) 
+       printf("<E> writerunid.c: check: Worker_getStatistic cannot access runId!\n");
+      else
+       printf("<D> writerunid.c: check: Worker_getStatistic runId = %lu\n", runId_check);
+    }
+  return(0);
+}
+
+/* Register these symbols for use by IOC code: */
+
+epicsExportAddress(int, writerunidDebug);
+epicsRegisterFunction(writeRunId_init);
+epicsRegisterFunction(writeRunId_proc);
diff --git a/ebctrl/ioc/ebctrlApp/src/writerunid.dbd b/ebctrl/ioc/ebctrlApp/src/writerunid.dbd
new file mode 100644 (file)
index 0000000..e174287
--- /dev/null
@@ -0,0 +1,3 @@
+variable(writerunidDebug)
+function(writeRunId_init)
+function(writeRunId_proc)
\ No newline at end of file
diff --git a/ebctrl/ioc/ebctrlApp/src/xxxRecord.c b/ebctrl/ioc/ebctrlApp/src/xxxRecord.c
new file mode 100644 (file)
index 0000000..6fb1472
--- /dev/null
@@ -0,0 +1,272 @@
+/* xxxRecord.c */
+/* Example record support module */
+  
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "alarm.h"
+#include "dbAccess.h"
+#include "recGbl.h"
+#include "dbEvent.h"
+#include "dbDefs.h"
+#include "dbAccess.h"
+#include "devSup.h"
+#include "errMdef.h"
+#include "recSup.h"
+#include "special.h"
+#define GEN_SIZE_OFFSET
+#include "xxxRecord.h"
+#undef  GEN_SIZE_OFFSET
+#include "epicsExport.h"
+
+/* Create RSET - Record Support Entry Table */
+#define report NULL
+#define initialize NULL
+static long init_record();
+static long process();
+#define special NULL
+#define get_value NULL
+#define cvt_dbaddr NULL
+#define get_array_info NULL
+#define put_array_info NULL
+static long get_units();
+static long get_precision();
+#define get_enum_str NULL
+#define get_enum_strs NULL
+#define put_enum_str NULL
+static long get_graphic_double();
+static long get_control_double();
+static long get_alarm_double();
+rset xxxRSET={
+       RSETNUMBER,
+       report,
+       initialize,
+       init_record,
+       process,
+       special,
+       get_value,
+       cvt_dbaddr,
+       get_array_info,
+       put_array_info,
+       get_units,
+       get_precision,
+       get_enum_str,
+       get_enum_strs,
+       put_enum_str,
+       get_graphic_double,
+       get_control_double,
+       get_alarm_double
+};
+epicsExportAddress(rset,xxxRSET);
+
+typedef struct xxxset { /* xxx input dset */
+       long            number;
+       DEVSUPFUN       dev_report;
+       DEVSUPFUN       init;
+       DEVSUPFUN       init_record; /*returns: (-1,0)=>(failure,success)*/
+       DEVSUPFUN       get_ioint_info;
+       DEVSUPFUN       read_xxx;
+}xxxdset;
+
+static void checkAlarms(xxxRecord *pxxx);
+static void monitor(xxxRecord *pxxx);
+\f
+static long init_record(void *precord,int pass)
+{
+    xxxRecord  *pxxx = (xxxRecord *)precord;
+    xxxdset    *pdset;
+    long       status;
+
+    if (pass==0) return(0);
+
+    if(!(pdset = (xxxdset *)(pxxx->dset))) {
+       recGblRecordError(S_dev_noDSET,(void *)pxxx,"xxx: init_record");
+       return(S_dev_noDSET);
+    }
+    /* must have read_xxx function defined */
+    if( (pdset->number < 5) || (pdset->read_xxx == NULL) ) {
+       recGblRecordError(S_dev_missingSup,(void *)pxxx,"xxx: init_record");
+       return(S_dev_missingSup);
+    }
+
+    if( pdset->init_record ) {
+       if((status=(*pdset->init_record)(pxxx))) return(status);
+    }
+    return(0);
+}
+\f
+static long process(void *precord)
+{
+       xxxRecord       *pxxx = (xxxRecord *)precord;
+       xxxdset         *pdset = (xxxdset *)(pxxx->dset);
+       long             status;
+       unsigned char    pact=pxxx->pact;
+
+       if( (pdset==NULL) || (pdset->read_xxx==NULL) ) {
+               pxxx->pact=TRUE;
+               recGblRecordError(S_dev_missingSup,(void *)pxxx,"read_xxx");
+               return(S_dev_missingSup);
+       }
+
+       /* pact must not be set until after calling device support */
+       status=(*pdset->read_xxx)(pxxx);
+       /* check if device support set pact */
+       if ( !pact && pxxx->pact ) return(0);
+       pxxx->pact = TRUE;
+
+       recGblGetTimeStamp(pxxx);
+       /* check for alarms */
+       checkAlarms(pxxx);
+       /* check event list */
+       monitor(pxxx);
+       /* process the forward scan link record */
+        recGblFwdLink(pxxx);
+
+       pxxx->pact=FALSE;
+       return(status);
+}
+\f
+static long get_units(DBADDR *paddr, char *units)
+{
+    xxxRecord  *pxxx=(xxxRecord *)paddr->precord;
+
+    strncpy(units,pxxx->egu,DB_UNITS_SIZE);
+    return(0);
+}
+
+static long get_precision(DBADDR *paddr, long *precision)
+{
+    xxxRecord  *pxxx=(xxxRecord *)paddr->precord;
+
+    *precision = pxxx->prec;
+    if(paddr->pfield == (void *)&pxxx->val) return(0);
+    recGblGetPrec(paddr,precision);
+    return(0);
+}
+
+static long get_graphic_double(DBADDR *paddr,struct dbr_grDouble *pgd)
+{
+    xxxRecord  *pxxx=(xxxRecord *)paddr->precord;
+    int                fieldIndex = dbGetFieldIndex(paddr);
+
+    if(fieldIndex == xxxRecordVAL
+    || fieldIndex == xxxRecordHIHI
+    || fieldIndex == xxxRecordHIGH
+    || fieldIndex == xxxRecordLOW
+    || fieldIndex == xxxRecordLOLO
+    || fieldIndex == xxxRecordHOPR
+    || fieldIndex == xxxRecordLOPR) {
+        pgd->upper_disp_limit = pxxx->hopr;
+        pgd->lower_disp_limit = pxxx->lopr;
+    } else recGblGetGraphicDouble(paddr,pgd);
+    return(0);
+}
+
+static long get_control_double(DBADDR *paddr,struct dbr_ctrlDouble *pcd)
+{
+    xxxRecord  *pxxx=(xxxRecord *)paddr->precord;
+    int                fieldIndex = dbGetFieldIndex(paddr);
+
+    if(fieldIndex == xxxRecordVAL
+    || fieldIndex == xxxRecordHIHI
+    || fieldIndex == xxxRecordHIGH
+    || fieldIndex == xxxRecordLOW
+    || fieldIndex == xxxRecordLOLO) {
+       pcd->upper_ctrl_limit = pxxx->hopr;
+       pcd->lower_ctrl_limit = pxxx->lopr;
+    } else recGblGetControlDouble(paddr,pcd);
+    return(0);
+}
+
+static long get_alarm_double(DBADDR *paddr,struct dbr_alDouble *pad)
+{
+    xxxRecord  *pxxx=(xxxRecord *)paddr->precord;
+    int                fieldIndex = dbGetFieldIndex(paddr);
+
+    if(fieldIndex == xxxRecordVAL) {
+       pad->upper_alarm_limit = pxxx->hihi;
+       pad->upper_warning_limit = pxxx->high;
+       pad->lower_warning_limit = pxxx->low;
+       pad->lower_alarm_limit = pxxx->lolo;
+    } else recGblGetAlarmDouble(paddr,pad);
+    return(0);
+}
+\f
+static void checkAlarms(xxxRecord *pxxx)
+{
+       double          val;
+       float           hyst, lalm, hihi, high, low, lolo;
+       unsigned short  hhsv, llsv, hsv, lsv;
+
+       if(pxxx->udf == TRUE ){
+               recGblSetSevr(pxxx,UDF_ALARM,INVALID_ALARM);
+               return;
+       }
+       hihi = pxxx->hihi; lolo = pxxx->lolo; high = pxxx->high; low = pxxx->low;
+       hhsv = pxxx->hhsv; llsv = pxxx->llsv; hsv = pxxx->hsv; lsv = pxxx->lsv;
+       val = pxxx->val; hyst = pxxx->hyst; lalm = pxxx->lalm;
+
+       /* alarm condition hihi */
+       if (hhsv && (val >= hihi || ((lalm==hihi) && (val >= hihi-hyst)))){
+               if (recGblSetSevr(pxxx,HIHI_ALARM,pxxx->hhsv)) pxxx->lalm = hihi;
+               return;
+       }
+
+       /* alarm condition lolo */
+       if (llsv && (val <= lolo || ((lalm==lolo) && (val <= lolo+hyst)))){
+               if (recGblSetSevr(pxxx,LOLO_ALARM,pxxx->llsv)) pxxx->lalm = lolo;
+               return;
+       }
+
+       /* alarm condition high */
+       if (hsv && (val >= high || ((lalm==high) && (val >= high-hyst)))){
+               if (recGblSetSevr(pxxx,HIGH_ALARM,pxxx->hsv)) pxxx->lalm = high;
+               return;
+       }
+
+       /* alarm condition low */
+       if (lsv && (val <= low || ((lalm==low) && (val <= low+hyst)))){
+               if (recGblSetSevr(pxxx,LOW_ALARM,pxxx->lsv)) pxxx->lalm = low;
+               return;
+       }
+
+       /* we get here only if val is out of alarm by at least hyst */
+       pxxx->lalm = val;
+       return;
+}
+\f
+static void monitor(xxxRecord *pxxx)
+{
+       unsigned short  monitor_mask;
+       double          delta;
+
+        monitor_mask = recGblResetAlarms(pxxx);
+       /* check for value change */
+       delta = pxxx->mlst - pxxx->val;
+       if(delta<0.0) delta = -delta;
+       if (delta > pxxx->mdel) {
+               /* post events for value change */
+               monitor_mask |= DBE_VALUE;
+               /* update last value monitored */
+               pxxx->mlst = pxxx->val;
+       }
+
+       /* check for archive change */
+       delta = pxxx->alst - pxxx->val;
+       if(delta<0.0) delta = -delta;
+       if (delta > pxxx->adel) {
+               /* post events on value field for archive change */
+               monitor_mask |= DBE_LOG;
+               /* update last archive value monitored */
+               pxxx->alst = pxxx->val;
+       }
+
+       /* send out monitors connected to the value field */
+       if (monitor_mask){
+               db_post_events(pxxx,&pxxx->val,monitor_mask);
+       }
+       return;
+}
diff --git a/ebctrl/ioc/ebctrlApp/src/xxxRecord.dbd b/ebctrl/ioc/ebctrlApp/src/xxxRecord.dbd
new file mode 100644 (file)
index 0000000..4a71c54
--- /dev/null
@@ -0,0 +1,117 @@
+recordtype(xxx) {
+       include "dbCommon.dbd" 
+       field(VAL,DBF_DOUBLE) {
+               prompt("Current EGU Value")
+               asl(ASL0)
+               pp(TRUE)
+       }
+       field(INP,DBF_INLINK) {
+               prompt("Input Specification")
+               promptgroup(GUI_INPUTS)
+               special(SPC_NOMOD)
+               interest(1)
+       }
+       field(PREC,DBF_SHORT) {
+               prompt("Display Precision")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(EGU,DBF_STRING) {
+               prompt("Engineering Units")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+               size(16)
+       }
+       field(HOPR,DBF_FLOAT) {
+               prompt("High Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LOPR,DBF_FLOAT) {
+               prompt("Low Operating Range")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(HIHI,DBF_FLOAT) {
+               prompt("Hihi Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOLO,DBF_FLOAT) {
+               prompt("Lolo Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HIGH,DBF_FLOAT) {
+               prompt("High Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(LOW,DBF_FLOAT) {
+               prompt("Low Alarm Limit")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+       }
+       field(HHSV,DBF_MENU) {
+               prompt("Hihi Severity")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+               menu(menuAlarmSevr)
+       }
+       field(LLSV,DBF_MENU) {
+               prompt("Lolo Severity")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+               menu(menuAlarmSevr)
+       }
+       field(HSV,DBF_MENU) {
+               prompt("High Severity")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+               menu(menuAlarmSevr)
+       }
+       field(LSV,DBF_MENU) {
+               prompt("Low Severity")
+               promptgroup(GUI_ALARMS)
+               pp(TRUE)
+               interest(1)
+               menu(menuAlarmSevr)
+       }
+       field(HYST,DBF_DOUBLE) {
+               prompt("Alarm Deadband")
+               promptgroup(GUI_ALARMS)
+               interest(1)
+       }
+       field(ADEL,DBF_DOUBLE) {
+               prompt("Archive Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(MDEL,DBF_DOUBLE) {
+               prompt("Monitor Deadband")
+               promptgroup(GUI_DISPLAY)
+               interest(1)
+       }
+       field(LALM,DBF_DOUBLE) {
+               prompt("Last Value Alarmed")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(ALST,DBF_DOUBLE) {
+               prompt("Last Value Archived")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+       field(MLST,DBF_DOUBLE) {
+               prompt("Last Val Monitored")
+               special(SPC_NOMOD)
+               interest(3)
+       }
+}
diff --git a/ebctrl/ioc/ebctrlApp/src/xxxSupport.dbd b/ebctrl/ioc/ebctrlApp/src/xxxSupport.dbd
new file mode 100644 (file)
index 0000000..8094bdd
--- /dev/null
@@ -0,0 +1,2 @@
+include "xxxRecord.dbd"
+device(xxx,CONSTANT,devXxxSoft,"SoftChannel")
diff --git a/ebctrl/ioc/include/genSubRecord.h b/ebctrl/ioc/include/genSubRecord.h
new file mode 100644 (file)
index 0000000..857cb7c
--- /dev/null
@@ -0,0 +1,1275 @@
+#include "ellLib.h"
+#include "epicsMutex.h"
+#include "link.h"
+#include "epicsTime.h"
+#include "epicsTypes.h"
+
+#ifndef INCgenSubLFLGH
+#define INCgenSubLFLGH
+typedef enum {
+       genSubLFLG_IGNORE,
+       genSubLFLG_READ
+}genSubLFLG;
+#endif /*INCgenSubLFLGH*/
+
+#ifndef INCgenSubEFLGH
+#define INCgenSubEFLGH
+typedef enum {
+       genSubEFLG_NEVER,
+       genSubEFLG_ON_CHANGE,
+       genSubEFLG_ALWAYS
+}genSubEFLG;
+#endif /*INCgenSubEFLGH*/
+#ifndef INCgenSubH
+#define INCgenSubH
+typedef struct genSubRecord {
+       char            name[61]; /*Record Name*/
+       char            desc[29]; /*Descriptor*/
+       char            asg[29]; /*Access Security Group*/
+       epicsEnum16     scan;   /*Scan Mechanism*/
+       epicsEnum16     pini;   /*Process at iocInit*/
+       short           phas;   /*Scan Phase*/
+       short           evnt;   /*Event Number*/
+       short           tse;    /*Time Stamp Event*/
+       DBLINK          tsel;   /*Time Stamp Link*/
+       epicsEnum16     dtyp;   /*Device Type*/
+       short           disv;   /*Disable Value*/
+       short           disa;   /*Disable*/
+       DBLINK          sdis;   /*Scanning Disable*/
+       epicsMutexId    mlok;   /*Monitor lock*/
+       ELLLIST         mlis;   /*Monitor List*/
+       unsigned char   disp;   /*Disable putField*/
+       unsigned char   proc;   /*Force Processing*/
+       epicsEnum16     stat;   /*Alarm Status*/
+       epicsEnum16     sevr;   /*Alarm Severity*/
+       epicsEnum16     nsta;   /*New Alarm Status*/
+       epicsEnum16     nsev;   /*New Alarm Severity*/
+       epicsEnum16     acks;   /*Alarm Ack Severity*/
+       epicsEnum16     ackt;   /*Alarm Ack Transient*/
+       epicsEnum16     diss;   /*Disable Alarm Sevrty*/
+       unsigned char   lcnt;   /*Lock Count*/
+       unsigned char   pact;   /*Record active*/
+       unsigned char   putf;   /*dbPutField process*/
+       unsigned char   rpro;   /*Reprocess */
+       void            *asp;   /*Access Security Pvt*/
+       struct putNotify *ppn;  /*addr of PUTNOTIFY*/
+       struct putNotifyRecord *ppnr;   /*pputNotifyRecord*/
+       struct scan_element *spvt;      /*Scan Private*/
+       struct rset     *rset;  /*Address of RSET*/
+       struct dset     *dset;  /*DSET address*/
+       void            *dpvt;  /*Device Private*/
+       struct dbRecordType *rdes;      /*Address of dbRecordType*/
+       struct lockRecord *lset;        /*Lock Set*/
+       epicsEnum16     prio;   /*Scheduling Priority*/
+       unsigned char   tpro;   /*Trace Processing*/
+       char bkpt;      /*Break Point*/
+       unsigned char   udf;    /*Undefined*/
+       epicsTimeStamp  time;   /*Time*/
+       DBLINK          flnk;   /*Forward Process Link*/
+       double          vers;   /*Version Number*/
+       epicsInt32              val;    /*Subr. return value*/
+       epicsInt32              oval;   /*Old return value*/
+       epicsInt32              sadr;   /*Subroutine Address*/
+       epicsInt32              osad;   /*Old Subr. Address*/
+       epicsEnum16     lflg;   /*Link Flag*/
+       epicsEnum16     eflg;   /*Event Flag*/
+       DBLINK          subl;   /*Subroutine Input Link*/
+       char            inam[40]; /*Init Routine Name*/
+       char            snam[40]; /*Process Subr. Name*/
+       char            onam[40]; /*Old Subroutine Name*/
+       epicsEnum16     brsv;   /*Bad Return Severity*/
+       short           prec;   /*Display Precision*/
+       DBLINK          inpa;   /*Input Link A*/
+       DBLINK          inpb;   /*Input Link B*/
+       DBLINK          inpc;   /*Input Link C*/
+       DBLINK          inpd;   /*Input Link D*/
+       DBLINK          inpe;   /*Input Link E*/
+       DBLINK          inpf;   /*Input Link F*/
+       DBLINK          inpg;   /*Input Link G*/
+       DBLINK          inph;   /*Input Link H*/
+       DBLINK          inpi;   /*Input Link I*/
+       DBLINK          inpj;   /*Input Link J*/
+       DBLINK          inpk;   /*Input Link K*/
+       DBLINK          inpl;   /*Input Link L*/
+       DBLINK          inpm;   /*Input Link M*/
+       DBLINK          inpn;   /*Input Link N*/
+       DBLINK          inpo;   /*Input Link O*/
+       DBLINK          inpp;   /*Input Link P*/
+       DBLINK          inpq;   /*Input Link Q*/
+       DBLINK          inpr;   /*Input Link R*/
+       DBLINK          inps;   /*Input Link S*/
+       DBLINK          inpt;   /*Input Link T*/
+       DBLINK          inpu;   /*Input Link U*/
+       char            ufa[40]; /*Input Structure A*/
+       char            ufb[40]; /*Input Structure B*/
+       char            ufc[40]; /*Input Structure C*/
+       char            ufd[40]; /*Input Structure D*/
+       char            ufe[40]; /*Input Structure E*/
+       char            uff[40]; /*Input Structure F*/
+       char            ufg[40]; /*Input Structure G*/
+       char            ufh[40]; /*Input Structure H*/
+       char            ufi[40]; /*Input Structure I*/
+       char            ufj[40]; /*Input Structure J*/
+       char            ufk[40]; /*Input Structure K*/
+       char            ufl[40]; /*Input Structure L*/
+       char            ufm[40]; /*Input Structure M*/
+       char            ufn[40]; /*Input Structure N*/
+       char            ufo[40]; /*Input Structure O*/
+       char            ufp[40]; /*Input Structure P*/
+       char            ufq[40]; /*Input Structure Q*/
+       char            ufr[40]; /*Input Structure R*/
+       char            ufs[40]; /*Input Structure S*/
+       char            uft[40]; /*Input Structure T*/
+       char            ufu[40]; /*Input Structure U*/
+       void *a;        /*Value of Input A*/
+       void *b;        /*Value of Input B*/
+       void *c;        /*Value of Input C*/
+       void *d;        /*Value of Input D*/
+       void *e;        /*Value of Input E*/
+       void *f;        /*Value of Input F*/
+       void *g;        /*Value of Input G*/
+       void *h;        /*Value of Input H*/
+       void *i;        /*Value of Input I*/
+       void *j;        /*Value of Input J*/
+       void *k;        /*Value of Input K*/
+       void *l;        /*Value of Input L*/
+       void *m;        /*Value of Input M*/
+       void *n;        /*Value of Input N*/
+       void *o;        /*Value of Input O*/
+       void *p;        /*Value of Input P*/
+       void *q;        /*Value of Input Q*/
+       void *r;        /*Value of Input R*/
+       void *s;        /*Value of Input S*/
+       void *t;        /*Value of Input T*/
+       void *u;        /*Value of Input U*/
+       epicsEnum16     fta;    /*Type of A*/
+       epicsEnum16     ftb;    /*Type of B*/
+       epicsEnum16     ftc;    /*Type of C*/
+       epicsEnum16     ftd;    /*Type of D*/
+       epicsEnum16     fte;    /*Type of E*/
+       epicsEnum16     ftf;    /*Type of F*/
+       epicsEnum16     ftg;    /*Type of G*/
+       epicsEnum16     fth;    /*Type of H*/
+       epicsEnum16     fti;    /*Type of I*/
+       epicsEnum16     ftj;    /*Type of J*/
+       epicsEnum16     ftk;    /*Type of K*/
+       epicsEnum16     ftl;    /*Type of L*/
+       epicsEnum16     ftm;    /*Type of M*/
+       epicsEnum16     ftn;    /*Type of N*/
+       epicsEnum16     fto;    /*Type of O*/
+       epicsEnum16     ftp;    /*Type of P*/
+       epicsEnum16     ftq;    /*Type of Q*/
+       epicsEnum16     ftr;    /*Type of R*/
+       epicsEnum16     fts;    /*Type of S*/
+       epicsEnum16     ftt;    /*Type of T*/
+       epicsEnum16     ftu;    /*Type of U*/
+       unsigned long   noa;    /*No. in A*/
+       unsigned long   nob;    /*No. in B*/
+       unsigned long   noc;    /*No. in C*/
+       unsigned long   nod;    /*No. in D*/
+       unsigned long   noe;    /*No. in E*/
+       unsigned long   nof;    /*No. in F*/
+       unsigned long   nog;    /*No. in G*/
+       unsigned long   noh;    /*No. in H*/
+       unsigned long   noi;    /*No. in I*/
+       unsigned long   noj;    /*No. in J*/
+       unsigned long   nok;    /*No. in K*/
+       unsigned long   nol;    /*No. in L*/
+       unsigned long   nom;    /*No. in M*/
+       unsigned long   non;    /*No. in N*/
+       unsigned long   noo;    /*No. in O*/
+       unsigned long   nop;    /*No. in P*/
+       unsigned long   noq;    /*No. in Q*/
+       unsigned long   nor;    /*No. in R*/
+       unsigned long   nos;    /*No. in S*/
+       unsigned long   not;    /*No. in T*/
+       unsigned long   nou;    /*No. in U*/
+       DBLINK          outa;   /*Output Link A*/
+       DBLINK          outb;   /*Output Link B*/
+       DBLINK          outc;   /*Output Link C*/
+       DBLINK          outd;   /*Output Link D*/
+       DBLINK          oute;   /*Output Link E*/
+       DBLINK          outf;   /*Output Link F*/
+       DBLINK          outg;   /*Output Link G*/
+       DBLINK          outh;   /*Output Link H*/
+       DBLINK          outi;   /*Output Link I*/
+       DBLINK          outj;   /*Output Link J*/
+       DBLINK          outk;   /*Output Link K*/
+       DBLINK          outl;   /*Output Link L*/
+       DBLINK          outm;   /*Output Link M*/
+       DBLINK          outn;   /*Output Link N*/
+       DBLINK          outo;   /*Output Link O*/
+       DBLINK          outp;   /*Output Link P*/
+       DBLINK          outq;   /*Output Link Q*/
+       DBLINK          outr;   /*Output Link R*/
+       DBLINK          outs;   /*Output Link S*/
+       DBLINK          outt;   /*Output Link T*/
+       DBLINK          outu;   /*Output Link U*/
+       char            ufva[40]; /*Output Structure A*/
+       char            ufvb[40]; /*Output Structure B*/
+       char            ufvc[40]; /*Output Structure C*/
+       char            ufvd[40]; /*Output Structure D*/
+       char            ufve[40]; /*Output Structure E*/
+       char            ufvf[40]; /*Output Structure F*/
+       char            ufvg[40]; /*Output Structure G*/
+       char            ufvh[40]; /*Output Structure H*/
+       char            ufvi[40]; /*Output Structure I*/
+       char            ufvj[40]; /*Output Structure J*/
+       char            ufvk[40]; /*Output Structure K*/
+       char            ufvl[40]; /*Output Structure L*/
+       char            ufvm[40]; /*Output Structure M*/
+       char            ufvn[40]; /*Output Structure N*/
+       char            ufvo[40]; /*Output Structure O*/
+       char            ufvp[40]; /*Output Structure P*/
+       char            ufvq[40]; /*Output Structure Q*/
+       char            ufvr[40]; /*Output Structure R*/
+       char            ufvs[40]; /*Output Structure S*/
+       char            ufvt[40]; /*Output Structure T*/
+       char            ufvu[40]; /*Output Structure U*/
+       void *vala;     /*Value of Output A*/
+       void *valb;     /*Value of Output B*/
+       void *valc;     /*Value of Output C*/
+       void *vald;     /*Value of Output D*/
+       void *vale;     /*Value of Output E*/
+       void *valf;     /*Value of Output F*/
+       void *valg;     /*Value of Output G*/
+       void *valh;     /*Value of Output H*/
+       void *vali;     /*Value of Output I*/
+       void *valj;     /*Value of Output J*/
+       void *valk;     /*Value of Output K*/
+       void *vall;     /*Value of Output L*/
+       void *valm;     /*Value of Output M*/
+       void *valn;     /*Value of Output N*/
+       void *valo;     /*Value of Output O*/
+       void *valp;     /*Value of Output P*/
+       void *valq;     /*Value of Output Q*/
+       void *valr;     /*Value of Output R*/
+       void *vals;     /*Value of Output S*/
+       void *valt;     /*Value of Output T*/
+       void *valu;     /*Value of Output U*/
+       void *ovla;     /*Old Output A*/
+       void *ovlb;     /*Old Output B*/
+       void *ovlc;     /*Old Output C*/
+       void *ovld;     /*Old Output D*/
+       void *ovle;     /*Old Output E*/
+       void *ovlf;     /*Old Output F*/
+       void *ovlg;     /*Old Output G*/
+       void *ovlh;     /*Old Output H*/
+       void *ovli;     /*Old Output I*/
+       void *ovlj;     /*Old Output J*/
+       void *ovlk;     /*Old Output K*/
+       void *ovll;     /*Old Output L*/
+       void *ovlm;     /*Old Output M*/
+       void *ovln;     /*Old Output N*/
+       void *ovlo;     /*Old Output O*/
+       void *ovlp;     /*Old Output P*/
+       void *ovlq;     /*Old Output Q*/
+       void *ovlr;     /*Old Output R*/
+       void *ovls;     /*Old Output S*/
+       void *ovlt;     /*Old Output T*/
+       void *ovlu;     /*Old Output U*/
+       epicsEnum16     ftva;   /*Type of VALA*/
+       epicsEnum16     ftvb;   /*Type of VALB*/
+       epicsEnum16     ftvc;   /*Type of VALC*/
+       epicsEnum16     ftvd;   /*Type of VALD*/
+       epicsEnum16     ftve;   /*Type of VALE*/
+       epicsEnum16     ftvf;   /*Type of VALF*/
+       epicsEnum16     ftvg;   /*Type of VALG*/
+       epicsEnum16     ftvh;   /*Type of VALH*/
+       epicsEnum16     ftvi;   /*Type of VALI*/
+       epicsEnum16     ftvj;   /*Type of VALJ*/
+       epicsEnum16     ftvk;   /*Type of VALK*/
+       epicsEnum16     ftvl;   /*Type of VALL*/
+       epicsEnum16     ftvm;   /*Type of VALM*/
+       epicsEnum16     ftvn;   /*Type of VALN*/
+       epicsEnum16     ftvo;   /*Type of VALO*/
+       epicsEnum16     ftvp;   /*Type of VALP*/
+       epicsEnum16     ftvq;   /*Type of VALQ*/
+       epicsEnum16     ftvr;   /*Type of VALR*/
+       epicsEnum16     ftvs;   /*Type of VALS*/
+       epicsEnum16     ftvt;   /*Type of VALT*/
+       epicsEnum16     ftvu;   /*Type of VALU*/
+       unsigned long   nova;   /*No. in VALA*/
+       unsigned long   novb;   /*No. in VALB*/
+       unsigned long   novc;   /*No. in VALC*/
+       unsigned long   novd;   /*No. in VALD*/
+       unsigned long   nove;   /*No. in VALE*/
+       unsigned long   novf;   /*No. in VALF*/
+       unsigned long   novg;   /*No. in VALG*/
+       unsigned long   novh;   /*No. in VAlH*/
+       unsigned long   novi;   /*No. in VALI*/
+       unsigned long   novj;   /*No. in VALJ*/
+       unsigned long   novk;   /*No. in VALK*/
+       unsigned long   novl;   /*No. in VALL*/
+       unsigned long   novm;   /*No. in VALM*/
+       unsigned long   novn;   /*No. in VALN*/
+       unsigned long   novo;   /*No. in VALO*/
+       unsigned long   novp;   /*No. in VALP*/
+       unsigned long   novq;   /*No. in VALQ*/
+       unsigned long   novr;   /*No. in VALR*/
+       unsigned long   novs;   /*No. in VALS*/
+       unsigned long   novt;   /*No. in VALT*/
+       unsigned long   novu;   /*No. in VALU*/
+       unsigned long   tova;   /*Total bytes for VALA*/
+       unsigned long   tovb;   /*Total bytes for VALB*/
+       unsigned long   tovc;   /*Total bytes for VALC*/
+       unsigned long   tovd;   /*Total bytes for VALD*/
+       unsigned long   tove;   /*Total bytes for VALE*/
+       unsigned long   tovf;   /*Total bytes for VALF*/
+       unsigned long   tovg;   /*Total bytes for VALG*/
+       unsigned long   tovh;   /*Total bytes for VAlH*/
+       unsigned long   tovi;   /*Total bytes for VALI*/
+       unsigned long   tovj;   /*Total bytes for VALJ*/
+       unsigned long   tovk;   /*Total bytes for VALK*/
+       unsigned long   tovl;   /*Total bytes for VALL*/
+       unsigned long   tovm;   /*Total bytes for VALM*/
+       unsigned long   tovn;   /*Total bytes for VALN*/
+       unsigned long   tovo;   /*Total bytes for VALO*/
+       unsigned long   tovp;   /*Total bytes for VALP*/
+       unsigned long   tovq;   /*Total bytes for VALQ*/
+       unsigned long   tovr;   /*Total bytes for VALR*/
+       unsigned long   tovs;   /*Total bytes for VALS*/
+       unsigned long   tovt;   /*Total bytes for VALT*/
+       unsigned long   tovu;   /*Total bytes for VALU*/
+} genSubRecord;
+#define genSubRecordNAME       0
+#define genSubRecordDESC       1
+#define genSubRecordASG        2
+#define genSubRecordSCAN       3
+#define genSubRecordPINI       4
+#define genSubRecordPHAS       5
+#define genSubRecordEVNT       6
+#define genSubRecordTSE        7
+#define genSubRecordTSEL       8
+#define genSubRecordDTYP       9
+#define genSubRecordDISV       10
+#define genSubRecordDISA       11
+#define genSubRecordSDIS       12
+#define genSubRecordMLOK       13
+#define genSubRecordMLIS       14
+#define genSubRecordDISP       15
+#define genSubRecordPROC       16
+#define genSubRecordSTAT       17
+#define genSubRecordSEVR       18
+#define genSubRecordNSTA       19
+#define genSubRecordNSEV       20
+#define genSubRecordACKS       21
+#define genSubRecordACKT       22
+#define genSubRecordDISS       23
+#define genSubRecordLCNT       24
+#define genSubRecordPACT       25
+#define genSubRecordPUTF       26
+#define genSubRecordRPRO       27
+#define genSubRecordASP        28
+#define genSubRecordPPN        29
+#define genSubRecordPPNR       30
+#define genSubRecordSPVT       31
+#define genSubRecordRSET       32
+#define genSubRecordDSET       33
+#define genSubRecordDPVT       34
+#define genSubRecordRDES       35
+#define genSubRecordLSET       36
+#define genSubRecordPRIO       37
+#define genSubRecordTPRO       38
+#define genSubRecordBKPT       39
+#define genSubRecordUDF        40
+#define genSubRecordTIME       41
+#define genSubRecordFLNK       42
+#define genSubRecordVERS       43
+#define genSubRecordVAL        44
+#define genSubRecordOVAL       45
+#define genSubRecordSADR       46
+#define genSubRecordOSAD       47
+#define genSubRecordLFLG       48
+#define genSubRecordEFLG       49
+#define genSubRecordSUBL       50
+#define genSubRecordINAM       51
+#define genSubRecordSNAM       52
+#define genSubRecordONAM       53
+#define genSubRecordBRSV       54
+#define genSubRecordPREC       55
+#define genSubRecordINPA       56
+#define genSubRecordINPB       57
+#define genSubRecordINPC       58
+#define genSubRecordINPD       59
+#define genSubRecordINPE       60
+#define genSubRecordINPF       61
+#define genSubRecordINPG       62
+#define genSubRecordINPH       63
+#define genSubRecordINPI       64
+#define genSubRecordINPJ       65
+#define genSubRecordINPK       66
+#define genSubRecordINPL       67
+#define genSubRecordINPM       68
+#define genSubRecordINPN       69
+#define genSubRecordINPO       70
+#define genSubRecordINPP       71
+#define genSubRecordINPQ       72
+#define genSubRecordINPR       73
+#define genSubRecordINPS       74
+#define genSubRecordINPT       75
+#define genSubRecordINPU       76
+#define genSubRecordUFA        77
+#define genSubRecordUFB        78
+#define genSubRecordUFC        79
+#define genSubRecordUFD        80
+#define genSubRecordUFE        81
+#define genSubRecordUFF        82
+#define genSubRecordUFG        83
+#define genSubRecordUFH        84
+#define genSubRecordUFI        85
+#define genSubRecordUFJ        86
+#define genSubRecordUFK        87
+#define genSubRecordUFL        88
+#define genSubRecordUFM        89
+#define genSubRecordUFN        90
+#define genSubRecordUFO        91
+#define genSubRecordUFP        92
+#define genSubRecordUFQ        93
+#define genSubRecordUFR        94
+#define genSubRecordUFS        95
+#define genSubRecordUFT        96
+#define genSubRecordUFU        97
+#define genSubRecordA  98
+#define genSubRecordB  99
+#define genSubRecordC  100
+#define genSubRecordD  101
+#define genSubRecordE  102
+#define genSubRecordF  103
+#define genSubRecordG  104
+#define genSubRecordH  105
+#define genSubRecordI  106
+#define genSubRecordJ  107
+#define genSubRecordK  108
+#define genSubRecordL  109
+#define genSubRecordM  110
+#define genSubRecordN  111
+#define genSubRecordO  112
+#define genSubRecordP  113
+#define genSubRecordQ  114
+#define genSubRecordR  115
+#define genSubRecordS  116
+#define genSubRecordT  117
+#define genSubRecordU  118
+#define genSubRecordFTA        119
+#define genSubRecordFTB        120
+#define genSubRecordFTC        121
+#define genSubRecordFTD        122
+#define genSubRecordFTE        123
+#define genSubRecordFTF        124
+#define genSubRecordFTG        125
+#define genSubRecordFTH        126
+#define genSubRecordFTI        127
+#define genSubRecordFTJ        128
+#define genSubRecordFTK        129
+#define genSubRecordFTL        130
+#define genSubRecordFTM        131
+#define genSubRecordFTN        132
+#define genSubRecordFTO        133
+#define genSubRecordFTP        134
+#define genSubRecordFTQ        135
+#define genSubRecordFTR        136
+#define genSubRecordFTS        137
+#define genSubRecordFTT        138
+#define genSubRecordFTU        139
+#define genSubRecordNOA        140
+#define genSubRecordNOB        141
+#define genSubRecordNOC        142
+#define genSubRecordNOD        143
+#define genSubRecordNOE        144
+#define genSubRecordNOF        145
+#define genSubRecordNOG        146
+#define genSubRecordNOH        147
+#define genSubRecordNOI        148
+#define genSubRecordNOJ        149
+#define genSubRecordNOK        150
+#define genSubRecordNOL        151
+#define genSubRecordNOM        152
+#define genSubRecordNON        153
+#define genSubRecordNOO        154
+#define genSubRecordNOP        155
+#define genSubRecordNOQ        156
+#define genSubRecordNOR        157
+#define genSubRecordNOS        158
+#define genSubRecordNOT        159
+#define genSubRecordNOU        160
+#define genSubRecordOUTA       161
+#define genSubRecordOUTB       162
+#define genSubRecordOUTC       163
+#define genSubRecordOUTD       164
+#define genSubRecordOUTE       165
+#define genSubRecordOUTF       166
+#define genSubRecordOUTG       167
+#define genSubRecordOUTH       168
+#define genSubRecordOUTI       169
+#define genSubRecordOUTJ       170
+#define genSubRecordOUTK       171
+#define genSubRecordOUTL       172
+#define genSubRecordOUTM       173
+#define genSubRecordOUTN       174
+#define genSubRecordOUTO       175
+#define genSubRecordOUTP       176
+#define genSubRecordOUTQ       177
+#define genSubRecordOUTR       178
+#define genSubRecordOUTS       179
+#define genSubRecordOUTT       180
+#define genSubRecordOUTU       181
+#define genSubRecordUFVA       182
+#define genSubRecordUFVB       183
+#define genSubRecordUFVC       184
+#define genSubRecordUFVD       185
+#define genSubRecordUFVE       186
+#define genSubRecordUFVF       187
+#define genSubRecordUFVG       188
+#define genSubRecordUFVH       189
+#define genSubRecordUFVI       190
+#define genSubRecordUFVJ       191
+#define genSubRecordUFVK       192
+#define genSubRecordUFVL       193
+#define genSubRecordUFVM       194
+#define genSubRecordUFVN       195
+#define genSubRecordUFVO       196
+#define genSubRecordUFVP       197
+#define genSubRecordUFVQ       198
+#define genSubRecordUFVR       199
+#define genSubRecordUFVS       200
+#define genSubRecordUFVT       201
+#define genSubRecordUFVU       202
+#define genSubRecordVALA       203
+#define genSubRecordVALB       204
+#define genSubRecordVALC       205
+#define genSubRecordVALD       206
+#define genSubRecordVALE       207
+#define genSubRecordVALF       208
+#define genSubRecordVALG       209
+#define genSubRecordVALH       210
+#define genSubRecordVALI       211
+#define genSubRecordVALJ       212
+#define genSubRecordVALK       213
+#define genSubRecordVALL       214
+#define genSubRecordVALM       215
+#define genSubRecordVALN       216
+#define genSubRecordVALO       217
+#define genSubRecordVALP       218
+#define genSubRecordVALQ       219
+#define genSubRecordVALR       220
+#define genSubRecordVALS       221
+#define genSubRecordVALT       222
+#define genSubRecordVALU       223
+#define genSubRecordOVLA       224
+#define genSubRecordOVLB       225
+#define genSubRecordOVLC       226
+#define genSubRecordOVLD       227
+#define genSubRecordOVLE       228
+#define genSubRecordOVLF       229
+#define genSubRecordOVLG       230
+#define genSubRecordOVLH       231
+#define genSubRecordOVLI       232
+#define genSubRecordOVLJ       233
+#define genSubRecordOVLK       234
+#define genSubRecordOVLL       235
+#define genSubRecordOVLM       236
+#define genSubRecordOVLN       237
+#define genSubRecordOVLO       238
+#define genSubRecordOVLP       239
+#define genSubRecordOVLQ       240
+#define genSubRecordOVLR       241
+#define genSubRecordOVLS       242
+#define genSubRecordOVLT       243
+#define genSubRecordOVLU       244
+#define genSubRecordFTVA       245
+#define genSubRecordFTVB       246
+#define genSubRecordFTVC       247
+#define genSubRecordFTVD       248
+#define genSubRecordFTVE       249
+#define genSubRecordFTVF       250
+#define genSubRecordFTVG       251
+#define genSubRecordFTVH       252
+#define genSubRecordFTVI       253
+#define genSubRecordFTVJ       254
+#define genSubRecordFTVK       255
+#define genSubRecordFTVL       256
+#define genSubRecordFTVM       257
+#define genSubRecordFTVN       258
+#define genSubRecordFTVO       259
+#define genSubRecordFTVP       260
+#define genSubRecordFTVQ       261
+#define genSubRecordFTVR       262
+#define genSubRecordFTVS       263
+#define genSubRecordFTVT       264
+#define genSubRecordFTVU       265
+#define genSubRecordNOVA       266
+#define genSubRecordNOVB       267
+#define genSubRecordNOVC       268
+#define genSubRecordNOVD       269
+#define genSubRecordNOVE       270
+#define genSubRecordNOVF       271
+#define genSubRecordNOVG       272
+#define genSubRecordNOVH       273
+#define genSubRecordNOVI       274
+#define genSubRecordNOVJ       275
+#define genSubRecordNOVK       276
+#define genSubRecordNOVL       277
+#define genSubRecordNOVM       278
+#define genSubRecordNOVN       279
+#define genSubRecordNOVO       280
+#define genSubRecordNOVP       281
+#define genSubRecordNOVQ       282
+#define genSubRecordNOVR       283
+#define genSubRecordNOVS       284
+#define genSubRecordNOVT       285
+#define genSubRecordNOVU       286
+#define genSubRecordTOVA       287
+#define genSubRecordTOVB       288
+#define genSubRecordTOVC       289
+#define genSubRecordTOVD       290
+#define genSubRecordTOVE       291
+#define genSubRecordTOVF       292
+#define genSubRecordTOVG       293
+#define genSubRecordTOVH       294
+#define genSubRecordTOVI       295
+#define genSubRecordTOVJ       296
+#define genSubRecordTOVK       297
+#define genSubRecordTOVL       298
+#define genSubRecordTOVM       299
+#define genSubRecordTOVN       300
+#define genSubRecordTOVO       301
+#define genSubRecordTOVP       302
+#define genSubRecordTOVQ       303
+#define genSubRecordTOVR       304
+#define genSubRecordTOVS       305
+#define genSubRecordTOVT       306
+#define genSubRecordTOVU       307
+#endif /*INCgenSubH*/
+#ifdef GEN_SIZE_OFFSET
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <epicsExport.h>
+static int genSubRecordSizeOffset(dbRecordType *pdbRecordType)
+{
+    genSubRecord *prec = 0;
+  pdbRecordType->papFldDes[0]->size=sizeof(prec->name);
+  pdbRecordType->papFldDes[0]->offset=(short)((char *)&prec->name - (char *)prec);
+  pdbRecordType->papFldDes[1]->size=sizeof(prec->desc);
+  pdbRecordType->papFldDes[1]->offset=(short)((char *)&prec->desc - (char *)prec);
+  pdbRecordType->papFldDes[2]->size=sizeof(prec->asg);
+  pdbRecordType->papFldDes[2]->offset=(short)((char *)&prec->asg - (char *)prec);
+  pdbRecordType->papFldDes[3]->size=sizeof(prec->scan);
+  pdbRecordType->papFldDes[3]->offset=(short)((char *)&prec->scan - (char *)prec);
+  pdbRecordType->papFldDes[4]->size=sizeof(prec->pini);
+  pdbRecordType->papFldDes[4]->offset=(short)((char *)&prec->pini - (char *)prec);
+  pdbRecordType->papFldDes[5]->size=sizeof(prec->phas);
+  pdbRecordType->papFldDes[5]->offset=(short)((char *)&prec->phas - (char *)prec);
+  pdbRecordType->papFldDes[6]->size=sizeof(prec->evnt);
+  pdbRecordType->papFldDes[6]->offset=(short)((char *)&prec->evnt - (char *)prec);
+  pdbRecordType->papFldDes[7]->size=sizeof(prec->tse);
+  pdbRecordType->papFldDes[7]->offset=(short)((char *)&prec->tse - (char *)prec);
+  pdbRecordType->papFldDes[8]->size=sizeof(prec->tsel);
+  pdbRecordType->papFldDes[8]->offset=(short)((char *)&prec->tsel - (char *)prec);
+  pdbRecordType->papFldDes[9]->size=sizeof(prec->dtyp);
+  pdbRecordType->papFldDes[9]->offset=(short)((char *)&prec->dtyp - (char *)prec);
+  pdbRecordType->papFldDes[10]->size=sizeof(prec->disv);
+  pdbRecordType->papFldDes[10]->offset=(short)((char *)&prec->disv - (char *)prec);
+  pdbRecordType->papFldDes[11]->size=sizeof(prec->disa);
+  pdbRecordType->papFldDes[11]->offset=(short)((char *)&prec->disa - (char *)prec);
+  pdbRecordType->papFldDes[12]->size=sizeof(prec->sdis);
+  pdbRecordType->papFldDes[12]->offset=(short)((char *)&prec->sdis - (char *)prec);
+  pdbRecordType->papFldDes[13]->size=sizeof(prec->mlok);
+  pdbRecordType->papFldDes[13]->offset=(short)((char *)&prec->mlok - (char *)prec);
+  pdbRecordType->papFldDes[14]->size=sizeof(prec->mlis);
+  pdbRecordType->papFldDes[14]->offset=(short)((char *)&prec->mlis - (char *)prec);
+  pdbRecordType->papFldDes[15]->size=sizeof(prec->disp);
+  pdbRecordType->papFldDes[15]->offset=(short)((char *)&prec->disp - (char *)prec);
+  pdbRecordType->papFldDes[16]->size=sizeof(prec->proc);
+  pdbRecordType->papFldDes[16]->offset=(short)((char *)&prec->proc - (char *)prec);
+  pdbRecordType->papFldDes[17]->size=sizeof(prec->stat);
+  pdbRecordType->papFldDes[17]->offset=(short)((char *)&prec->stat - (char *)prec);
+  pdbRecordType->papFldDes[18]->size=sizeof(prec->sevr);
+  pdbRecordType->papFldDes[18]->offset=(short)((char *)&prec->sevr - (char *)prec);
+  pdbRecordType->papFldDes[19]->size=sizeof(prec->nsta);
+  pdbRecordType->papFldDes[19]->offset=(short)((char *)&prec->nsta - (char *)prec);
+  pdbRecordType->papFldDes[20]->size=sizeof(prec->nsev);
+  pdbRecordType->papFldDes[20]->offset=(short)((char *)&prec->nsev - (char *)prec);
+  pdbRecordType->papFldDes[21]->size=sizeof(prec->acks);
+  pdbRecordType->papFldDes[21]->offset=(short)((char *)&prec->acks - (char *)prec);
+  pdbRecordType->papFldDes[22]->size=sizeof(prec->ackt);
+  pdbRecordType->papFldDes[22]->offset=(short)((char *)&prec->ackt - (char *)prec);
+  pdbRecordType->papFldDes[23]->size=sizeof(prec->diss);
+  pdbRecordType->papFldDes[23]->offset=(short)((char *)&prec->diss - (char *)prec);
+  pdbRecordType->papFldDes[24]->size=sizeof(prec->lcnt);
+  pdbRecordType->papFldDes[24]->offset=(short)((char *)&prec->lcnt - (char *)prec);
+  pdbRecordType->papFldDes[25]->size=sizeof(prec->pact);
+  pdbRecordType->papFldDes[25]->offset=(short)((char *)&prec->pact - (char *)prec);
+  pdbRecordType->papFldDes[26]->size=sizeof(prec->putf);
+  pdbRecordType->papFldDes[26]->offset=(short)((char *)&prec->putf - (char *)prec);
+  pdbRecordType->papFldDes[27]->size=sizeof(prec->rpro);
+  pdbRecordType->papFldDes[27]->offset=(short)((char *)&prec->rpro - (char *)prec);
+  pdbRecordType->papFldDes[28]->size=sizeof(prec->asp);
+  pdbRecordType->papFldDes[28]->offset=(short)((char *)&prec->asp - (char *)prec);
+  pdbRecordType->papFldDes[29]->size=sizeof(prec->ppn);
+  pdbRecordType->papFldDes[29]->offset=(short)((char *)&prec->ppn - (char *)prec);
+  pdbRecordType->papFldDes[30]->size=sizeof(prec->ppnr);
+  pdbRecordType->papFldDes[30]->offset=(short)((char *)&prec->ppnr - (char *)prec);
+  pdbRecordType->papFldDes[31]->size=sizeof(prec->spvt);
+  pdbRecordType->papFldDes[31]->offset=(short)((char *)&prec->spvt - (char *)prec);
+  pdbRecordType->papFldDes[32]->size=sizeof(prec->rset);
+  pdbRecordType->papFldDes[32]->offset=(short)((char *)&prec->rset - (char *)prec);
+  pdbRecordType->papFldDes[33]->size=sizeof(prec->dset);
+  pdbRecordType->papFldDes[33]->offset=(short)((char *)&prec->dset - (char *)prec);
+  pdbRecordType->papFldDes[34]->size=sizeof(prec->dpvt);
+  pdbRecordType->papFldDes[34]->offset=(short)((char *)&prec->dpvt - (char *)prec);
+  pdbRecordType->papFldDes[35]->size=sizeof(prec->rdes);
+  pdbRecordType->papFldDes[35]->offset=(short)((char *)&prec->rdes - (char *)prec);
+  pdbRecordType->papFldDes[36]->size=sizeof(prec->lset);
+  pdbRecordType->papFldDes[36]->offset=(short)((char *)&prec->lset - (char *)prec);
+  pdbRecordType->papFldDes[37]->size=sizeof(prec->prio);
+  pdbRecordType->papFldDes[37]->offset=(short)((char *)&prec->prio - (char *)prec);
+  pdbRecordType->papFldDes[38]->size=sizeof(prec->tpro);
+  pdbRecordType->papFldDes[38]->offset=(short)((char *)&prec->tpro - (char *)prec);
+  pdbRecordType->papFldDes[39]->size=sizeof(prec->bkpt);
+  pdbRecordType->papFldDes[39]->offset=(short)((char *)&prec->bkpt - (char *)prec);
+  pdbRecordType->papFldDes[40]->size=sizeof(prec->udf);
+  pdbRecordType->papFldDes[40]->offset=(short)((char *)&prec->udf - (char *)prec);
+  pdbRecordType->papFldDes[41]->size=sizeof(prec->time);
+  pdbRecordType->papFldDes[41]->offset=(short)((char *)&prec->time - (char *)prec);
+  pdbRecordType->papFldDes[42]->size=sizeof(prec->flnk);
+  pdbRecordType->papFldDes[42]->offset=(short)((char *)&prec->flnk - (char *)prec);
+  pdbRecordType->papFldDes[43]->size=sizeof(prec->vers);
+  pdbRecordType->papFldDes[43]->offset=(short)((char *)&prec->vers - (char *)prec);
+  pdbRecordType->papFldDes[44]->size=sizeof(prec->val);
+  pdbRecordType->papFldDes[44]->offset=(short)((char *)&prec->val - (char *)prec);
+  pdbRecordType->papFldDes[45]->size=sizeof(prec->oval);
+  pdbRecordType->papFldDes[45]->offset=(short)((char *)&prec->oval - (char *)prec);
+  pdbRecordType->papFldDes[46]->size=sizeof(prec->sadr);
+  pdbRecordType->papFldDes[46]->offset=(short)((char *)&prec->sadr - (char *)prec);
+  pdbRecordType->papFldDes[47]->size=sizeof(prec->osad);
+  pdbRecordType->papFldDes[47]->offset=(short)((char *)&prec->osad - (char *)prec);
+  pdbRecordType->papFldDes[48]->size=sizeof(prec->lflg);
+  pdbRecordType->papFldDes[48]->offset=(short)((char *)&prec->lflg - (char *)prec);
+  pdbRecordType->papFldDes[49]->size=sizeof(prec->eflg);
+  pdbRecordType->papFldDes[49]->offset=(short)((char *)&prec->eflg - (char *)prec);
+  pdbRecordType->papFldDes[50]->size=sizeof(prec->subl);
+  pdbRecordType->papFldDes[50]->offset=(short)((char *)&prec->subl - (char *)prec);
+  pdbRecordType->papFldDes[51]->size=sizeof(prec->inam);
+  pdbRecordType->papFldDes[51]->offset=(short)((char *)&prec->inam - (char *)prec);
+  pdbRecordType->papFldDes[52]->size=sizeof(prec->snam);
+  pdbRecordType->papFldDes[52]->offset=(short)((char *)&prec->snam - (char *)prec);
+  pdbRecordType->papFldDes[53]->size=sizeof(prec->onam);
+  pdbRecordType->papFldDes[53]->offset=(short)((char *)&prec->onam - (char *)prec);
+  pdbRecordType->papFldDes[54]->size=sizeof(prec->brsv);
+  pdbRecordType->papFldDes[54]->offset=(short)((char *)&prec->brsv - (char *)prec);
+  pdbRecordType->papFldDes[55]->size=sizeof(prec->prec);
+  pdbRecordType->papFldDes[55]->offset=(short)((char *)&prec->prec - (char *)prec);
+  pdbRecordType->papFldDes[56]->size=sizeof(prec->inpa);
+  pdbRecordType->papFldDes[56]->offset=(short)((char *)&prec->inpa - (char *)prec);
+  pdbRecordType->papFldDes[57]->size=sizeof(prec->inpb);
+  pdbRecordType->papFldDes[57]->offset=(short)((char *)&prec->inpb - (char *)prec);
+  pdbRecordType->papFldDes[58]->size=sizeof(prec->inpc);
+  pdbRecordType->papFldDes[58]->offset=(short)((char *)&prec->inpc - (char *)prec);
+  pdbRecordType->papFldDes[59]->size=sizeof(prec->inpd);
+  pdbRecordType->papFldDes[59]->offset=(short)((char *)&prec->inpd - (char *)prec);
+  pdbRecordType->papFldDes[60]->size=sizeof(prec->inpe);
+  pdbRecordType->papFldDes[60]->offset=(short)((char *)&prec->inpe - (char *)prec);
+  pdbRecordType->papFldDes[61]->size=sizeof(prec->inpf);
+  pdbRecordType->papFldDes[61]->offset=(short)((char *)&prec->inpf - (char *)prec);
+  pdbRecordType->papFldDes[62]->size=sizeof(prec->inpg);
+  pdbRecordType->papFldDes[62]->offset=(short)((char *)&prec->inpg - (char *)prec);
+  pdbRecordType->papFldDes[63]->size=sizeof(prec->inph);
+  pdbRecordType->papFldDes[63]->offset=(short)((char *)&prec->inph - (char *)prec);
+  pdbRecordType->papFldDes[64]->size=sizeof(prec->inpi);
+  pdbRecordType->papFldDes[64]->offset=(short)((char *)&prec->inpi - (char *)prec);
+  pdbRecordType->papFldDes[65]->size=sizeof(prec->inpj);
+  pdbRecordType->papFldDes[65]->offset=(short)((char *)&prec->inpj - (char *)prec);
+  pdbRecordType->papFldDes[66]->size=sizeof(prec->inpk);
+  pdbRecordType->papFldDes[66]->offset=(short)((char *)&prec->inpk - (char *)prec);
+  pdbRecordType->papFldDes[67]->size=sizeof(prec->inpl);
+  pdbRecordType->papFldDes[67]->offset=(short)((char *)&prec->inpl - (char *)prec);
+  pdbRecordType->papFldDes[68]->size=sizeof(prec->inpm);
+  pdbRecordType->papFldDes[68]->offset=(short)((char *)&prec->inpm - (char *)prec);
+  pdbRecordType->papFldDes[69]->size=sizeof(prec->inpn);
+  pdbRecordType->papFldDes[69]->offset=(short)((char *)&prec->inpn - (char *)prec);
+  pdbRecordType->papFldDes[70]->size=sizeof(prec->inpo);
+  pdbRecordType->papFldDes[70]->offset=(short)((char *)&prec->inpo - (char *)prec);
+  pdbRecordType->papFldDes[71]->size=sizeof(prec->inpp);
+  pdbRecordType->papFldDes[71]->offset=(short)((char *)&prec->inpp - (char *)prec);
+  pdbRecordType->papFldDes[72]->size=sizeof(prec->inpq);
+  pdbRecordType->papFldDes[72]->offset=(short)((char *)&prec->inpq - (char *)prec);
+  pdbRecordType->papFldDes[73]->size=sizeof(prec->inpr);
+  pdbRecordType->papFldDes[73]->offset=(short)((char *)&prec->inpr - (char *)prec);
+  pdbRecordType->papFldDes[74]->size=sizeof(prec->inps);
+  pdbRecordType->papFldDes[74]->offset=(short)((char *)&prec->inps - (char *)prec);
+  pdbRecordType->papFldDes[75]->size=sizeof(prec->inpt);
+  pdbRecordType->papFldDes[75]->offset=(short)((char *)&prec->inpt - (char *)prec);
+  pdbRecordType->papFldDes[76]->size=sizeof(prec->inpu);
+  pdbRecordType->papFldDes[76]->offset=(short)((char *)&prec->inpu - (char *)prec);
+  pdbRecordType->papFldDes[77]->size=sizeof(prec->ufa);
+  pdbRecordType->papFldDes[77]->offset=(short)((char *)&prec->ufa - (char *)prec);
+  pdbRecordType->papFldDes[78]->size=sizeof(prec->ufb);
+  pdbRecordType->papFldDes[78]->offset=(short)((char *)&prec->ufb - (char *)prec);
+  pdbRecordType->papFldDes[79]->size=sizeof(prec->ufc);
+  pdbRecordType->papFldDes[79]->offset=(short)((char *)&prec->ufc - (char *)prec);
+  pdbRecordType->papFldDes[80]->size=sizeof(prec->ufd);
+  pdbRecordType->papFldDes[80]->offset=(short)((char *)&prec->ufd - (char *)prec);
+  pdbRecordType->papFldDes[81]->size=sizeof(prec->ufe);
+  pdbRecordType->papFldDes[81]->offset=(short)((char *)&prec->ufe - (char *)prec);
+  pdbRecordType->papFldDes[82]->size=sizeof(prec->uff);
+  pdbRecordType->papFldDes[82]->offset=(short)((char *)&prec->uff - (char *)prec);
+  pdbRecordType->papFldDes[83]->size=sizeof(prec->ufg);
+  pdbRecordType->papFldDes[83]->offset=(short)((char *)&prec->ufg - (char *)prec);
+  pdbRecordType->papFldDes[84]->size=sizeof(prec->ufh);
+  pdbRecordType->papFldDes[84]->offset=(short)((char *)&prec->ufh - (char *)prec);
+  pdbRecordType->papFldDes[85]->size=sizeof(prec->ufi);
+  pdbRecordType->papFldDes[85]->offset=(short)((char *)&prec->ufi - (char *)prec);
+  pdbRecordType->papFldDes[86]->size=sizeof(prec->ufj);
+  pdbRecordType->papFldDes[86]->offset=(short)((char *)&prec->ufj - (char *)prec);
+  pdbRecordType->papFldDes[87]->size=sizeof(prec->ufk);
+  pdbRecordType->papFldDes[87]->offset=(short)((char *)&prec->ufk - (char *)prec);
+  pdbRecordType->papFldDes[88]->size=sizeof(prec->ufl);
+  pdbRecordType->papFldDes[88]->offset=(short)((char *)&prec->ufl - (char *)prec);
+  pdbRecordType->papFldDes[89]->size=sizeof(prec->ufm);
+  pdbRecordType->papFldDes[89]->offset=(short)((char *)&prec->ufm - (char *)prec);
+  pdbRecordType->papFldDes[90]->size=sizeof(prec->ufn);
+  pdbRecordType->papFldDes[90]->offset=(short)((char *)&prec->ufn - (char *)prec);
+  pdbRecordType->papFldDes[91]->size=sizeof(prec->ufo);
+  pdbRecordType->papFldDes[91]->offset=(short)((char *)&prec->ufo - (char *)prec);
+  pdbRecordType->papFldDes[92]->size=sizeof(prec->ufp);
+  pdbRecordType->papFldDes[92]->offset=(short)((char *)&prec->ufp - (char *)prec);
+  pdbRecordType->papFldDes[93]->size=sizeof(prec->ufq);
+  pdbRecordType->papFldDes[93]->offset=(short)((char *)&prec->ufq - (char *)prec);
+  pdbRecordType->papFldDes[94]->size=sizeof(prec->ufr);
+  pdbRecordType->papFldDes[94]->offset=(short)((char *)&prec->ufr - (char *)prec);
+  pdbRecordType->papFldDes[95]->size=sizeof(prec->ufs);
+  pdbRecordType->papFldDes[95]->offset=(short)((char *)&prec->ufs - (char *)prec);
+  pdbRecordType->papFldDes[96]->size=sizeof(prec->uft);
+  pdbRecordType->papFldDes[96]->offset=(short)((char *)&prec->uft - (char *)prec);
+  pdbRecordType->papFldDes[97]->size=sizeof(prec->ufu);
+  pdbRecordType->papFldDes[97]->offset=(short)((char *)&prec->ufu - (char *)prec);
+  pdbRecordType->papFldDes[98]->size=sizeof(prec->a);
+  pdbRecordType->papFldDes[98]->offset=(short)((char *)&prec->a - (char *)prec);
+  pdbRecordType->papFldDes[99]->size=sizeof(prec->b);
+  pdbRecordType->papFldDes[99]->offset=(short)((char *)&prec->b - (char *)prec);
+  pdbRecordType->papFldDes[100]->size=sizeof(prec->c);
+  pdbRecordType->papFldDes[100]->offset=(short)((char *)&prec->c - (char *)prec);
+  pdbRecordType->papFldDes[101]->size=sizeof(prec->d);
+  pdbRecordType->papFldDes[101]->offset=(short)((char *)&prec->d - (char *)prec);
+  pdbRecordType->papFldDes[102]->size=sizeof(prec->e);
+  pdbRecordType->papFldDes[102]->offset=(short)((char *)&prec->e - (char *)prec);
+  pdbRecordType->papFldDes[103]->size=sizeof(prec->f);
+  pdbRecordType->papFldDes[103]->offset=(short)((char *)&prec->f - (char *)prec);
+  pdbRecordType->papFldDes[104]->size=sizeof(prec->g);
+  pdbRecordType->papFldDes[104]->offset=(short)((char *)&prec->g - (char *)prec);
+  pdbRecordType->papFldDes[105]->size=sizeof(prec->h);
+  pdbRecordType->papFldDes[105]->offset=(short)((char *)&prec->h - (char *)prec);
+  pdbRecordType->papFldDes[106]->size=sizeof(prec->i);
+  pdbRecordType->papFldDes[106]->offset=(short)((char *)&prec->i - (char *)prec);
+  pdbRecordType->papFldDes[107]->size=sizeof(prec->j);
+  pdbRecordType->papFldDes[107]->offset=(short)((char *)&prec->j - (char *)prec);
+  pdbRecordType->papFldDes[108]->size=sizeof(prec->k);
+  pdbRecordType->papFldDes[108]->offset=(short)((char *)&prec->k - (char *)prec);
+  pdbRecordType->papFldDes[109]->size=sizeof(prec->l);
+  pdbRecordType->papFldDes[109]->offset=(short)((char *)&prec->l - (char *)prec);
+  pdbRecordType->papFldDes[110]->size=sizeof(prec->m);
+  pdbRecordType->papFldDes[110]->offset=(short)((char *)&prec->m - (char *)prec);
+  pdbRecordType->papFldDes[111]->size=sizeof(prec->n);
+  pdbRecordType->papFldDes[111]->offset=(short)((char *)&prec->n - (char *)prec);
+  pdbRecordType->papFldDes[112]->size=sizeof(prec->o);
+  pdbRecordType->papFldDes[112]->offset=(short)((char *)&prec->o - (char *)prec);
+  pdbRecordType->papFldDes[113]->size=sizeof(prec->p);
+  pdbRecordType->papFldDes[113]->offset=(short)((char *)&prec->p - (char *)prec);
+  pdbRecordType->papFldDes[114]->size=sizeof(prec->q);
+  pdbRecordType->papFldDes[114]->offset=(short)((char *)&prec->q - (char *)prec);
+  pdbRecordType->papFldDes[115]->size=sizeof(prec->r);
+  pdbRecordType->papFldDes[115]->offset=(short)((char *)&prec->r - (char *)prec);
+  pdbRecordType->papFldDes[116]->size=sizeof(prec->s);
+  pdbRecordType->papFldDes[116]->offset=(short)((char *)&prec->s - (char *)prec);
+  pdbRecordType->papFldDes[117]->size=sizeof(prec->t);
+  pdbRecordType->papFldDes[117]->offset=(short)((char *)&prec->t - (char *)prec);
+  pdbRecordType->papFldDes[118]->size=sizeof(prec->u);
+  pdbRecordType->papFldDes[118]->offset=(short)((char *)&prec->u - (char *)prec);
+  pdbRecordType->papFldDes[119]->size=sizeof(prec->fta);
+  pdbRecordType->papFldDes[119]->offset=(short)((char *)&prec->fta - (char *)prec);
+  pdbRecordType->papFldDes[120]->size=sizeof(prec->ftb);
+  pdbRecordType->papFldDes[120]->offset=(short)((char *)&prec->ftb - (char *)prec);
+  pdbRecordType->papFldDes[121]->size=sizeof(prec->ftc);
+  pdbRecordType->papFldDes[121]->offset=(short)((char *)&prec->ftc - (char *)prec);
+  pdbRecordType->papFldDes[122]->size=sizeof(prec->ftd);
+  pdbRecordType->papFldDes[122]->offset=(short)((char *)&prec->ftd - (char *)prec);
+  pdbRecordType->papFldDes[123]->size=sizeof(prec->fte);
+  pdbRecordType->papFldDes[123]->offset=(short)((char *)&prec->fte - (char *)prec);
+  pdbRecordType->papFldDes[124]->size=sizeof(prec->ftf);
+  pdbRecordType->papFldDes[124]->offset=(short)((char *)&prec->ftf - (char *)prec);
+  pdbRecordType->papFldDes[125]->size=sizeof(prec->ftg);
+  pdbRecordType->papFldDes[125]->offset=(short)((char *)&prec->ftg - (char *)prec);
+  pdbRecordType->papFldDes[126]->size=sizeof(prec->fth);
+  pdbRecordType->papFldDes[126]->offset=(short)((char *)&prec->fth - (char *)prec);
+  pdbRecordType->papFldDes[127]->size=sizeof(prec->fti);
+  pdbRecordType->papFldDes[127]->offset=(short)((char *)&prec->fti - (char *)prec);
+  pdbRecordType->papFldDes[128]->size=sizeof(prec->ftj);
+  pdbRecordType->papFldDes[128]->offset=(short)((char *)&prec->ftj - (char *)prec);
+  pdbRecordType->papFldDes[129]->size=sizeof(prec->ftk);
+  pdbRecordType->papFldDes[129]->offset=(short)((char *)&prec->ftk - (char *)prec);
+  pdbRecordType->papFldDes[130]->size=sizeof(prec->ftl);
+  pdbRecordType->papFldDes[130]->offset=(short)((char *)&prec->ftl - (char *)prec);
+  pdbRecordType->papFldDes[131]->size=sizeof(prec->ftm);
+  pdbRecordType->papFldDes[131]->offset=(short)((char *)&prec->ftm - (char *)prec);
+  pdbRecordType->papFldDes[132]->size=sizeof(prec->ftn);
+  pdbRecordType->papFldDes[132]->offset=(short)((char *)&prec->ftn - (char *)prec);
+  pdbRecordType->papFldDes[133]->size=sizeof(prec->fto);
+  pdbRecordType->papFldDes[133]->offset=(short)((char *)&prec->fto - (char *)prec);
+  pdbRecordType->papFldDes[134]->size=sizeof(prec->ftp);
+  pdbRecordType->papFldDes[134]->offset=(short)((char *)&prec->ftp - (char *)prec);
+  pdbRecordType->papFldDes[135]->size=sizeof(prec->ftq);
+  pdbRecordType->papFldDes[135]->offset=(short)((char *)&prec->ftq - (char *)prec);
+  pdbRecordType->papFldDes[136]->size=sizeof(prec->ftr);
+  pdbRecordType->papFldDes[136]->offset=(short)((char *)&prec->ftr - (char *)prec);
+  pdbRecordType->papFldDes[137]->size=sizeof(prec->fts);
+  pdbRecordType->papFldDes[137]->offset=(short)((char *)&prec->fts - (char *)prec);
+  pdbRecordType->papFldDes[138]->size=sizeof(prec->ftt);
+  pdbRecordType->papFldDes[138]->offset=(short)((char *)&prec->ftt - (char *)prec);
+  pdbRecordType->papFldDes[139]->size=sizeof(prec->ftu);
+  pdbRecordType->papFldDes[139]->offset=(short)((char *)&prec->ftu - (char *)prec);
+  pdbRecordType->papFldDes[140]->size=sizeof(prec->noa);
+  pdbRecordType->papFldDes[140]->offset=(short)((char *)&prec->noa - (char *)prec);
+  pdbRecordType->papFldDes[141]->size=sizeof(prec->nob);
+  pdbRecordType->papFldDes[141]->offset=(short)((char *)&prec->nob - (char *)prec);
+  pdbRecordType->papFldDes[142]->size=sizeof(prec->noc);
+  pdbRecordType->papFldDes[142]->offset=(short)((char *)&prec->noc - (char *)prec);
+  pdbRecordType->papFldDes[143]->size=sizeof(prec->nod);
+  pdbRecordType->papFldDes[143]->offset=(short)((char *)&prec->nod - (char *)prec);
+  pdbRecordType->papFldDes[144]->size=sizeof(prec->noe);
+  pdbRecordType->papFldDes[144]->offset=(short)((char *)&prec->noe - (char *)prec);
+  pdbRecordType->papFldDes[145]->size=sizeof(prec->nof);
+  pdbRecordType->papFldDes[145]->offset=(short)((char *)&prec->nof - (char *)prec);
+  pdbRecordType->papFldDes[146]->size=sizeof(prec->nog);
+  pdbRecordType->papFldDes[146]->offset=(short)((char *)&prec->nog - (char *)prec);
+  pdbRecordType->papFldDes[147]->size=sizeof(prec->noh);
+  pdbRecordType->papFldDes[147]->offset=(short)((char *)&prec->noh - (char *)prec);
+  pdbRecordType->papFldDes[148]->size=sizeof(prec->noi);
+  pdbRecordType->papFldDes[148]->offset=(short)((char *)&prec->noi - (char *)prec);
+  pdbRecordType->papFldDes[149]->size=sizeof(prec->noj);
+  pdbRecordType->papFldDes[149]->offset=(short)((char *)&prec->noj - (char *)prec);
+  pdbRecordType->papFldDes[150]->size=sizeof(prec->nok);
+  pdbRecordType->papFldDes[150]->offset=(short)((char *)&prec->nok - (char *)prec);
+  pdbRecordType->papFldDes[151]->size=sizeof(prec->nol);
+  pdbRecordType->papFldDes[151]->offset=(short)((char *)&prec->nol - (char *)prec);
+  pdbRecordType->papFldDes[152]->size=sizeof(prec->nom);
+  pdbRecordType->papFldDes[152]->offset=(short)((char *)&prec->nom - (char *)prec);
+  pdbRecordType->papFldDes[153]->size=sizeof(prec->non);
+  pdbRecordType->papFldDes[153]->offset=(short)((char *)&prec->non - (char *)prec);
+  pdbRecordType->papFldDes[154]->size=sizeof(prec->noo);
+  pdbRecordType->papFldDes[154]->offset=(short)((char *)&prec->noo - (char *)prec);
+  pdbRecordType->papFldDes[155]->size=sizeof(prec->nop);
+  pdbRecordType->papFldDes[155]->offset=(short)((char *)&prec->nop - (char *)prec);
+  pdbRecordType->papFldDes[156]->size=sizeof(prec->noq);
+  pdbRecordType->papFldDes[156]->offset=(short)((char *)&prec->noq - (char *)prec);
+  pdbRecordType->papFldDes[157]->size=sizeof(prec->nor);
+  pdbRecordType->papFldDes[157]->offset=(short)((char *)&prec->nor - (char *)prec);
+  pdbRecordType->papFldDes[158]->size=sizeof(prec->nos);
+  pdbRecordType->papFldDes[158]->offset=(short)((char *)&prec->nos - (char *)prec);
+  pdbRecordType->papFldDes[159]->size=sizeof(prec->not);
+  pdbRecordType->papFldDes[159]->offset=(short)((char *)&prec->not - (char *)prec);
+  pdbRecordType->papFldDes[160]->size=sizeof(prec->nou);
+  pdbRecordType->papFldDes[160]->offset=(short)((char *)&prec->nou - (char *)prec);
+  pdbRecordType->papFldDes[161]->size=sizeof(prec->outa);
+  pdbRecordType->papFldDes[161]->offset=(short)((char *)&prec->outa - (char *)prec);
+  pdbRecordType->papFldDes[162]->size=sizeof(prec->outb);
+  pdbRecordType->papFldDes[162]->offset=(short)((char *)&prec->outb - (char *)prec);
+  pdbRecordType->papFldDes[163]->size=sizeof(prec->outc);
+  pdbRecordType->papFldDes[163]->offset=(short)((char *)&prec->outc - (char *)prec);
+  pdbRecordType->papFldDes[164]->size=sizeof(prec->outd);
+  pdbRecordType->papFldDes[164]->offset=(short)((char *)&prec->outd - (char *)prec);
+  pdbRecordType->papFldDes[165]->size=sizeof(prec->oute);
+  pdbRecordType->papFldDes[165]->offset=(short)((char *)&prec->oute - (char *)prec);
+  pdbRecordType->papFldDes[166]->size=sizeof(prec->outf);
+  pdbRecordType->papFldDes[166]->offset=(short)((char *)&prec->outf - (char *)prec);
+  pdbRecordType->papFldDes[167]->size=sizeof(prec->outg);
+  pdbRecordType->papFldDes[167]->offset=(short)((char *)&prec->outg - (char *)prec);
+  pdbRecordType->papFldDes[168]->size=sizeof(prec->outh);
+  pdbRecordType->papFldDes[168]->offset=(short)((char *)&prec->outh - (char *)prec);
+  pdbRecordType->papFldDes[169]->size=sizeof(prec->outi);
+  pdbRecordType->papFldDes[169]->offset=(short)((char *)&prec->outi - (char *)prec);
+  pdbRecordType->papFldDes[170]->size=sizeof(prec->outj);
+  pdbRecordType->papFldDes[170]->offset=(short)((char *)&prec->outj - (char *)prec);
+  pdbRecordType->papFldDes[171]->size=sizeof(prec->outk);
+  pdbRecordType->papFldDes[171]->offset=(short)((char *)&prec->outk - (char *)prec);
+  pdbRecordType->papFldDes[172]->size=sizeof(prec->outl);
+  pdbRecordType->papFldDes[172]->offset=(short)((char *)&prec->outl - (char *)prec);
+  pdbRecordType->papFldDes[173]->size=sizeof(prec->outm);
+  pdbRecordType->papFldDes[173]->offset=(short)((char *)&prec->outm - (char *)prec);
+  pdbRecordType->papFldDes[174]->size=sizeof(prec->outn);
+  pdbRecordType->papFldDes[174]->offset=(short)((char *)&prec->outn - (char *)prec);
+  pdbRecordType->papFldDes[175]->size=sizeof(prec->outo);
+  pdbRecordType->papFldDes[175]->offset=(short)((char *)&prec->outo - (char *)prec);
+  pdbRecordType->papFldDes[176]->size=sizeof(prec->outp);
+  pdbRecordType->papFldDes[176]->offset=(short)((char *)&prec->outp - (char *)prec);
+  pdbRecordType->papFldDes[177]->size=sizeof(prec->outq);
+  pdbRecordType->papFldDes[177]->offset=(short)((char *)&prec->outq - (char *)prec);
+  pdbRecordType->papFldDes[178]->size=sizeof(prec->outr);
+  pdbRecordType->papFldDes[178]->offset=(short)((char *)&prec->outr - (char *)prec);
+  pdbRecordType->papFldDes[179]->size=sizeof(prec->outs);
+  pdbRecordType->papFldDes[179]->offset=(short)((char *)&prec->outs - (char *)prec);
+  pdbRecordType->papFldDes[180]->size=sizeof(prec->outt);
+  pdbRecordType->papFldDes[180]->offset=(short)((char *)&prec->outt - (char *)prec);
+  pdbRecordType->papFldDes[181]->size=sizeof(prec->outu);
+  pdbRecordType->papFldDes[181]->offset=(short)((char *)&prec->outu - (char *)prec);
+  pdbRecordType->papFldDes[182]->size=sizeof(prec->ufva);
+  pdbRecordType->papFldDes[182]->offset=(short)((char *)&prec->ufva - (char *)prec);
+  pdbRecordType->papFldDes[183]->size=sizeof(prec->ufvb);
+  pdbRecordType->papFldDes[183]->offset=(short)((char *)&prec->ufvb - (char *)prec);
+  pdbRecordType->papFldDes[184]->size=sizeof(prec->ufvc);
+  pdbRecordType->papFldDes[184]->offset=(short)((char *)&prec->ufvc - (char *)prec);
+  pdbRecordType->papFldDes[185]->size=sizeof(prec->ufvd);
+  pdbRecordType->papFldDes[185]->offset=(short)((char *)&prec->ufvd - (char *)prec);
+  pdbRecordType->papFldDes[186]->size=sizeof(prec->ufve);
+  pdbRecordType->papFldDes[186]->offset=(short)((char *)&prec->ufve - (char *)prec);
+  pdbRecordType->papFldDes[187]->size=sizeof(prec->ufvf);
+  pdbRecordType->papFldDes[187]->offset=(short)((char *)&prec->ufvf - (char *)prec);
+  pdbRecordType->papFldDes[188]->size=sizeof(prec->ufvg);
+  pdbRecordType->papFldDes[188]->offset=(short)((char *)&prec->ufvg - (char *)prec);
+  pdbRecordType->papFldDes[189]->size=sizeof(prec->ufvh);
+  pdbRecordType->papFldDes[189]->offset=(short)((char *)&prec->ufvh - (char *)prec);
+  pdbRecordType->papFldDes[190]->size=sizeof(prec->ufvi);
+  pdbRecordType->papFldDes[190]->offset=(short)((char *)&prec->ufvi - (char *)prec);
+  pdbRecordType->papFldDes[191]->size=sizeof(prec->ufvj);
+  pdbRecordType->papFldDes[191]->offset=(short)((char *)&prec->ufvj - (char *)prec);
+  pdbRecordType->papFldDes[192]->size=sizeof(prec->ufvk);
+  pdbRecordType->papFldDes[192]->offset=(short)((char *)&prec->ufvk - (char *)prec);
+  pdbRecordType->papFldDes[193]->size=sizeof(prec->ufvl);
+  pdbRecordType->papFldDes[193]->offset=(short)((char *)&prec->ufvl - (char *)prec);
+  pdbRecordType->papFldDes[194]->size=sizeof(prec->ufvm);
+  pdbRecordType->papFldDes[194]->offset=(short)((char *)&prec->ufvm - (char *)prec);
+  pdbRecordType->papFldDes[195]->size=sizeof(prec->ufvn);
+  pdbRecordType->papFldDes[195]->offset=(short)((char *)&prec->ufvn - (char *)prec);
+  pdbRecordType->papFldDes[196]->size=sizeof(prec->ufvo);
+  pdbRecordType->papFldDes[196]->offset=(short)((char *)&prec->ufvo - (char *)prec);
+  pdbRecordType->papFldDes[197]->size=sizeof(prec->ufvp);
+  pdbRecordType->papFldDes[197]->offset=(short)((char *)&prec->ufvp - (char *)prec);
+  pdbRecordType->papFldDes[198]->size=sizeof(prec->ufvq);
+  pdbRecordType->papFldDes[198]->offset=(short)((char *)&prec->ufvq - (char *)prec);
+  pdbRecordType->papFldDes[199]->size=sizeof(prec->ufvr);
+  pdbRecordType->papFldDes[199]->offset=(short)((char *)&prec->ufvr - (char *)prec);
+  pdbRecordType->papFldDes[200]->size=sizeof(prec->ufvs);
+  pdbRecordType->papFldDes[200]->offset=(short)((char *)&prec->ufvs - (char *)prec);
+  pdbRecordType->papFldDes[201]->size=sizeof(prec->ufvt);
+  pdbRecordType->papFldDes[201]->offset=(short)((char *)&prec->ufvt - (char *)prec);
+  pdbRecordType->papFldDes[202]->size=sizeof(prec->ufvu);
+  pdbRecordType->papFldDes[202]->offset=(short)((char *)&prec->ufvu - (char *)prec);
+  pdbRecordType->papFldDes[203]->size=sizeof(prec->vala);
+  pdbRecordType->papFldDes[203]->offset=(short)((char *)&prec->vala - (char *)prec);
+  pdbRecordType->papFldDes[204]->size=sizeof(prec->valb);
+  pdbRecordType->papFldDes[204]->offset=(short)((char *)&prec->valb - (char *)prec);
+  pdbRecordType->papFldDes[205]->size=sizeof(prec->valc);
+  pdbRecordType->papFldDes[205]->offset=(short)((char *)&prec->valc - (char *)prec);
+  pdbRecordType->papFldDes[206]->size=sizeof(prec->vald);
+  pdbRecordType->papFldDes[206]->offset=(short)((char *)&prec->vald - (char *)prec);
+  pdbRecordType->papFldDes[207]->size=sizeof(prec->vale);
+  pdbRecordType->papFldDes[207]->offset=(short)((char *)&prec->vale - (char *)prec);
+  pdbRecordType->papFldDes[208]->size=sizeof(prec->valf);
+  pdbRecordType->papFldDes[208]->offset=(short)((char *)&prec->valf - (char *)prec);
+  pdbRecordType->papFldDes[209]->size=sizeof(prec->valg);
+  pdbRecordType->papFldDes[209]->offset=(short)((char *)&prec->valg - (char *)prec);
+  pdbRecordType->papFldDes[210]->size=sizeof(prec->valh);
+  pdbRecordType->papFldDes[210]->offset=(short)((char *)&prec->valh - (char *)prec);
+  pdbRecordType->papFldDes[211]->size=sizeof(prec->vali);
+  pdbRecordType->papFldDes[211]->offset=(short)((char *)&prec->vali - (char *)prec);
+  pdbRecordType->papFldDes[212]->size=sizeof(prec->valj);
+  pdbRecordType->papFldDes[212]->offset=(short)((char *)&prec->valj - (char *)prec);
+  pdbRecordType->papFldDes[213]->size=sizeof(prec->valk);
+  pdbRecordType->papFldDes[213]->offset=(short)((char *)&prec->valk - (char *)prec);
+  pdbRecordType->papFldDes[214]->size=sizeof(prec->vall);
+  pdbRecordType->papFldDes[214]->offset=(short)((char *)&prec->vall - (char *)prec);
+  pdbRecordType->papFldDes[215]->size=sizeof(prec->valm);
+  pdbRecordType->papFldDes[215]->offset=(short)((char *)&prec->valm - (char *)prec);
+  pdbRecordType->papFldDes[216]->size=sizeof(prec->valn);
+  pdbRecordType->papFldDes[216]->offset=(short)((char *)&prec->valn - (char *)prec);
+  pdbRecordType->papFldDes[217]->size=sizeof(prec->valo);
+  pdbRecordType->papFldDes[217]->offset=(short)((char *)&prec->valo - (char *)prec);
+  pdbRecordType->papFldDes[218]->size=sizeof(prec->valp);
+  pdbRecordType->papFldDes[218]->offset=(short)((char *)&prec->valp - (char *)prec);
+  pdbRecordType->papFldDes[219]->size=sizeof(prec->valq);
+  pdbRecordType->papFldDes[219]->offset=(short)((char *)&prec->valq - (char *)prec);
+  pdbRecordType->papFldDes[220]->size=sizeof(prec->valr);
+  pdbRecordType->papFldDes[220]->offset=(short)((char *)&prec->valr - (char *)prec);
+  pdbRecordType->papFldDes[221]->size=sizeof(prec->vals);
+  pdbRecordType->papFldDes[221]->offset=(short)((char *)&prec->vals - (char *)prec);
+  pdbRecordType->papFldDes[222]->size=sizeof(prec->valt);
+  pdbRecordType->papFldDes[222]->offset=(short)((char *)&prec->valt - (char *)prec);
+  pdbRecordType->papFldDes[223]->size=sizeof(prec->valu);
+  pdbRecordType->papFldDes[223]->offset=(short)((char *)&prec->valu - (char *)prec);
+  pdbRecordType->papFldDes[224]->size=sizeof(prec->ovla);
+  pdbRecordType->papFldDes[224]->offset=(short)((char *)&prec->ovla - (char *)prec);
+  pdbRecordType->papFldDes[225]->size=sizeof(prec->ovlb);
+  pdbRecordType->papFldDes[225]->offset=(short)((char *)&prec->ovlb - (char *)prec);
+  pdbRecordType->papFldDes[226]->size=sizeof(prec->ovlc);
+  pdbRecordType->papFldDes[226]->offset=(short)((char *)&prec->ovlc - (char *)prec);
+  pdbRecordType->papFldDes[227]->size=sizeof(prec->ovld);
+  pdbRecordType->papFldDes[227]->offset=(short)((char *)&prec->ovld - (char *)prec);
+  pdbRecordType->papFldDes[228]->size=sizeof(prec->ovle);
+  pdbRecordType->papFldDes[228]->offset=(short)((char *)&prec->ovle - (char *)prec);
+  pdbRecordType->papFldDes[229]->size=sizeof(prec->ovlf);
+  pdbRecordType->papFldDes[229]->offset=(short)((char *)&prec->ovlf - (char *)prec);
+  pdbRecordType->papFldDes[230]->size=sizeof(prec->ovlg);
+  pdbRecordType->papFldDes[230]->offset=(short)((char *)&prec->ovlg - (char *)prec);
+  pdbRecordType->papFldDes[231]->size=sizeof(prec->ovlh);
+  pdbRecordType->papFldDes[231]->offset=(short)((char *)&prec->ovlh - (char *)prec);
+  pdbRecordType->papFldDes[232]->size=sizeof(prec->ovli);
+  pdbRecordType->papFldDes[232]->offset=(short)((char *)&prec->ovli - (char *)prec);
+  pdbRecordType->papFldDes[233]->size=sizeof(prec->ovlj);
+  pdbRecordType->papFldDes[233]->offset=(short)((char *)&prec->ovlj - (char *)prec);
+  pdbRecordType->papFldDes[234]->size=sizeof(prec->ovlk);
+  pdbRecordType->papFldDes[234]->offset=(short)((char *)&prec->ovlk - (char *)prec);
+  pdbRecordType->papFldDes[235]->size=sizeof(prec->ovll);
+  pdbRecordType->papFldDes[235]->offset=(short)((char *)&prec->ovll - (char *)prec);
+  pdbRecordType->papFldDes[236]->size=sizeof(prec->ovlm);
+  pdbRecordType->papFldDes[236]->offset=(short)((char *)&prec->ovlm - (char *)prec);
+  pdbRecordType->papFldDes[237]->size=sizeof(prec->ovln);
+  pdbRecordType->papFldDes[237]->offset=(short)((char *)&prec->ovln - (char *)prec);
+  pdbRecordType->papFldDes[238]->size=sizeof(prec->ovlo);
+  pdbRecordType->papFldDes[238]->offset=(short)((char *)&prec->ovlo - (char *)prec);
+  pdbRecordType->papFldDes[239]->size=sizeof(prec->ovlp);
+  pdbRecordType->papFldDes[239]->offset=(short)((char *)&prec->ovlp - (char *)prec);
+  pdbRecordType->papFldDes[240]->size=sizeof(prec->ovlq);
+  pdbRecordType->papFldDes[240]->offset=(short)((char *)&prec->ovlq - (char *)prec);
+  pdbRecordType->papFldDes[241]->size=sizeof(prec->ovlr);
+  pdbRecordType->papFldDes[241]->offset=(short)((char *)&prec->ovlr - (char *)prec);
+  pdbRecordType->papFldDes[242]->size=sizeof(prec->ovls);
+  pdbRecordType->papFldDes[242]->offset=(short)((char *)&prec->ovls - (char *)prec);
+  pdbRecordType->papFldDes[243]->size=sizeof(prec->ovlt);
+  pdbRecordType->papFldDes[243]->offset=(short)((char *)&prec->ovlt - (char *)prec);
+  pdbRecordType->papFldDes[244]->size=sizeof(prec->ovlu);
+  pdbRecordType->papFldDes[244]->offset=(short)((char *)&prec->ovlu - (char *)prec);
+  pdbRecordType->papFldDes[245]->size=sizeof(prec->ftva);
+  pdbRecordType->papFldDes[245]->offset=(short)((char *)&prec->ftva - (char *)prec);
+  pdbRecordType->papFldDes[246]->size=sizeof(prec->ftvb);
+  pdbRecordType->papFldDes[246]->offset=(short)((char *)&prec->ftvb - (char *)prec);
+  pdbRecordType->papFldDes[247]->size=sizeof(prec->ftvc);
+  pdbRecordType->papFldDes[247]->offset=(short)((char *)&prec->ftvc - (char *)prec);
+  pdbRecordType->papFldDes[248]->size=sizeof(prec->ftvd);
+  pdbRecordType->papFldDes[248]->offset=(short)((char *)&prec->ftvd - (char *)prec);
+  pdbRecordType->papFldDes[249]->size=sizeof(prec->ftve);
+  pdbRecordType->papFldDes[249]->offset=(short)((char *)&prec->ftve - (char *)prec);
+  pdbRecordType->papFldDes[250]->size=sizeof(prec->ftvf);
+  pdbRecordType->papFldDes[250]->offset=(short)((char *)&prec->ftvf - (char *)prec);
+  pdbRecordType->papFldDes[251]->size=sizeof(prec->ftvg);
+  pdbRecordType->papFldDes[251]->offset=(short)((char *)&prec->ftvg - (char *)prec);
+  pdbRecordType->papFldDes[252]->size=sizeof(prec->ftvh);
+  pdbRecordType->papFldDes[252]->offset=(short)((char *)&prec->ftvh - (char *)prec);
+  pdbRecordType->papFldDes[253]->size=sizeof(prec->ftvi);
+  pdbRecordType->papFldDes[253]->offset=(short)((char *)&prec->ftvi - (char *)prec);
+  pdbRecordType->papFldDes[254]->size=sizeof(prec->ftvj);
+  pdbRecordType->papFldDes[254]->offset=(short)((char *)&prec->ftvj - (char *)prec);
+  pdbRecordType->papFldDes[255]->size=sizeof(prec->ftvk);
+  pdbRecordType->papFldDes[255]->offset=(short)((char *)&prec->ftvk - (char *)prec);
+  pdbRecordType->papFldDes[256]->size=sizeof(prec->ftvl);
+  pdbRecordType->papFldDes[256]->offset=(short)((char *)&prec->ftvl - (char *)prec);
+  pdbRecordType->papFldDes[257]->size=sizeof(prec->ftvm);
+  pdbRecordType->papFldDes[257]->offset=(short)((char *)&prec->ftvm - (char *)prec);
+  pdbRecordType->papFldDes[258]->size=sizeof(prec->ftvn);
+  pdbRecordType->papFldDes[258]->offset=(short)((char *)&prec->ftvn - (char *)prec);
+  pdbRecordType->papFldDes[259]->size=sizeof(prec->ftvo);
+  pdbRecordType->papFldDes[259]->offset=(short)((char *)&prec->ftvo - (char *)prec);
+  pdbRecordType->papFldDes[260]->size=sizeof(prec->ftvp);
+  pdbRecordType->papFldDes[260]->offset=(short)((char *)&prec->ftvp - (char *)prec);
+  pdbRecordType->papFldDes[261]->size=sizeof(prec->ftvq);
+  pdbRecordType->papFldDes[261]->offset=(short)((char *)&prec->ftvq - (char *)prec);
+  pdbRecordType->papFldDes[262]->size=sizeof(prec->ftvr);
+  pdbRecordType->papFldDes[262]->offset=(short)((char *)&prec->ftvr - (char *)prec);
+  pdbRecordType->papFldDes[263]->size=sizeof(prec->ftvs);
+  pdbRecordType->papFldDes[263]->offset=(short)((char *)&prec->ftvs - (char *)prec);
+  pdbRecordType->papFldDes[264]->size=sizeof(prec->ftvt);
+  pdbRecordType->papFldDes[264]->offset=(short)((char *)&prec->ftvt - (char *)prec);
+  pdbRecordType->papFldDes[265]->size=sizeof(prec->ftvu);
+  pdbRecordType->papFldDes[265]->offset=(short)((char *)&prec->ftvu - (char *)prec);
+  pdbRecordType->papFldDes[266]->size=sizeof(prec->nova);
+  pdbRecordType->papFldDes[266]->offset=(short)((char *)&prec->nova - (char *)prec);
+  pdbRecordType->papFldDes[267]->size=sizeof(prec->novb);
+  pdbRecordType->papFldDes[267]->offset=(short)((char *)&prec->novb - (char *)prec);
+  pdbRecordType->papFldDes[268]->size=sizeof(prec->novc);
+  pdbRecordType->papFldDes[268]->offset=(short)((char *)&prec->novc - (char *)prec);
+  pdbRecordType->papFldDes[269]->size=sizeof(prec->novd);
+  pdbRecordType->papFldDes[269]->offset=(short)((char *)&prec->novd - (char *)prec);
+  pdbRecordType->papFldDes[270]->size=sizeof(prec->nove);
+  pdbRecordType->papFldDes[270]->offset=(short)((char *)&prec->nove - (char *)prec);
+  pdbRecordType->papFldDes[271]->size=sizeof(prec->novf);
+  pdbRecordType->papFldDes[271]->offset=(short)((char *)&prec->novf - (char *)prec);
+  pdbRecordType->papFldDes[272]->size=sizeof(prec->novg);
+  pdbRecordType->papFldDes[272]->offset=(short)((char *)&prec->novg - (char *)prec);
+  pdbRecordType->papFldDes[273]->size=sizeof(prec->novh);
+  pdbRecordType->papFldDes[273]->offset=(short)((char *)&prec->novh - (char *)prec);
+  pdbRecordType->papFldDes[274]->size=sizeof(prec->novi);
+  pdbRecordType->papFldDes[274]->offset=(short)((char *)&prec->novi - (char *)prec);
+  pdbRecordType->papFldDes[275]->size=sizeof(prec->novj);
+  pdbRecordType->papFldDes[275]->offset=(short)((char *)&prec->novj - (char *)prec);
+  pdbRecordType->papFldDes[276]->size=sizeof(prec->novk);
+  pdbRecordType->papFldDes[276]->offset=(short)((char *)&prec->novk - (char *)prec);
+  pdbRecordType->papFldDes[277]->size=sizeof(prec->novl);
+  pdbRecordType->papFldDes[277]->offset=(short)((char *)&prec->novl - (char *)prec);
+  pdbRecordType->papFldDes[278]->size=sizeof(prec->novm);
+  pdbRecordType->papFldDes[278]->offset=(short)((char *)&prec->novm - (char *)prec);
+  pdbRecordType->papFldDes[279]->size=sizeof(prec->novn);
+  pdbRecordType->papFldDes[279]->offset=(short)((char *)&prec->novn - (char *)prec);
+  pdbRecordType->papFldDes[280]->size=sizeof(prec->novo);
+  pdbRecordType->papFldDes[280]->offset=(short)((char *)&prec->novo - (char *)prec);
+  pdbRecordType->papFldDes[281]->size=sizeof(prec->novp);
+  pdbRecordType->papFldDes[281]->offset=(short)((char *)&prec->novp - (char *)prec);
+  pdbRecordType->papFldDes[282]->size=sizeof(prec->novq);
+  pdbRecordType->papFldDes[282]->offset=(short)((char *)&prec->novq - (char *)prec);
+  pdbRecordType->papFldDes[283]->size=sizeof(prec->novr);
+  pdbRecordType->papFldDes[283]->offset=(short)((char *)&prec->novr - (char *)prec);
+  pdbRecordType->papFldDes[284]->size=sizeof(prec->novs);
+  pdbRecordType->papFldDes[284]->offset=(short)((char *)&prec->novs - (char *)prec);
+  pdbRecordType->papFldDes[285]->size=sizeof(prec->novt);
+  pdbRecordType->papFldDes[285]->offset=(short)((char *)&prec->novt - (char *)prec);
+  pdbRecordType->papFldDes[286]->size=sizeof(prec->novu);
+  pdbRecordType->papFldDes[286]->offset=(short)((char *)&prec->novu - (char *)prec);
+  pdbRecordType->papFldDes[287]->size=sizeof(prec->tova);
+  pdbRecordType->papFldDes[287]->offset=(short)((char *)&prec->tova - (char *)prec);
+  pdbRecordType->papFldDes[288]->size=sizeof(prec->tovb);
+  pdbRecordType->papFldDes[288]->offset=(short)((char *)&prec->tovb - (char *)prec);
+  pdbRecordType->papFldDes[289]->size=sizeof(prec->tovc);
+  pdbRecordType->papFldDes[289]->offset=(short)((char *)&prec->tovc - (char *)prec);
+  pdbRecordType->papFldDes[290]->size=sizeof(prec->tovd);
+  pdbRecordType->papFldDes[290]->offset=(short)((char *)&prec->tovd - (char *)prec);
+  pdbRecordType->papFldDes[291]->size=sizeof(prec->tove);
+  pdbRecordType->papFldDes[291]->offset=(short)((char *)&prec->tove - (char *)prec);
+  pdbRecordType->papFldDes[292]->size=sizeof(prec->tovf);
+  pdbRecordType->papFldDes[292]->offset=(short)((char *)&prec->tovf - (char *)prec);
+  pdbRecordType->papFldDes[293]->size=sizeof(prec->tovg);
+  pdbRecordType->papFldDes[293]->offset=(short)((char *)&prec->tovg - (char *)prec);
+  pdbRecordType->papFldDes[294]->size=sizeof(prec->tovh);
+  pdbRecordType->papFldDes[294]->offset=(short)((char *)&prec->tovh - (char *)prec);
+  pdbRecordType->papFldDes[295]->size=sizeof(prec->tovi);
+  pdbRecordType->papFldDes[295]->offset=(short)((char *)&prec->tovi - (char *)prec);
+  pdbRecordType->papFldDes[296]->size=sizeof(prec->tovj);
+  pdbRecordType->papFldDes[296]->offset=(short)((char *)&prec->tovj - (char *)prec);
+  pdbRecordType->papFldDes[297]->size=sizeof(prec->tovk);
+  pdbRecordType->papFldDes[297]->offset=(short)((char *)&prec->tovk - (char *)prec);
+  pdbRecordType->papFldDes[298]->size=sizeof(prec->tovl);
+  pdbRecordType->papFldDes[298]->offset=(short)((char *)&prec->tovl - (char *)prec);
+  pdbRecordType->papFldDes[299]->size=sizeof(prec->tovm);
+  pdbRecordType->papFldDes[299]->offset=(short)((char *)&prec->tovm - (char *)prec);
+  pdbRecordType->papFldDes[300]->size=sizeof(prec->tovn);
+  pdbRecordType->papFldDes[300]->offset=(short)((char *)&prec->tovn - (char *)prec);
+  pdbRecordType->papFldDes[301]->size=sizeof(prec->tovo);
+  pdbRecordType->papFldDes[301]->offset=(short)((char *)&prec->tovo - (char *)prec);
+  pdbRecordType->papFldDes[302]->size=sizeof(prec->tovp);
+  pdbRecordType->papFldDes[302]->offset=(short)((char *)&prec->tovp - (char *)prec);
+  pdbRecordType->papFldDes[303]->size=sizeof(prec->tovq);
+  pdbRecordType->papFldDes[303]->offset=(short)((char *)&prec->tovq - (char *)prec);
+  pdbRecordType->papFldDes[304]->size=sizeof(prec->tovr);
+  pdbRecordType->papFldDes[304]->offset=(short)((char *)&prec->tovr - (char *)prec);
+  pdbRecordType->papFldDes[305]->size=sizeof(prec->tovs);
+  pdbRecordType->papFldDes[305]->offset=(short)((char *)&prec->tovs - (char *)prec);
+  pdbRecordType->papFldDes[306]->size=sizeof(prec->tovt);
+  pdbRecordType->papFldDes[306]->offset=(short)((char *)&prec->tovt - (char *)prec);
+  pdbRecordType->papFldDes[307]->size=sizeof(prec->tovu);
+  pdbRecordType->papFldDes[307]->offset=(short)((char *)&prec->tovu - (char *)prec);
+    pdbRecordType->rec_size = sizeof(*prec);
+    return(0);
+}
+epicsExportRegistrar(genSubRecordSizeOffset);
+#ifdef __cplusplus
+}
+#endif
+#endif /*GEN_SIZE_OFFSET*/
diff --git a/ebctrl/ioc/include/hadtu.h b/ebctrl/ioc/include/hadtu.h
new file mode 100644 (file)
index 0000000..f7c0878
--- /dev/null
@@ -0,0 +1,156 @@
+
+#ifndef HADTU_H
+#define HADTU_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+
+enum HadTu_Decoding {
+       HadTu_queueDecoding = 3 << 16 | 99
+};
+
+static uint32_t *HadTu_hdr(const void *my);
+static size_t HadTu_hdrLen(void);
+static size_t HadTu_hdrSize(void);
+static int HadTu_isSwapped(const void *my);
+static uint32_t HadTu_hdrValue(const void *my, unsigned idx);
+static void HadTu_setHdrValue(const void *my, unsigned idx, uint32_t value);
+static uint32_t HadTu_decoding(const void *my);
+static void HadTu_setDecoding(void *my, uint32_t decoding);
+static unsigned HadTu_alignment(const void *my);
+static uint32_t HadTu_size(const void *my);
+static void HadTu_setSize(void *my, uint32_t size);
+static size_t HadTu_paddedSize(const void *my);
+static void *HadTu_begin(const void *my);
+static void *HadTu_end(const void *my);
+static size_t HadTu_dataSize(const void *my);
+static void *HadTu_data(const void *my);
+static void *HadTu_next(const void *my, const void *hadTu);
+char *HadTu_2charP(const void *my);
+
+enum HadTuIdx {
+       HadTuIdx_size,
+       HadTuIdx_decoding,
+       HadTuIdx_data
+};
+
+static uint32_t *HadTu_hdr(const void *my)
+{
+       return (uint32_t *) my;
+}
+
+static size_t HadTu_hdrLen(void)
+{
+       return HadTuIdx_data;
+}
+
+static size_t HadTu_hdrSize(void)
+{
+       return HadTu_hdrLen() * sizeof(uint32_t);
+}
+
+static int HadTu_isSwapped(const void *my)
+{
+       uint32_t *hdr = HadTu_hdr(my);
+
+       return hdr[HadTuIdx_decoding] > 0xffffff;
+}
+
+static uint32_t HadTu_hdrValue(const void *my, unsigned idx)
+{
+       uint32_t *hdr = HadTu_hdr(my);
+
+       if (HadTu_isSwapped(my)) {
+               uint32_t tmp0;
+               uint32_t tmp1;
+
+               tmp0 = hdr[idx];
+               ((char *) &tmp1)[0] = ((char *) &tmp0)[3];
+               ((char *) &tmp1)[1] = ((char *) &tmp0)[2];
+               ((char *) &tmp1)[2] = ((char *) &tmp0)[1];
+               ((char *) &tmp1)[3] = ((char *) &tmp0)[0];
+               return tmp1;
+       } else {
+               return hdr[idx];
+       }
+}
+
+static void HadTu_setHdrValue(const void *my, unsigned idx, uint32_t value)
+{
+       uint32_t *hdr = HadTu_hdr(my);
+
+       hdr[idx] = value;
+}
+
+static uint32_t HadTu_decoding(const void *my)
+{
+       return HadTu_hdrValue(my, HadTuIdx_decoding);
+}
+
+static void HadTu_setDecoding(void *my, uint32_t decoding)
+{
+       HadTu_setHdrValue(my, HadTuIdx_decoding, decoding);
+}
+
+static unsigned HadTu_alignment(const void *my)
+{
+       return 1 << (HadTu_decoding(my) >> 16 & 0xff);
+}
+
+static uint32_t HadTu_size(const void *my)
+{
+       return HadTu_hdrValue(my, HadTuIdx_size);
+}
+
+static void HadTu_setSize(void *my, uint32_t size)
+{
+       HadTu_setHdrValue(my, HadTuIdx_size, size);
+}
+
+static size_t HadTu_paddedSize(const void *my)
+{
+       uint32_t size;
+       uint32_t alignment;
+
+       size = HadTu_size(my);
+       alignment = HadTu_alignment(my);
+       return (size & (alignment - 1))
+               ? (size & ~(alignment - 1)) + alignment : size;
+}
+
+static void *HadTu_begin(const void *my)
+{
+       return (void *) my;
+}
+
+static void *HadTu_end(const void *my)
+{
+       return (void *) ((char *) my + HadTu_paddedSize(my));
+}
+
+static size_t HadTu_dataSize(const void *my)
+{
+       return HadTu_size(my) - HadTu_hdrSize();
+}
+
+static void *HadTu_data(const void *my)
+{
+       return (void *) ((char *) my + HadTu_hdrSize());
+}
+
+static void *HadTu_next(const void *my, const void *hadTu)
+{
+       uint32_t size;
+       uint32_t alignment;
+       size_t paddedSize;
+
+       size = HadTu_size(hadTu);
+       alignment = HadTu_alignment(my);
+       paddedSize = (size & (alignment - 1))
+               ? (size & ~(alignment - 1)) + alignment : size;
+
+       return (void *) ((char *) hadTu + paddedSize);
+}
+
+#endif
diff --git a/ebctrl/ioc/include/hadtuqueue.h b/ebctrl/ioc/include/hadtuqueue.h
new file mode 100644 (file)
index 0000000..5f44bfc
--- /dev/null
@@ -0,0 +1,31 @@
+
+#ifndef HADTUQUEUE_H
+#define HADTUQUEUE_H
+
+#include <stddef.h>
+#include "hadtu.h"
+
+typedef struct HadTuQueueS HadTuQueue;
+
+typedef enum HadTuQueueProtE {
+       HadTuQueueProt_read,
+       HadTuQueueProt_write
+} HadTuQueueProt;
+
+void conHadTuQueue(HadTuQueue *my, void *mem, size_t size);
+void conHadTuQueue_voidP(HadTuQueue *my, void *mem);
+void desHadTuQueue(HadTuQueue *my);
+size_t HadTuQueue_sizeOf(void);
+void HadTuQueue_cntl(HadTuQueue *my, int flag);
+void HadTuQueue_clear(HadTuQueue *my);
+int HadTuQueue_invariant(const HadTuQueue *my);
+
+int HadTuQueue_empty(const HadTuQueue *my);
+size_t HadTuQueue_size(const HadTuQueue *my);
+void *HadTuQueue_alloc(const HadTuQueue *my, size_t size);
+void HadTuQueue_push(HadTuQueue *my);
+void *HadTuQueue_2voidP(const HadTuQueue *my);
+void *HadTuQueue_front(const HadTuQueue *my);
+void HadTuQueue_pop(HadTuQueue *my);
+
+#endif
diff --git a/ebctrl/ioc/include/hardware.h b/ebctrl/ioc/include/hardware.h
new file mode 100644 (file)
index 0000000..420a0dd
--- /dev/null
@@ -0,0 +1,71 @@
+
+#ifndef HARDWARE_H
+#define HARDWARE_H
+
+#include <syslog.h>
+
+typedef struct HardwareS Hardware;
+
+int readoutMain(int argc, char *argv[]);
+
+Hardware *newHardware();               /* allowed as newHardware(void) and newHardware(const char *subsystem) UFN */
+void deleteHardware(Hardware *my);
+int Hardware_inSpill(const Hardware *my);
+size_t Hardware_maxSubEvtSize(const Hardware *my);
+void Hardware_waitForTrigger(Hardware *my, void *subEvt);
+void Hardware_readout(Hardware *my, void *subEvt);
+
+static int getCards(Param *param, const char *subsystem, const char *cardtype, int *nCards, char **cards)
+{
+       int getCardsR;
+       int i;
+       char unitsS[PARAM_MAX_ARRAY_LEN][PARAM_MAX_VALUE_LEN];
+       char *units[PARAM_MAX_ARRAY_LEN];
+       int r;
+
+       for (i = 0; i < PARAM_MAX_ARRAY_LEN; i++) {
+               units[i] = unitsS[i];
+       }
+
+       if (0 > Param_getStringArray(param, subsystem, "unit", PARAM_MAX_ARRAY_LEN, &r, units) || r == 0) {
+               getCardsR = -1;
+               syslog(LOG_ERR, "Parameter %s(unit) not found, unknown list of VME modules", subsystem);
+       } else {
+               int unit;
+               int card;
+
+
+               getCardsR = 0;
+               card = 0;
+               /*= printf("units: %d\n", r); */
+               for (unit = 0; unit < r; unit++) {
+                       char ct[PARAM_MAX_VALUE_LEN];
+                       int r2;
+
+                       /*printf("before getString: %s, unit %d\n", units[unit], unit);*/
+                       if (Param_getString(param, units[unit], "cardtype", &r2, ct) || r2 == 0) {
+                               syslog(LOG_ERR, "Parameter %s(cardtype) not found", units[unit]);
+                               getCardsR = -1;
+                       } else {
+                           /*printf("before strcpy: %s: %s, unit %d\n", units[unit], ct, unit);*/
+                               if (strcmp(cardtype, ct) == 0) {
+                                       strcpy(cards[card++], units[unit]);
+                                       /*printf("strcpy: %s, unit %d\n", units[unit], unit);*/
+                               }
+                       }
+               }
+               *nCards = card;
+       }
+
+       if (0 == getCardsR) {
+               int card;
+
+               syslog(LOG_INFO, "List of matching cards for subsystem %s, cardtype %s", subsystem, cardtype);
+               for (card = 0; card < *nCards; card++) {
+                       syslog(LOG_INFO, "%s", cards[card]);
+               }
+       }
+       return getCardsR;
+}
+
+#endif
diff --git a/ebctrl/ioc/include/psxshm.h b/ebctrl/ioc/include/psxshm.h
new file mode 100644 (file)
index 0000000..d350cf0
--- /dev/null
@@ -0,0 +1,19 @@
+
+#ifndef PSXSHM_H
+#define PSXSHM_H
+
+#include <sys/types.h>
+
+typedef struct PsxShmS {
+       int fd;
+       void *addr;
+       off_t size;
+}
+
+PsxShm;
+
+PsxShm *PsxShm_open(const char *name, int oflag, mode_t mode, off_t size);
+int PsxShm_close(PsxShm *my);
+int PsxShm_unlink(const char *name);
+
+#endif
diff --git a/ebctrl/ioc/include/shmtrans.h b/ebctrl/ioc/include/shmtrans.h
new file mode 100644 (file)
index 0000000..f8548f2
--- /dev/null
@@ -0,0 +1,47 @@
+
+#ifndef SHMTRANS_H
+#define SHMTRANS_H
+
+#ifndef _POSIX_SEMAPHORES
+#error POSIX_SEMAPHORES not available on this OS
+#endif
+
+#include <limits.h>
+#include <pthread.h>
+#include <semaphore.h>
+
+
+#include "psxshm.h"
+
+#include "hadtuqueue.h"
+
+
+
+typedef struct ShmTransS {
+       char name[_POSIX_PATH_MAX];
+       PsxShm *shm;
+       HadTuQueue *rdQueue;
+       HadTuQueue *wrQueue;
+       sem_t *switchRequest;
+       sem_t *switchComplete;
+}
+
+ShmTrans;
+
+ShmTrans *ShmTrans_create(const char *name, size_t size);
+ShmTrans *ShmTrans_open(const char *name, size_t size);
+void ShmTrans_close(ShmTrans *my);
+void ShmTrans_remove(ShmTrans *my);
+
+void *ShmTrans_alloc(ShmTrans *my, size_t size);
+void *ShmTrans_tryAlloc(ShmTrans *my, size_t size);
+void ShmTrans_requestSpace(ShmTrans *my);
+void ShmTrans_send(ShmTrans *my);
+void *ShmTrans_recv(ShmTrans *my);
+void *ShmTrans_recvWhole(ShmTrans *my);
+void *ShmTrans_tryRecv(ShmTrans *my);
+void ShmTrans_requestData(ShmTrans *my);
+void ShmTrans_free(ShmTrans *my);
+void ShmTrans_freeWhole(ShmTrans *my);
+
+#endif
diff --git a/ebctrl/ioc/include/subevt.h b/ebctrl/ioc/include/subevt.h
new file mode 100644 (file)
index 0000000..d66ac29
--- /dev/null
@@ -0,0 +1,127 @@
+
+#ifndef SUBEVT_H
+#define SUBEVT_H
+
+#include <stdint.h>
+
+
+#include "hadtu.h"
+
+enum SubEvtId {
+       SubEvtId_invalid = 0,
+       SubEvtId_test1 = 1,
+       SubEvtId_slow = 2,
+       SubEvtId_test2 = 3,
+       SubEvtId_mdc = 6,
+       SubEvtId_shower = 7,
+       SubEvtId_rich = 8,
+       SubEvtId_tof = 9,
+       SubEvtId_start = 10,
+       SubEvtId_veto = 11,
+       SubEvtId_richPed = 12,
+       SubEvtId_tofTest = 400,
+       SubEvtId_trigCode = 500,
+       SubEvtId_trigInfo = 501,
+       SubEvtId_slowTest = 600
+};
+
+enum SubEvtDecoding {
+       SubEvtDecoding_8bitData = 1,
+       SubEvtDecoding_16bitData = (1 << 16) | 1,
+       SubEvtDecoding_32bitData = (2 << 16) | 1,
+       SubEvtDecoding_text = 2,
+       SubEvtDecoding_SubEvts = (3 << 16) | 3
+};
+
+#define SubEvt_hdr HadTu_hdr
+#define SubEvt_isSwapped HadTu_isSwapped
+#define SubEvt_hdrValue HadTu_hdrValue
+#define SubEvt_setHdrValue HadTu_setHdrValue
+#define SubEvt_decoding HadTu_decoding
+#define SubEvt_setDecoding HadTu_setDecoding
+#define SubEvt_alignment HadTu_alignment
+#define SubEvt_size HadTu_size
+#define SubEvt_setSize HadTu_setSize
+#define SubEvt_paddedSize HadTu_paddedSize
+#define SubEvt_begin HadTu_begin
+#define SubEvt_end HadTu_end
+#define SubEvt_next HadTu_next
+
+
+enum SubEvtIdx {
+       SubEvtIdx_size,
+       SubEvtIdx_decoding,
+       SubEvtIdx_id,
+       SubEvtIdx_trigNr,
+       SubEvtIdx_data
+};
+
+static size_t SubEvt_hdrLen(void)
+{
+       return SubEvtIdx_data;
+}
+
+static size_t SubEvt_hdrSize(void)
+{
+       return SubEvt_hdrLen() * sizeof(uint32_t);
+}
+
+static size_t SubEvt_dataSize(const void *my)
+{
+       return SubEvt_size(my) - SubEvt_hdrSize();
+}
+
+static void *SubEvt_data(const void *my)
+{
+       return (void *) ((char *) my + SubEvt_hdrSize());
+}
+
+uint32_t SubEvt_dataValue(const void *my, unsigned idx);
+char *SubEvt_2charP(const void *my);
+
+
+static uint32_t SubEvt_id(const void *my)
+{
+       return SubEvt_hdrValue(my, SubEvtIdx_id);
+}
+
+static uint32_t SubEvt_pureId(const void *my)
+{
+       return SubEvt_id(my) & 0x7fffffffUL;
+}
+
+static int SubEvt_dataError(const void *my)
+{
+       return (SubEvt_id(my) & 0x80000000UL) != 0;
+}
+
+static void SubEvt_setId(void *my, uint32_t id)
+{
+       SubEvt_setHdrValue(my, SubEvtIdx_id, id);
+}
+
+static int SubEvt_setDataError(void *my)
+{
+       SubEvt_setId(my, SubEvt_id(my) | 0x80000000UL);
+}
+
+static int SubEvt_clrDataError(void *my)
+{
+       SubEvt_setId(my, SubEvt_id(my) & ~0x80000000UL);
+}
+
+static uint32_t SubEvt_trigNr(const void *my)
+{
+       return SubEvt_hdrValue(my, SubEvtIdx_trigNr);
+}
+
+static void SubEvt_setTrigNr(void *my, uint32_t trigNr)
+{
+       SubEvt_setHdrValue(my, SubEvtIdx_trigNr, trigNr);
+}
+
+void *newSubEvt(uint32_t decoding, uint32_t id, uint32_t trigNr);
+void deleteSubEvt(void *my);
+void *SubEvt_appendData(void *my, const void *data, size_t size);
+
+#endif
diff --git a/ebctrl/ioc/include/worker.h b/ebctrl/ioc/include/worker.h
new file mode 100644 (file)
index 0000000..161d9a7
--- /dev/null
@@ -0,0 +1,50 @@
+
+#ifndef WORKER_H
+#define WORKER_H
+
+#include <limits.h>
+#include <signal.h>
+
+#include "psxshm.h"
+
+#define WORKER_MAX_NUM_STATS 550
+#define WORKER_MAX_NAME_LEN 32
+
+typedef struct StatisticS {
+       char name[WORKER_MAX_NAME_LEN];
+       unsigned long value;
+}
+
+Statistic;
+
+typedef struct WorkerS {
+       char name[_POSIX_PATH_MAX];
+       int signal0;
+       int signal1;
+       int signal2;
+       struct sigaction oldSigAction0S;
+       struct sigaction *oldSigAction0;
+       struct sigaction oldSigAction1S;
+       struct sigaction *oldSigAction1;
+       struct sigaction oldSigAction2S;
+       struct sigaction *oldSigAction2;
+       PsxShm *shm;
+       Statistic *statistics;
+       pid_t pid;
+       int isStandalone;
+}
+
+Worker;
+
+int Worker_start(const char *path, char *const argv[]);
+char *Worker_status(const char *name);
+void Worker_stop(const char *name, int timeout);
+Worker *Worker_initBegin(const char *name, void (*sigHandler) (int), int priority, int isStandalone);
+void Worker_initEnd(Worker *my);
+void Worker_fini(Worker *my);
+unsigned long *Worker_addStatistic(Worker *my, const char *name);
+void Worker_dump(Worker *my, time_t interval);
+int Worker_getStatistic(const char *name, const char *stat, unsigned long int *value);
+int Worker_setStatistic(const char *name, const char *stat, unsigned long int *value);
+
+#endif
diff --git a/ebctrl/ioc/include/xxxRecord.h b/ebctrl/ioc/include/xxxRecord.h
new file mode 100644 (file)
index 0000000..93fabce
--- /dev/null
@@ -0,0 +1,278 @@
+#include "ellLib.h"
+#include "epicsMutex.h"
+#include "link.h"
+#include "epicsTime.h"
+#include "epicsTypes.h"
+#ifndef INCxxxH
+#define INCxxxH
+typedef struct xxxRecord {
+       char            name[61]; /*Record Name*/
+       char            desc[29]; /*Descriptor*/
+       char            asg[29]; /*Access Security Group*/
+       epicsEnum16     scan;   /*Scan Mechanism*/
+       epicsEnum16     pini;   /*Process at iocInit*/
+       short           phas;   /*Scan Phase*/
+       short           evnt;   /*Event Number*/
+       short           tse;    /*Time Stamp Event*/
+       DBLINK          tsel;   /*Time Stamp Link*/
+       epicsEnum16     dtyp;   /*Device Type*/
+       short           disv;   /*Disable Value*/
+       short           disa;   /*Disable*/
+       DBLINK          sdis;   /*Scanning Disable*/
+       epicsMutexId    mlok;   /*Monitor lock*/
+       ELLLIST         mlis;   /*Monitor List*/
+       unsigned char   disp;   /*Disable putField*/
+       unsigned char   proc;   /*Force Processing*/
+       epicsEnum16     stat;   /*Alarm Status*/
+       epicsEnum16     sevr;   /*Alarm Severity*/
+       epicsEnum16     nsta;   /*New Alarm Status*/
+       epicsEnum16     nsev;   /*New Alarm Severity*/
+       epicsEnum16     acks;   /*Alarm Ack Severity*/
+       epicsEnum16     ackt;   /*Alarm Ack Transient*/
+       epicsEnum16     diss;   /*Disable Alarm Sevrty*/
+       unsigned char   lcnt;   /*Lock Count*/
+       unsigned char   pact;   /*Record active*/
+       unsigned char   putf;   /*dbPutField process*/
+       unsigned char   rpro;   /*Reprocess */
+       void            *asp;   /*Access Security Pvt*/
+       struct putNotify *ppn;  /*addr of PUTNOTIFY*/
+       struct putNotifyRecord *ppnr;   /*pputNotifyRecord*/
+       struct scan_element *spvt;      /*Scan Private*/
+       struct rset     *rset;  /*Address of RSET*/
+       struct dset     *dset;  /*DSET address*/
+       void            *dpvt;  /*Device Private*/
+       struct dbRecordType *rdes;      /*Address of dbRecordType*/
+       struct lockRecord *lset;        /*Lock Set*/
+       epicsEnum16     prio;   /*Scheduling Priority*/
+       unsigned char   tpro;   /*Trace Processing*/
+       char bkpt;      /*Break Point*/
+       unsigned char   udf;    /*Undefined*/
+       epicsTimeStamp  time;   /*Time*/
+       DBLINK          flnk;   /*Forward Process Link*/
+       double          val;    /*Current EGU Value*/
+       DBLINK          inp;    /*Input Specification*/
+       short           prec;   /*Display Precision*/
+       char            egu[16]; /*Engineering Units*/
+       float           hopr;   /*High Operating Range*/
+       float           lopr;   /*Low Operating Range*/
+       float           hihi;   /*Hihi Alarm Limit*/
+       float           lolo;   /*Lolo Alarm Limit*/
+       float           high;   /*High Alarm Limit*/
+       float           low;    /*Low Alarm Limit*/
+       epicsEnum16     hhsv;   /*Hihi Severity*/
+       epicsEnum16     llsv;   /*Lolo Severity*/
+       epicsEnum16     hsv;    /*High Severity*/
+       epicsEnum16     lsv;    /*Low Severity*/
+       double          hyst;   /*Alarm Deadband*/
+       double          adel;   /*Archive Deadband*/
+       double          mdel;   /*Monitor Deadband*/
+       double          lalm;   /*Last Value Alarmed*/
+       double          alst;   /*Last Value Archived*/
+       double          mlst;   /*Last Val Monitored*/
+} xxxRecord;
+#define xxxRecordNAME  0
+#define xxxRecordDESC  1
+#define xxxRecordASG   2
+#define xxxRecordSCAN  3
+#define xxxRecordPINI  4
+#define xxxRecordPHAS  5
+#define xxxRecordEVNT  6
+#define xxxRecordTSE   7
+#define xxxRecordTSEL  8
+#define xxxRecordDTYP  9
+#define xxxRecordDISV  10
+#define xxxRecordDISA  11
+#define xxxRecordSDIS  12
+#define xxxRecordMLOK  13
+#define xxxRecordMLIS  14
+#define xxxRecordDISP  15
+#define xxxRecordPROC  16
+#define xxxRecordSTAT  17
+#define xxxRecordSEVR  18
+#define xxxRecordNSTA  19
+#define xxxRecordNSEV  20
+#define xxxRecordACKS  21
+#define xxxRecordACKT  22
+#define xxxRecordDISS  23
+#define xxxRecordLCNT  24
+#define xxxRecordPACT  25
+#define xxxRecordPUTF  26
+#define xxxRecordRPRO  27
+#define xxxRecordASP   28
+#define xxxRecordPPN   29
+#define xxxRecordPPNR  30
+#define xxxRecordSPVT  31
+#define xxxRecordRSET  32
+#define xxxRecordDSET  33
+#define xxxRecordDPVT  34
+#define xxxRecordRDES  35
+#define xxxRecordLSET  36
+#define xxxRecordPRIO  37
+#define xxxRecordTPRO  38
+#define xxxRecordBKPT  39
+#define xxxRecordUDF   40
+#define xxxRecordTIME  41
+#define xxxRecordFLNK  42
+#define xxxRecordVAL   43
+#define xxxRecordINP   44
+#define xxxRecordPREC  45
+#define xxxRecordEGU   46
+#define xxxRecordHOPR  47
+#define xxxRecordLOPR  48
+#define xxxRecordHIHI  49
+#define xxxRecordLOLO  50
+#define xxxRecordHIGH  51
+#define xxxRecordLOW   52
+#define xxxRecordHHSV  53
+#define xxxRecordLLSV  54
+#define xxxRecordHSV   55
+#define xxxRecordLSV   56
+#define xxxRecordHYST  57
+#define xxxRecordADEL  58
+#define xxxRecordMDEL  59
+#define xxxRecordLALM  60
+#define xxxRecordALST  61
+#define xxxRecordMLST  62
+#endif /*INCxxxH*/
+#ifdef GEN_SIZE_OFFSET
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <epicsExport.h>
+static int xxxRecordSizeOffset(dbRecordType *pdbRecordType)
+{
+    xxxRecord *prec = 0;
+  pdbRecordType->papFldDes[0]->size=sizeof(prec->name);
+  pdbRecordType->papFldDes[0]->offset=(short)((char *)&prec->name - (char *)prec);
+  pdbRecordType->papFldDes[1]->size=sizeof(prec->desc);
+  pdbRecordType->papFldDes[1]->offset=(short)((char *)&prec->desc - (char *)prec);
+  pdbRecordType->papFldDes[2]->size=sizeof(prec->asg);
+  pdbRecordType->papFldDes[2]->offset=(short)((char *)&prec->asg - (char *)prec);
+  pdbRecordType->papFldDes[3]->size=sizeof(prec->scan);
+  pdbRecordType->papFldDes[3]->offset=(short)((char *)&prec->scan - (char *)prec);
+  pdbRecordType->papFldDes[4]->size=sizeof(prec->pini);
+  pdbRecordType->papFldDes[4]->offset=(short)((char *)&prec->pini - (char *)prec);
+  pdbRecordType->papFldDes[5]->size=sizeof(prec->phas);
+  pdbRecordType->papFldDes[5]->offset=(short)((char *)&prec->phas - (char *)prec);
+  pdbRecordType->papFldDes[6]->size=sizeof(prec->evnt);
+  pdbRecordType->papFldDes[6]->offset=(short)((char *)&prec->evnt - (char *)prec);
+  pdbRecordType->papFldDes[7]->size=sizeof(prec->tse);
+  pdbRecordType->papFldDes[7]->offset=(short)((char *)&prec->tse - (char *)prec);
+  pdbRecordType->papFldDes[8]->size=sizeof(prec->tsel);
+  pdbRecordType->papFldDes[8]->offset=(short)((char *)&prec->tsel - (char *)prec);
+  pdbRecordType->papFldDes[9]->size=sizeof(prec->dtyp);
+  pdbRecordType->papFldDes[9]->offset=(short)((char *)&prec->dtyp - (char *)prec);
+  pdbRecordType->papFldDes[10]->size=sizeof(prec->disv);
+  pdbRecordType->papFldDes[10]->offset=(short)((char *)&prec->disv - (char *)prec);
+  pdbRecordType->papFldDes[11]->size=sizeof(prec->disa);
+  pdbRecordType->papFldDes[11]->offset=(short)((char *)&prec->disa - (char *)prec);
+  pdbRecordType->papFldDes[12]->size=sizeof(prec->sdis);
+  pdbRecordType->papFldDes[12]->offset=(short)((char *)&prec->sdis - (char *)prec);
+  pdbRecordType->papFldDes[13]->size=sizeof(prec->mlok);
+  pdbRecordType->papFldDes[13]->offset=(short)((char *)&prec->mlok - (char *)prec);
+  pdbRecordType->papFldDes[14]->size=sizeof(prec->mlis);
+  pdbRecordType->papFldDes[14]->offset=(short)((char *)&prec->mlis - (char *)prec);
+  pdbRecordType->papFldDes[15]->size=sizeof(prec->disp);
+  pdbRecordType->papFldDes[15]->offset=(short)((char *)&prec->disp - (char *)prec);
+  pdbRecordType->papFldDes[16]->size=sizeof(prec->proc);
+  pdbRecordType->papFldDes[16]->offset=(short)((char *)&prec->proc - (char *)prec);
+  pdbRecordType->papFldDes[17]->size=sizeof(prec->stat);
+  pdbRecordType->papFldDes[17]->offset=(short)((char *)&prec->stat - (char *)prec);
+  pdbRecordType->papFldDes[18]->size=sizeof(prec->sevr);
+  pdbRecordType->papFldDes[18]->offset=(short)((char *)&prec->sevr - (char *)prec);
+  pdbRecordType->papFldDes[19]->size=sizeof(prec->nsta);
+  pdbRecordType->papFldDes[19]->offset=(short)((char *)&prec->nsta - (char *)prec);
+  pdbRecordType->papFldDes[20]->size=sizeof(prec->nsev);
+  pdbRecordType->papFldDes[20]->offset=(short)((char *)&prec->nsev - (char *)prec);
+  pdbRecordType->papFldDes[21]->size=sizeof(prec->acks);
+  pdbRecordType->papFldDes[21]->offset=(short)((char *)&prec->acks - (char *)prec);
+  pdbRecordType->papFldDes[22]->size=sizeof(prec->ackt);
+  pdbRecordType->papFldDes[22]->offset=(short)((char *)&prec->ackt - (char *)prec);
+  pdbRecordType->papFldDes[23]->size=sizeof(prec->diss);
+  pdbRecordType->papFldDes[23]->offset=(short)((char *)&prec->diss - (char *)prec);
+  pdbRecordType->papFldDes[24]->size=sizeof(prec->lcnt);
+  pdbRecordType->papFldDes[24]->offset=(short)((char *)&prec->lcnt - (char *)prec);
+  pdbRecordType->papFldDes[25]->size=sizeof(prec->pact);
+  pdbRecordType->papFldDes[25]->offset=(short)((char *)&prec->pact - (char *)prec);
+  pdbRecordType->papFldDes[26]->size=sizeof(prec->putf);
+  pdbRecordType->papFldDes[26]->offset=(short)((char *)&prec->putf - (char *)prec);
+  pdbRecordType->papFldDes[27]->size=sizeof(prec->rpro);
+  pdbRecordType->papFldDes[27]->offset=(short)((char *)&prec->rpro - (char *)prec);
+  pdbRecordType->papFldDes[28]->size=sizeof(prec->asp);
+  pdbRecordType->papFldDes[28]->offset=(short)((char *)&prec->asp - (char *)prec);
+  pdbRecordType->papFldDes[29]->size=sizeof(prec->ppn);
+  pdbRecordType->papFldDes[29]->offset=(short)((char *)&prec->ppn - (char *)prec);
+  pdbRecordType->papFldDes[30]->size=sizeof(prec->ppnr);
+  pdbRecordType->papFldDes[30]->offset=(short)((char *)&prec->ppnr - (char *)prec);
+  pdbRecordType->papFldDes[31]->size=sizeof(prec->spvt);
+  pdbRecordType->papFldDes[31]->offset=(short)((char *)&prec->spvt - (char *)prec);
+  pdbRecordType->papFldDes[32]->size=sizeof(prec->rset);
+  pdbRecordType->papFldDes[32]->offset=(short)((char *)&prec->rset - (char *)prec);
+  pdbRecordType->papFldDes[33]->size=sizeof(prec->dset);
+  pdbRecordType->papFldDes[33]->offset=(short)((char *)&prec->dset - (char *)prec);
+  pdbRecordType->papFldDes[34]->size=sizeof(prec->dpvt);
+  pdbRecordType->papFldDes[34]->offset=(short)((char *)&prec->dpvt - (char *)prec);
+  pdbRecordType->papFldDes[35]->size=sizeof(prec->rdes);
+  pdbRecordType->papFldDes[35]->offset=(short)((char *)&prec->rdes - (char *)prec);
+  pdbRecordType->papFldDes[36]->size=sizeof(prec->lset);
+  pdbRecordType->papFldDes[36]->offset=(short)((char *)&prec->lset - (char *)prec);
+  pdbRecordType->papFldDes[37]->size=sizeof(prec->prio);
+  pdbRecordType->papFldDes[37]->offset=(short)((char *)&prec->prio - (char *)prec);
+  pdbRecordType->papFldDes[38]->size=sizeof(prec->tpro);
+  pdbRecordType->papFldDes[38]->offset=(short)((char *)&prec->tpro - (char *)prec);
+  pdbRecordType->papFldDes[39]->size=sizeof(prec->bkpt);
+  pdbRecordType->papFldDes[39]->offset=(short)((char *)&prec->bkpt - (char *)prec);
+  pdbRecordType->papFldDes[40]->size=sizeof(prec->udf);
+  pdbRecordType->papFldDes[40]->offset=(short)((char *)&prec->udf - (char *)prec);
+  pdbRecordType->papFldDes[41]->size=sizeof(prec->time);
+  pdbRecordType->papFldDes[41]->offset=(short)((char *)&prec->time - (char *)prec);
+  pdbRecordType->papFldDes[42]->size=sizeof(prec->flnk);
+  pdbRecordType->papFldDes[42]->offset=(short)((char *)&prec->flnk - (char *)prec);
+  pdbRecordType->papFldDes[43]->size=sizeof(prec->val);
+  pdbRecordType->papFldDes[43]->offset=(short)((char *)&prec->val - (char *)prec);
+  pdbRecordType->papFldDes[44]->size=sizeof(prec->inp);
+  pdbRecordType->papFldDes[44]->offset=(short)((char *)&prec->inp - (char *)prec);
+  pdbRecordType->papFldDes[45]->size=sizeof(prec->prec);
+  pdbRecordType->papFldDes[45]->offset=(short)((char *)&prec->prec - (char *)prec);
+  pdbRecordType->papFldDes[46]->size=sizeof(prec->egu);
+  pdbRecordType->papFldDes[46]->offset=(short)((char *)&prec->egu - (char *)prec);
+  pdbRecordType->papFldDes[47]->size=sizeof(prec->hopr);
+  pdbRecordType->papFldDes[47]->offset=(short)((char *)&prec->hopr - (char *)prec);
+  pdbRecordType->papFldDes[48]->size=sizeof(prec->lopr);
+  pdbRecordType->papFldDes[48]->offset=(short)((char *)&prec->lopr - (char *)prec);
+  pdbRecordType->papFldDes[49]->size=sizeof(prec->hihi);
+  pdbRecordType->papFldDes[49]->offset=(short)((char *)&prec->hihi - (char *)prec);
+  pdbRecordType->papFldDes[50]->size=sizeof(prec->lolo);
+  pdbRecordType->papFldDes[50]->offset=(short)((char *)&prec->lolo - (char *)prec);
+  pdbRecordType->papFldDes[51]->size=sizeof(prec->high);
+  pdbRecordType->papFldDes[51]->offset=(short)((char *)&prec->high - (char *)prec);
+  pdbRecordType->papFldDes[52]->size=sizeof(prec->low);
+  pdbRecordType->papFldDes[52]->offset=(short)((char *)&prec->low - (char *)prec);
+  pdbRecordType->papFldDes[53]->size=sizeof(prec->hhsv);
+  pdbRecordType->papFldDes[53]->offset=(short)((char *)&prec->hhsv - (char *)prec);
+  pdbRecordType->papFldDes[54]->size=sizeof(prec->llsv);
+  pdbRecordType->papFldDes[54]->offset=(short)((char *)&prec->llsv - (char *)prec);
+  pdbRecordType->papFldDes[55]->size=sizeof(prec->hsv);
+  pdbRecordType->papFldDes[55]->offset=(short)((char *)&prec->hsv - (char *)prec);
+  pdbRecordType->papFldDes[56]->size=sizeof(prec->lsv);
+  pdbRecordType->papFldDes[56]->offset=(short)((char *)&prec->lsv - (char *)prec);
+  pdbRecordType->papFldDes[57]->size=sizeof(prec->hyst);
+  pdbRecordType->papFldDes[57]->offset=(short)((char *)&prec->hyst - (char *)prec);
+  pdbRecordType->papFldDes[58]->size=sizeof(prec->adel);
+  pdbRecordType->papFldDes[58]->offset=(short)((char *)&prec->adel - (char *)prec);
+  pdbRecordType->papFldDes[59]->size=sizeof(prec->mdel);
+  pdbRecordType->papFldDes[59]->offset=(short)((char *)&prec->mdel - (char *)prec);
+  pdbRecordType->papFldDes[60]->size=sizeof(prec->lalm);
+  pdbRecordType->papFldDes[60]->offset=(short)((char *)&prec->lalm - (char *)prec);
+  pdbRecordType->papFldDes[61]->size=sizeof(prec->alst);
+  pdbRecordType->papFldDes[61]->offset=(short)((char *)&prec->alst - (char *)prec);
+  pdbRecordType->papFldDes[62]->size=sizeof(prec->mlst);
+  pdbRecordType->papFldDes[62]->offset=(short)((char *)&prec->mlst - (char *)prec);
+    pdbRecordType->rec_size = sizeof(*prec);
+    return(0);
+}
+epicsExportRegistrar(xxxRecordSizeOffset);
+#ifdef __cplusplus
+}
+#endif
+#endif /*GEN_SIZE_OFFSET*/
diff --git a/ebctrl/ioc/iocBoot/Makefile b/ebctrl/ioc/iocBoot/Makefile
new file mode 100644 (file)
index 0000000..d097ef0
--- /dev/null
@@ -0,0 +1,6 @@
+TOP = ..
+include $(TOP)/configure/CONFIG
+DIRS += $(wildcard *ioc*)
+DIRS += $(wildcard as*)
+include $(EPICS_BASE)/configure/RULES_DIRS
+
diff --git a/ebctrl/ioc/iocBoot/iocebctrl/Makefile b/ebctrl/ioc/iocBoot/iocebctrl/Makefile
new file mode 100644 (file)
index 0000000..cec9156
--- /dev/null
@@ -0,0 +1,5 @@
+TOP = ../..
+include $(TOP)/configure/CONFIG
+ARCH = linux-x86
+TARGETS = envPaths
+include $(TOP)/configure/RULES.ioc
diff --git a/ebctrl/ioc/iocBoot/iocebctrl/README b/ebctrl/ioc/iocBoot/iocebctrl/README
new file mode 100644 (file)
index 0000000..65c4835
--- /dev/null
@@ -0,0 +1,9 @@
+To start the ioc from this directory execute the command
+    ../../bin/linux-x86/<appname> st.cmd
+
+Alternatively make the st.cmd file directly executable with
+    chmod +x st.cmd
+and check the executable name on the first line of the st.cmd file 
+
+You may need to change the name of the .dbd file given in the
+st.cmd's dbLoadDatabase() command before starting the ioc.
diff --git a/ebctrl/ioc/iocBoot/iocebctrl/envPaths b/ebctrl/ioc/iocBoot/iocebctrl/envPaths
new file mode 100644 (file)
index 0000000..dc00b19
--- /dev/null
@@ -0,0 +1,4 @@
+epicsEnvSet(ARCH,"linux-x86")
+epicsEnvSet(IOC,"iocebctrl")
+epicsEnvSet(TOP,"/home/scs/play_2/ebctrl/ioc")
+epicsEnvSet(EPICS_BASE,"/home/scs/base-3.14.9")
diff --git a/ebctrl/ioc/iocBoot/iocebctrl/st.cmd b/ebctrl/ioc/iocBoot/iocebctrl/st.cmd
new file mode 100644 (file)
index 0000000..25e36ea
--- /dev/null
@@ -0,0 +1,27 @@
+#!../../bin/linux-x86/ebctrl
+
+## You may have to change ebctrl to something else
+## everywhere it appears in this file
+
+< envPaths
+
+cd ${TOP}
+
+## Register all support components
+dbLoadDatabase("dbd/ebctrl.dbd")
+ebctrl_registerRecordDeviceDriver(pdbbase)
+
+## Load record instances
+dbLoadTemplate "db/userHost.substitutions"
+dbLoadRecords("db/evtbuild.db","eb=eb01")
+
+## Set this to see messages from mySub
+var evtbuildDebug 0
+var genrunidDebug 1
+var writerunidDebug 1
+
+cd ${TOP}/iocBoot/${IOC}
+iocInit()
+
+## Start any sequence programs
+#seq sncExample,"user=scsHost"