menu(waveformPOST) {
    choice(waveformPOST_Always, "Always")
    choice(waveformPOST_OnChange, "On Change")
}
menu(stringinPOST) {
    choice(stringinPOST_OnChange, "On Change")
    choice(stringinPOST_Always, "Always")
}
menu(menuOmsl) {
    choice(menuOmslsupervisory, "supervisory")
    choice(menuOmslclosed_loop, "closed_loop")
}
menu(aSubLFLG) {
    choice(aSubLFLG_IGNORE, "IGNORE")
    choice(aSubLFLG_READ, "READ")
}
menu(dfanoutSELM) {
    choice(dfanoutSELM_All, "All")
    choice(dfanoutSELM_Specified, "Specified")
    choice(dfanoutSELM_Mask, "Mask")
}
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(selSELM) {
    choice(selSELM_Specified, "Specified")
    choice(selSELM_High_Signal, "High Signal")
    choice(selSELM_Low_Signal, "Low Signal")
    choice(selSELM_Median_Signal, "Median Signal")
}
menu(menuPini) {
    choice(menuPiniNO, "NO")
    choice(menuPiniYES, "YES")
    choice(menuPiniRUN, "RUN")
    choice(menuPiniRUNNING, "RUNNING")
    choice(menuPiniPAUSE, "PAUSE")
    choice(menuPiniPAUSED, "PAUSED")
}
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(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(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(seqSELM) {
    choice(seqSELM_All, "All")
    choice(seqSELM_Specified, "Specified")
    choice(seqSELM_Mask, "Mask")
}
menu(calcoutDOPT) {
    choice(calcoutDOPT_Use_VAL, "Use CALC")
    choice(calcoutDOPT_Use_OVAL, "Use OCAL")
}
menu(menuSimm) {
    choice(menuSimmNO, "NO")
    choice(menuSimmYES, "YES")
    choice(menuSimmRAW, "RAW")
}
menu(menuYesNo) {
    choice(menuYesNoNO, "NO")
    choice(menuYesNoYES, "YES")
}
menu(aaoPOST) {
    choice(aaoPOST_Always, "Always")
    choice(aaoPOST_OnChange, "On Change")
}
menu(fanoutSELM) {
    choice(fanoutSELM_All, "All")
    choice(fanoutSELM_Specified, "Specified")
    choice(fanoutSELM_Mask, "Mask")
}
menu(menuAlarmSevr) {
    choice(menuAlarmSevrNO_ALARM, "NO_ALARM")
    choice(menuAlarmSevrMINOR, "MINOR")
    choice(menuAlarmSevrMAJOR, "MAJOR")
    choice(menuAlarmSevrINVALID, "INVALID")
}
menu(histogramCMD) {
    choice(histogramCMD_Read, "Read")
    choice(histogramCMD_Clear, "Clear")
    choice(histogramCMD_Start, "Start")
    choice(histogramCMD_Stop, "Stop")
}
menu(menuPost) {
    choice(menuPost_OnChange, "On Change")
    choice(menuPost_Always, "Always")
}
menu(aoOIF) {
    choice(aoOIF_Full, "Full")
    choice(aoOIF_Incremental, "Incremental")
}
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(menuFtype) {
    choice(menuFtypeSTRING, "STRING")
    choice(menuFtypeCHAR, "CHAR")
    choice(menuFtypeUCHAR, "UCHAR")
    choice(menuFtypeSHORT, "SHORT")
    choice(menuFtypeUSHORT, "USHORT")
    choice(menuFtypeLONG, "LONG")
    choice(menuFtypeULONG, "ULONG")
    choice(menuFtypeINT64, "INT64")
    choice(menuFtypeUINT64, "UINT64")
    choice(menuFtypeFLOAT, "FLOAT")
    choice(menuFtypeDOUBLE, "DOUBLE")
    choice(menuFtypeENUM, "ENUM")
}
menu(aaiPOST) {
    choice(aaiPOST_Always, "Always")
    choice(aaiPOST_OnChange, "On Change")
}
menu(stringoutPOST) {
    choice(stringoutPOST_OnChange, "On Change")
    choice(stringoutPOST_Always, "Always")
}
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(bufferingALG) {
    choice(bufferingALG_FIFO, "FIFO Buffer")
    choice(bufferingALG_LIFO, "LIFO Buffer")
}
menu(menuPriority) {
    choice(menuPriorityLOW, "LOW")
    choice(menuPriorityMEDIUM, "MEDIUM")
    choice(menuPriorityHIGH, "HIGH")
}
menu(aSubEFLG) {
    choice(aSubEFLG_NEVER, "NEVER")
    choice(aSubEFLG_ON_CHANGE, "ON CHANGE")
    choice(aSubEFLG_ALWAYS, "ALWAYS")
}
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")
}
recordtype(aai) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct aaiRecord;
    %typedef struct aaidset {
    %    dset common; /*init_record returns: (-1,0,AAI_DEVINIT_PASS1)=>(failure,success,callback)*/
    %    long (*read_aai)(struct aaiRecord *prec); /*returns: (-1,0)=>(failure,success)*/
    %} aaidset;
    %#define HAS_aaidset
    %#define AAI_DEVINIT_PASS1 2
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        size(61)
        special(SPC_NOMOD)
    }
    field(DESC, DBF_STRING) {
        prompt("Descriptor")
        size(41)
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        special(SPC_AS)
        size(29)
        prompt("Access Security Group")
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        menu(menuScan)
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scan Mechanism")
        special(SPC_SCAN)
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        interest(1)
        menu(menuPini)
        promptgroup("20 - Scan")
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
    }
    field(EVNT, DBF_STRING) {
        special(SPC_SCAN)
        size(40)
        prompt("Event Name")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSEL, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        promptgroup("10 - Common")
        interest(1)
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        prompt("Monitor lock")
        special(SPC_NOMOD)
        extra("epicsMutexId        mlok")
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        prompt("Monitor List")
        special(SPC_NOMOD)
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        extra("ELLLIST             bklnk")
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        interest(3)
        pp(TRUE)
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        initial("UDF")
        special(SPC_NOMOD)
        prompt("Alarm Status")
    }
    field(SEVR, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Severity")
        menu(menuAlarmSevr)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(NSTA, DBF_MENU) {
        prompt("New Alarm Status")
        special(SPC_NOMOD)
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        menu(menuYesNo)
        interest(2)
        promptgroup("70 - Alarm")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Record active")
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("dbPutField process")
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        extra("struct asgMember    *asp")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        extra("struct processNotify *ppn")
        special(SPC_NOMOD)
        prompt("pprocessNotify")
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        extra("struct processNotifyRecord *ppnr")
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        extra("struct scan_element *spvt")
        special(SPC_NOMOD)
        prompt("Scan Private")
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
    }
    field(DSET, DBF_NOACCESS) {
        extra("unambiguous_dset    *dset")
        special(SPC_NOMOD)
        prompt("DSET address")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        extra("void                *dpvt")
        prompt("Device Private")
        special(SPC_NOMOD)
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        prompt("Lock Set")
        special(SPC_NOMOD)
        extra("struct lockRecord   *lset")
    }
    field(PRIO, DBF_MENU) {
        promptgroup("20 - Scan")
        menu(menuPriority)
        interest(1)
        prompt("Scheduling Priority")
        special(SPC_SCAN)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("10 - Common")
        initial("1")
        prompt("Undefined")
    }
    field(UDFS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        prompt("Time Tag")
        special(SPC_NOMOD)
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(VAL, DBF_NOACCESS) {
        pp(TRUE)
        extra("void *		val")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Value")
    }
    field(PREC, DBF_SHORT) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Display Precision")
    }
    field(INP, DBF_INLINK) {
        prompt("Input Specification")
        promptgroup("40 - Input")
        interest(1)
    }
    field(EGU, DBF_STRING) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Engineering Units")
        size(16)
    }
    field(HOPR, DBF_DOUBLE) {
        prompt("High Operating Range")
        prop(YES)
        promptgroup("80 - Display")
        interest(1)
    }
    field(LOPR, DBF_DOUBLE) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Low Operating Range")
        prop(YES)
    }
    field(NELM, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Number of Elements")
        interest(1)
        promptgroup("30 - Action")
    }
    field(FTVL, DBF_MENU) {
        promptgroup("30 - Action")
        menu(menuFtype)
        interest(1)
        prompt("Field Type of Value")
        special(SPC_NOMOD)
    }
    field(NORD, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Number elements read")
    }
    field(BPTR, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Buffer Pointer")
        extra("void *		bptr")
        interest(4)
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        interest(1)
        promptgroup("90 - Simulate")
    }
    field(SIMM, DBF_MENU) {
        prompt("Simulation Mode")
        special(SPC_MOD)
        interest(1)
        menu(menuYesNo)
    }
    field(SIMS, DBF_MENU) {
        prompt("Simulation Mode Severity")
        interest(2)
        menu(menuAlarmSevr)
        promptgroup("90 - Simulate")
    }
    field(SIOL, DBF_INLINK) {
        prompt("Simulation Input Link")
        interest(1)
        promptgroup("90 - Simulate")
    }
    field(OLDSIMM, DBF_MENU) {
        menu(menuSimm)
        interest(4)
        special(SPC_NOMOD)
        prompt("Prev. Simulation Mode")
    }
    field(SSCN, DBF_MENU) {
        prompt("Sim. Mode Scan")
        initial("65535")
        promptgroup("90 - Simulate")
        interest(1)
        menu(menuScan)
    }
    field(SDLY, DBF_DOUBLE) {
        interest(2)
        promptgroup("90 - Simulate")
        initial("-1.0")
        prompt("Sim. Mode Async Delay")
    }
    field(SIMPVT, DBF_NOACCESS) {
        extra("epicsCallback            *simpvt")
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        interest(4)
    }
    field(MPST, DBF_MENU) {
        interest(1)
        menu(aaiPOST)
        promptgroup("80 - Display")
        prompt("Post Value Monitors")
    }
    field(APST, DBF_MENU) {
        interest(1)
        menu(aaiPOST)
        promptgroup("80 - Display")
        prompt("Post Archive Monitors")
    }
    field(HASH, DBF_ULONG) {
        prompt("Hash of OnChange data.")
        interest(3)
    }
}
device(aai, CONSTANT, devAaiSoft, "Soft Channel")
recordtype(stringout) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct stringoutRecord;
    %typedef struct stringoutdset {
    %    dset common; /*init_record returns: (-1,0)=>(failure,success)*/
    %    long (*write_stringout)(struct stringoutRecord *prec); /*(-1,0)=>(failure,success)*/
    %} stringoutdset;
    %#define HAS_stringoutdset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        size(61)
        special(SPC_NOMOD)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Descriptor")
        size(41)
    }
    field(ASG, DBF_STRING) {
        size(29)
        special(SPC_AS)
        prompt("Access Security Group")
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        interest(1)
        menu(menuScan)
        promptgroup("20 - Scan")
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPini)
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(EVNT, DBF_STRING) {
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSE, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        prompt("Time Stamp Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        interest(1)
        promptgroup("10 - Common")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor lock")
        extra("epicsMutexId        mlok")
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        special(SPC_NOMOD)
        prompt("Monitor List")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        extra("ELLLIST             bklnk")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        interest(3)
        pp(TRUE)
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        prompt("Alarm Status")
        special(SPC_NOMOD)
        initial("UDF")
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Severity")
    }
    field(AMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        prompt("New Alarm Status")
        special(SPC_NOMOD)
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
        interest(2)
        menu(menuAlarmSevr)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        promptgroup("70 - Alarm")
        menu(menuYesNo)
        interest(2)
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        prompt("Lock Count")
        special(SPC_NOMOD)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Record active")
    }
    field(PUTF, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("dbPutField process")
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Reprocess ")
    }
    field(ASP, DBF_NOACCESS) {
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        extra("struct processNotify *ppn")
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        prompt("Scan Private")
        special(SPC_NOMOD)
        extra("struct scan_element *spvt")
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
    }
    field(DSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("DSET address")
        extra("unambiguous_dset    *dset")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        extra("void                *dpvt")
        special(SPC_NOMOD)
        prompt("Device Private")
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
        extra("struct dbRecordType *rdes")
    }
    field(LSET, DBF_NOACCESS) {
        prompt("Lock Set")
        special(SPC_NOMOD)
        extra("struct lockRecord   *lset")
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scheduling Priority")
        promptgroup("20 - Scan")
        menu(menuPriority)
        interest(1)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        prompt("Break Point")
        special(SPC_NOMOD)
        extra("epicsUInt8          bkpt")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        initial("1")
        prompt("Undefined")
        pp(TRUE)
        interest(1)
        promptgroup("10 - Common")
    }
    field(UDFS, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
    }
    field(TIME, DBF_NOACCESS) {
        extra("epicsTimeStamp      time")
        prompt("Time")
        special(SPC_NOMOD)
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        prompt("Time Tag")
        special(SPC_NOMOD)
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Forward Process Link")
    }
    field(VAL, DBF_STRING) {
        asl(ASL0)
        size(40)
        prompt("Current Value")
        pp(TRUE)
        promptgroup("50 - Output")
    }
    field(OVAL, DBF_STRING) {
        interest(3)
        special(SPC_NOMOD)
        size(40)
        prompt("Previous Value")
    }
    field(DOL, DBF_INLINK) {
        prompt("Desired Output Link")
        promptgroup("40 - Input")
        interest(1)
    }
    field(OMSL, DBF_MENU) {
        promptgroup("50 - Output")
        menu(menuOmsl)
        interest(1)
        prompt("Output Mode Select")
    }
    field(OUT, DBF_OUTLINK) {
        interest(1)
        promptgroup("50 - Output")
        prompt("Output Specification")
    }
    field(MPST, DBF_MENU) {
        interest(1)
        menu(stringoutPOST)
        promptgroup("80 - Display")
        prompt("Post Value Monitors")
    }
    field(APST, DBF_MENU) {
        interest(1)
        menu(stringoutPOST)
        promptgroup("80 - Display")
        prompt("Post Archive Monitors")
    }
    field(SIOL, DBF_OUTLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Simulation Output Link")
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        interest(1)
        promptgroup("90 - Simulate")
    }
    field(SIMM, DBF_MENU) {
        interest(1)
        menu(menuYesNo)
        prompt("Simulation Mode")
        special(SPC_MOD)
    }
    field(SIMS, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        promptgroup("90 - Simulate")
        prompt("Simulation Mode Severity")
    }
    field(OLDSIMM, DBF_MENU) {
        interest(4)
        menu(menuSimm)
        special(SPC_NOMOD)
        prompt("Prev. Simulation Mode")
    }
    field(SSCN, DBF_MENU) {
        menu(menuScan)
        interest(1)
        promptgroup("90 - Simulate")
        initial("65535")
        prompt("Sim. Mode Scan")
    }
    field(SDLY, DBF_DOUBLE) {
        prompt("Sim. Mode Async Delay")
        initial("-1.0")
        promptgroup("90 - Simulate")
        interest(2)
    }
    field(SIMPVT, DBF_NOACCESS) {
        extra("epicsCallback            *simpvt")
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        interest(4)
    }
    field(IVOA, DBF_MENU) {
        menu(menuIvoa)
        interest(2)
        promptgroup("50 - Output")
        prompt("INVALID output action")
    }
    field(IVOV, DBF_STRING) {
        promptgroup("50 - Output")
        interest(2)
        size(40)
        prompt("INVALID output value")
    }
}
device(stringout, CONSTANT, devSoSoft, "Soft Channel")
device(stringout, CONSTANT, devSoSoftCallback, "Async Soft Channel")
device(stringout, INST_IO, devSoStdio, "stdio")
recordtype(fanout) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        size(61)
        special(SPC_NOMOD)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Descriptor")
        size(41)
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        special(SPC_AS)
        size(29)
        prompt("Access Security Group")
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        menu(menuScan)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        menu(menuPini)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(PHAS, DBF_SHORT) {
        special(SPC_SCAN)
        prompt("Scan Phase")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(EVNT, DBF_STRING) {
        interest(1)
        promptgroup("20 - Scan")
        size(40)
        special(SPC_SCAN)
        prompt("Event Name")
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSEL, DBF_INLINK) {
        prompt("Time Stamp Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(DTYP, DBF_DEVICE) {
        promptgroup("10 - Common")
        interest(1)
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor lock")
        extra("epicsMutexId        mlok")
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        prompt("Monitor List")
        special(SPC_NOMOD)
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        extra("ELLLIST             bklnk")
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        interest(3)
        pp(TRUE)
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        prompt("Alarm Status")
        special(SPC_NOMOD)
        initial("UDF")
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        prompt("New Alarm Status")
        special(SPC_NOMOD)
        interest(2)
        menu(menuAlarmStat)
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(ACKS, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
    }
    field(ACKT, DBF_MENU) {
        interest(2)
        menu(menuYesNo)
        promptgroup("70 - Alarm")
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        prompt("Lock Count")
        special(SPC_NOMOD)
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        prompt("dbPutField process")
        special(SPC_NOMOD)
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        extra("struct processNotify *ppn")
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        prompt("Scan Private")
        special(SPC_NOMOD)
        extra("struct scan_element *spvt")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
    }
    field(DSET, DBF_NOACCESS) {
        prompt("DSET address")
        special(SPC_NOMOD)
        extra("unambiguous_dset    *dset")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        prompt("Device Private")
        special(SPC_NOMOD)
        extra("void                *dpvt")
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Lock Set")
        extra("struct lockRecord   *lset")
    }
    field(PRIO, DBF_MENU) {
        prompt("Scheduling Priority")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        extra("epicsUInt8          bkpt")
        prompt("Break Point")
        special(SPC_NOMOD)
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        prompt("Undefined")
        initial("1")
        promptgroup("10 - Common")
        pp(TRUE)
        interest(1)
    }
    field(UDFS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(VAL, DBF_LONG) {
        pp(TRUE)
        prompt("Used to trigger")
        asl(ASL0)
    }
    field(SELM, DBF_MENU) {
        prompt("Select Mechanism")
        promptgroup("30 - Action")
        interest(1)
        menu(fanoutSELM)
    }
    field(SELN, DBF_USHORT) {
        prompt("Link Selection")
        initial("1")
        interest(1)
    }
    field(SELL, DBF_INLINK) {
        prompt("Link Selection Loc")
        promptgroup("30 - Action")
        interest(1)
    }
    field(OFFS, DBF_SHORT) {
        initial("0")
        prompt("Offset for Specified")
        interest(1)
        promptgroup("30 - Action")
    }
    field(SHFT, DBF_SHORT) {
        prompt("Shift for Mask mode")
        initial("-1")
        promptgroup("30 - Action")
        interest(1)
    }
    field(LNK0, DBF_FWDLINK) {
        prompt("Forward Link 0")
        promptgroup("51 - Output 0-7")
        interest(1)
    }
    field(LNK1, DBF_FWDLINK) {
        prompt("Forward Link 1")
        promptgroup("51 - Output 0-7")
        interest(1)
    }
    field(LNK2, DBF_FWDLINK) {
        prompt("Forward Link 2")
        promptgroup("51 - Output 0-7")
        interest(1)
    }
    field(LNK3, DBF_FWDLINK) {
        prompt("Forward Link 3")
        promptgroup("51 - Output 0-7")
        interest(1)
    }
    field(LNK4, DBF_FWDLINK) {
        interest(1)
        promptgroup("51 - Output 0-7")
        prompt("Forward Link 4")
    }
    field(LNK5, DBF_FWDLINK) {
        promptgroup("51 - Output 0-7")
        interest(1)
        prompt("Forward Link 5")
    }
    field(LNK6, DBF_FWDLINK) {
        prompt("Forward Link 6")
        promptgroup("51 - Output 0-7")
        interest(1)
    }
    field(LNK7, DBF_FWDLINK) {
        promptgroup("51 - Output 0-7")
        interest(1)
        prompt("Forward Link 7")
    }
    field(LNK8, DBF_FWDLINK) {
        promptgroup("52 - Output 8-F")
        interest(1)
        prompt("Forward Link 8")
    }
    field(LNK9, DBF_FWDLINK) {
        prompt("Forward Link 9")
        promptgroup("52 - Output 8-F")
        interest(1)
    }
    field(LNKA, DBF_FWDLINK) {
        promptgroup("52 - Output 8-F")
        interest(1)
        prompt("Forward Link 10")
    }
    field(LNKB, DBF_FWDLINK) {
        prompt("Forward Link 11")
        interest(1)
        promptgroup("52 - Output 8-F")
    }
    field(LNKC, DBF_FWDLINK) {
        promptgroup("52 - Output 8-F")
        interest(1)
        prompt("Forward Link 12")
    }
    field(LNKD, DBF_FWDLINK) {
        promptgroup("52 - Output 8-F")
        interest(1)
        prompt("Forward Link 13")
    }
    field(LNKE, DBF_FWDLINK) {
        prompt("Forward Link 14")
        interest(1)
        promptgroup("52 - Output 8-F")
    }
    field(LNKF, DBF_FWDLINK) {
        prompt("Forward Link 15")
        interest(1)
        promptgroup("52 - Output 8-F")
    }
}
recordtype(compress) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    field(NAME, DBF_STRING) {
        special(SPC_NOMOD)
        size(61)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        size(41)
        prompt("Descriptor")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        special(SPC_AS)
        size(29)
        prompt("Access Security Group")
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        promptgroup("20 - Scan")
        interest(1)
        menu(menuScan)
    }
    field(PINI, DBF_MENU) {
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPini)
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        special(SPC_SCAN)
        prompt("Scan Phase")
    }
    field(EVNT, DBF_STRING) {
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSE, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        prompt("Time Stamp Link")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(DTYP, DBF_DEVICE) {
        interest(1)
        promptgroup("10 - Common")
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        prompt("Disable Value")
        initial("1")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(MLOK, DBF_NOACCESS) {
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             mlis")
        prompt("Monitor List")
        special(SPC_NOMOD)
    }
    field(BKLNK, DBF_NOACCESS) {
        extra("ELLLIST             bklnk")
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        interest(3)
        pp(TRUE)
    }
    field(STAT, DBF_MENU) {
        initial("UDF")
        special(SPC_NOMOD)
        prompt("Alarm Status")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        prompt("New Alarm Status")
        special(SPC_NOMOD)
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
        menu(menuAlarmSevr)
        interest(2)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        interest(2)
        menu(menuYesNo)
        promptgroup("70 - Alarm")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        prompt("Lock Count")
        special(SPC_NOMOD)
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("dbPutField process")
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        extra("struct asgMember    *asp")
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        prompt("Scan Private")
        special(SPC_NOMOD)
        extra("struct scan_element *spvt")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        extra("struct typed_rset   *rset")
        prompt("Address of RSET")
        special(SPC_NOMOD)
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("DSET address")
        extra("unambiguous_dset    *dset")
    }
    field(DPVT, DBF_NOACCESS) {
        extra("void                *dpvt")
        prompt("Device Private")
        special(SPC_NOMOD)
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        extra("struct dbRecordType *rdes")
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        extra("struct lockRecord   *lset")
        special(SPC_NOMOD)
        prompt("Lock Set")
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scheduling Priority")
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        prompt("Undefined")
        initial("1")
        promptgroup("10 - Common")
        interest(1)
        pp(TRUE)
    }
    field(UDFS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
    }
    field(TIME, DBF_NOACCESS) {
        extra("epicsTimeStamp      time")
        prompt("Time")
        special(SPC_NOMOD)
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Forward Process Link")
    }
    field(VAL, DBF_NOACCESS) {
        pp(TRUE)
        extra("void *		val")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Value")
    }
    field(INP, DBF_INLINK) {
        prompt("Input Specification")
        promptgroup("40 - Input")
        interest(1)
    }
    field(RES, DBF_SHORT) {
        asl(ASL0)
        prompt("Reset")
        special(SPC_RESET)
        interest(3)
    }
    field(ALG, DBF_MENU) {
        special(SPC_RESET)
        prompt("Compression Algorithm")
        promptgroup("30 - Action")
        menu(compressALG)
        interest(1)
    }
    field(BALG, DBF_MENU) {
        prompt("Buffering Algorithm")
        special(SPC_RESET)
        menu(bufferingALG)
        interest(1)
        promptgroup("30 - Action")
    }
    field(NSAM, DBF_ULONG) {
        promptgroup("30 - Action")
        interest(1)
        special(SPC_NOMOD)
        prompt("Number of Values")
        initial("1")
    }
    field(N, DBF_ULONG) {
        interest(1)
        promptgroup("30 - Action")
        initial("1")
        prompt("N to 1 Compression")
        special(SPC_RESET)
    }
    field(IHIL, DBF_DOUBLE) {
        promptgroup("30 - Action")
        interest(1)
        prompt("Init High Interest Lim")
    }
    field(ILIL, DBF_DOUBLE) {
        prompt("Init Low Interest Lim")
        interest(1)
        promptgroup("30 - Action")
    }
    field(HOPR, DBF_DOUBLE) {
        promptgroup("80 - Display")
        interest(1)
        prompt("High Operating Range")
        prop(YES)
    }
    field(LOPR, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Low Operating Range")
    }
    field(PREC, DBF_SHORT) {
        prop(YES)
        prompt("Display Precision")
        interest(1)
        promptgroup("80 - Display")
    }
    field(EGU, DBF_STRING) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Engineering Units")
        size(16)
    }
    field(OFF, DBF_ULONG) {
        prompt("Offset")
        special(SPC_NOMOD)
    }
    field(NUSE, DBF_ULONG) {
        prompt("Number Used")
        special(SPC_NOMOD)
    }
    field(OUSE, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Old Number Used")
    }
    field(BPTR, DBF_NOACCESS) {
        extra("double		*bptr")
        prompt("Buffer Pointer")
        special(SPC_NOMOD)
        interest(4)
    }
    field(SPTR, DBF_NOACCESS) {
        interest(4)
        extra("double		*sptr")
        prompt("Summing Buffer Ptr")
        special(SPC_NOMOD)
    }
    field(WPTR, DBF_NOACCESS) {
        interest(4)
        prompt("Working Buffer Ptr")
        special(SPC_NOMOD)
        extra("double		*wptr")
    }
    field(INPN, DBF_LONG) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Number of elements in Working Buffer")
    }
    field(CVB, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Compress Value Buffer")
    }
    field(INX, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Compressed Array Inx")
        interest(3)
    }
}
recordtype(subArray) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct subArrayRecord;
    %typedef struct sadset {
    %    dset common; /*init_record returns: (-1,0)=>(failure,success)*/
    %    long (*read_sa)(struct subArrayRecord *prec); /*returns: (-1,0)=>(failure,success)*/
    %} sadset;
    %#define HAS_sadset
    %
    field(NAME, DBF_STRING) {
        size(61)
        special(SPC_NOMOD)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        prompt("Descriptor")
        size(41)
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        special(SPC_AS)
        size(29)
    }
    field(SCAN, DBF_MENU) {
        interest(1)
        menu(menuScan)
        promptgroup("20 - Scan")
        prompt("Scan Mechanism")
        special(SPC_SCAN)
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPini)
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(EVNT, DBF_STRING) {
        promptgroup("20 - Scan")
        interest(1)
        special(SPC_SCAN)
        size(40)
        prompt("Event Name")
    }
    field(TSE, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor lock")
        extra("epicsMutexId        mlok")
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             mlis")
        special(SPC_NOMOD)
        prompt("Monitor List")
    }
    field(BKLNK, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        extra("ELLLIST             bklnk")
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        pp(TRUE)
        interest(3)
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        initial("UDF")
        prompt("Alarm Status")
        special(SPC_NOMOD)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        prompt("New Alarm Status")
        special(SPC_NOMOD)
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
        interest(2)
        menu(menuAlarmSevr)
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(ACKS, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
    }
    field(ACKT, DBF_MENU) {
        interest(2)
        menu(menuYesNo)
        promptgroup("70 - Alarm")
        initial("YES")
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        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) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        extra("struct asgMember    *asp")
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        extra("struct processNotify *ppn")
        special(SPC_NOMOD)
        prompt("pprocessNotify")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        extra("struct processNotifyRecord *ppnr")
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        extra("struct scan_element *spvt")
        special(SPC_NOMOD)
        prompt("Scan Private")
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
    }
    field(DSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("DSET address")
        extra("unambiguous_dset    *dset")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        extra("void                *dpvt")
        prompt("Device Private")
        special(SPC_NOMOD)
    }
    field(RDES, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        prompt("Lock Set")
        special(SPC_NOMOD)
        extra("struct lockRecord   *lset")
    }
    field(PRIO, DBF_MENU) {
        menu(menuPriority)
        interest(1)
        promptgroup("20 - Scan")
        special(SPC_SCAN)
        prompt("Scheduling Priority")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Break Point")
        extra("epicsUInt8          bkpt")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        initial("1")
        prompt("Undefined")
        interest(1)
        pp(TRUE)
        promptgroup("10 - Common")
    }
    field(UDFS, DBF_MENU) {
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        extra("epicsTimeStamp      time")
        prompt("Time")
        special(SPC_NOMOD)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(VAL, DBF_NOACCESS) {
        pp(TRUE)
        prompt("Value")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *		val")
    }
    field(PREC, DBF_SHORT) {
        prop(YES)
        prompt("Display Precision")
        interest(1)
        promptgroup("80 - Display")
    }
    field(FTVL, DBF_MENU) {
        promptgroup("30 - Action")
        menu(menuFtype)
        interest(1)
        prompt("Field Type of Value")
        special(SPC_NOMOD)
    }
    field(INP, DBF_INLINK) {
        promptgroup("40 - Input")
        interest(1)
        prompt("Input Specification")
    }
    field(EGU, DBF_STRING) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        size(16)
        prompt("Engineering Units")
    }
    field(HOPR, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("High Operating Range")
    }
    field(LOPR, DBF_DOUBLE) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Low Operating Range")
        prop(YES)
    }
    field(MALM, DBF_ULONG) {
        promptgroup("30 - Action")
        interest(1)
        special(SPC_NOMOD)
        prompt("Maximum Elements")
        initial("1")
    }
    field(NELM, DBF_ULONG) {
        prompt("Number of Elements")
        initial("1")
        promptgroup("30 - Action")
        pp(TRUE)
    }
    field(INDX, DBF_ULONG) {
        prompt("Substring Index")
        promptgroup("30 - Action")
        pp(TRUE)
    }
    field(BUSY, DBF_SHORT) {
        special(SPC_NOMOD)
        prompt("Busy Indicator")
    }
    field(NORD, DBF_LONG) {
        special(SPC_NOMOD)
        prompt("Number elements read")
    }
    field(BPTR, DBF_NOACCESS) {
        extra("void *		bptr")
        special(SPC_NOMOD)
        prompt("Buffer Pointer")
        interest(4)
    }
}
device(subArray, CONSTANT, devSASoft, "Soft Channel")
recordtype(ao) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct aoRecord;
    %typedef struct aodset {
    %    dset common; /*init_record returns: (0,2)=>(success,success no convert)*/
    %    long (*write_ao)(struct aoRecord *prec); /*(0)=>(success ) */
    %    long (*special_linconv)(struct aoRecord *prec, int after);
    %} aodset;
    %#define HAS_aodset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        size(61)
        special(SPC_NOMOD)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        size(41)
        prompt("Descriptor")
    }
    field(ASG, DBF_STRING) {
        prompt("Access Security Group")
        special(SPC_AS)
        size(29)
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        interest(1)
        menu(menuScan)
        promptgroup("20 - Scan")
        prompt("Scan Mechanism")
        special(SPC_SCAN)
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        menu(menuPini)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(EVNT, DBF_STRING) {
        prompt("Event Name")
        size(40)
        special(SPC_SCAN)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        interest(1)
        promptgroup("10 - Common")
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        prompt("Disable Value")
        initial("1")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        extra("epicsMutexId        mlok")
        special(SPC_NOMOD)
        prompt("Monitor lock")
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        special(SPC_NOMOD)
        prompt("Monitor List")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        extra("ELLLIST             bklnk")
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        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")
        special(SPC_NOMOD)
        initial("UDF")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Severity")
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        menu(menuAlarmStat)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Status")
    }
    field(NSEV, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
    }
    field(ACKT, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(2)
        menu(menuYesNo)
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
    }
    field(LCNT, DBF_UCHAR) {
        prompt("Lock Count")
        special(SPC_NOMOD)
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        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) {
        interest(4)
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
    }
    field(PPN, DBF_NOACCESS) {
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        extra("struct processNotifyRecord *ppnr")
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        prompt("Scan Private")
        special(SPC_NOMOD)
        extra("struct scan_element *spvt")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        prompt("Address of RSET")
        special(SPC_NOMOD)
        extra("struct typed_rset   *rset")
    }
    field(DSET, DBF_NOACCESS) {
        prompt("DSET address")
        special(SPC_NOMOD)
        extra("unambiguous_dset    *dset")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Device Private")
        extra("void                *dpvt")
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        extra("struct lockRecord   *lset")
        prompt("Lock Set")
        special(SPC_NOMOD)
    }
    field(PRIO, DBF_MENU) {
        prompt("Scheduling Priority")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        menu(menuPriority)
        interest(1)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        extra("epicsUInt8          bkpt")
        prompt("Break Point")
        special(SPC_NOMOD)
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        promptgroup("10 - Common")
        interest(1)
        pp(TRUE)
        prompt("Undefined")
        initial("1")
    }
    field(UDFS, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        prompt("Time Tag")
        special(SPC_NOMOD)
    }
    field(FLNK, DBF_FWDLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Forward Process Link")
    }
    field(VAL, DBF_DOUBLE) {
        pp(TRUE)
        promptgroup("50 - Output")
        asl(ASL0)
        prompt("Desired Output")
    }
    field(OVAL, DBF_DOUBLE) {
        prompt("Output Value")
    }
    field(OUT, DBF_OUTLINK) {
        prompt("Output Specification")
        promptgroup("50 - Output")
        interest(1)
    }
    field(OROC, DBF_DOUBLE) {
        interest(1)
        promptgroup("50 - Output")
        prompt("Output Rate of Change")
    }
    field(DOL, DBF_INLINK) {
        prompt("Desired Output Link")
        interest(1)
        promptgroup("40 - Input")
    }
    field(OMSL, DBF_MENU) {
        interest(1)
        menu(menuOmsl)
        promptgroup("50 - Output")
        prompt("Output Mode Select")
    }
    field(OIF, DBF_MENU) {
        prompt("Out Full/Incremental")
        menu(aoOIF)
        interest(1)
        promptgroup("50 - Output")
    }
    field(PREC, DBF_SHORT) {
        prop(YES)
        prompt("Display Precision")
        interest(1)
        promptgroup("80 - Display")
    }
    field(LINR, DBF_MENU) {
        special(SPC_LINCONV)
        prompt("Linearization")
        pp(TRUE)
        interest(1)
        menu(menuConvert)
        promptgroup("60 - Convert")
    }
    field(EGUF, DBF_DOUBLE) {
        special(SPC_LINCONV)
        prompt("Eng Units Full")
        interest(1)
        pp(TRUE)
        promptgroup("60 - Convert")
    }
    field(EGUL, DBF_DOUBLE) {
        prompt("Eng Units Low")
        special(SPC_LINCONV)
        promptgroup("60 - Convert")
        pp(TRUE)
        interest(1)
    }
    field(EGU, DBF_STRING) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Engineering Units")
        size(16)
        prop(YES)
    }
    field(ROFF, DBF_ULONG) {
        prompt("Raw Offset")
        pp(TRUE)
        interest(2)
    }
    field(EOFF, DBF_DOUBLE) {
        promptgroup("60 - Convert")
        pp(TRUE)
        interest(2)
        prompt("EGU to Raw Offset")
    }
    field(ESLO, DBF_DOUBLE) {
        initial("1")
        prompt("EGU to Raw Slope")
        interest(2)
        pp(TRUE)
        promptgroup("60 - Convert")
    }
    field(DRVH, DBF_DOUBLE) {
        pp(TRUE)
        interest(1)
        promptgroup("30 - Action")
        prop(YES)
        prompt("Drive High Limit")
    }
    field(DRVL, DBF_DOUBLE) {
        promptgroup("30 - Action")
        interest(1)
        pp(TRUE)
        prompt("Drive Low Limit")
        prop(YES)
    }
    field(HOPR, DBF_DOUBLE) {
        prompt("High Operating Range")
        prop(YES)
        promptgroup("80 - Display")
        interest(1)
    }
    field(LOPR, DBF_DOUBLE) {
        prop(YES)
        prompt("Low Operating Range")
        interest(1)
        promptgroup("80 - Display")
    }
    field(AOFF, DBF_DOUBLE) {
        interest(1)
        pp(TRUE)
        promptgroup("60 - Convert")
        prompt("Adjustment Offset")
    }
    field(ASLO, DBF_DOUBLE) {
        promptgroup("60 - Convert")
        pp(TRUE)
        interest(1)
        prompt("Adjustment Slope")
    }
    field(HIHI, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        prompt("Hihi Alarm Limit")
        prop(YES)
    }
    field(LOLO, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
        prompt("Lolo Alarm Limit")
        prop(YES)
    }
    field(HIGH, DBF_DOUBLE) {
        prop(YES)
        prompt("High Alarm Limit")
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LOW, DBF_DOUBLE) {
        prompt("Low Alarm Limit")
        prop(YES)
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
    }
    field(HHSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        prompt("Hihi Severity")
        prop(YES)
    }
    field(LLSV, DBF_MENU) {
        prompt("Lolo Severity")
        prop(YES)
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
    }
    field(HSV, DBF_MENU) {
        prompt("High Severity")
        prop(YES)
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
    }
    field(LSV, DBF_MENU) {
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Low Severity")
    }
    field(HYST, DBF_DOUBLE) {
        prompt("Alarm Deadband")
        promptgroup("70 - Alarm")
        interest(1)
    }
    field(ADEL, DBF_DOUBLE) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Archive Deadband")
    }
    field(MDEL, DBF_DOUBLE) {
        prompt("Monitor Deadband")
        promptgroup("80 - Display")
        interest(1)
    }
    field(RVAL, DBF_LONG) {
        pp(TRUE)
        prompt("Current Raw Value")
    }
    field(ORAW, DBF_LONG) {
        special(SPC_NOMOD)
        prompt("Previous Raw Value")
        interest(3)
    }
    field(RBV, DBF_LONG) {
        special(SPC_NOMOD)
        prompt("Readback Value")
    }
    field(ORBV, DBF_LONG) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Readback Value")
    }
    field(PVAL, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Previous value")
    }
    field(LALM, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Alarmed")
    }
    field(ALST, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Archived")
    }
    field(MLST, DBF_DOUBLE) {
        prompt("Last Val Monitored")
        special(SPC_NOMOD)
        interest(3)
    }
    field(PBRK, DBF_NOACCESS) {
        interest(4)
        prompt("Ptrto brkTable")
        special(SPC_NOMOD)
        extra("void *   pbrk")
    }
    field(INIT, DBF_SHORT) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Initialized?")
    }
    field(LBRK, DBF_SHORT) {
        prompt("LastBreak Point")
        special(SPC_NOMOD)
        interest(3)
    }
    field(SIOL, DBF_OUTLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Simulation Output Link")
    }
    field(SIML, DBF_INLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Simulation Mode Link")
    }
    field(SIMM, DBF_MENU) {
        interest(1)
        menu(menuYesNo)
        prompt("Simulation Mode")
        special(SPC_MOD)
    }
    field(SIMS, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        promptgroup("90 - Simulate")
        prompt("Simulation Mode Severity")
    }
    field(OLDSIMM, DBF_MENU) {
        interest(4)
        menu(menuSimm)
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
    }
    field(SSCN, DBF_MENU) {
        promptgroup("90 - Simulate")
        interest(1)
        menu(menuScan)
        prompt("Sim. Mode Scan")
        initial("65535")
    }
    field(SDLY, DBF_DOUBLE) {
        promptgroup("90 - Simulate")
        interest(2)
        prompt("Sim. Mode Async Delay")
        initial("-1.0")
    }
    field(SIMPVT, DBF_NOACCESS) {
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        extra("epicsCallback            *simpvt")
        interest(4)
    }
    field(IVOA, DBF_MENU) {
        promptgroup("50 - Output")
        interest(2)
        menu(menuIvoa)
        prompt("INVALID output action")
    }
    field(IVOV, DBF_DOUBLE) {
        prompt("INVALID output value")
        interest(2)
        promptgroup("50 - Output")
    }
    field(OMOD, DBF_UCHAR) {
        prompt("Was OVAL modified?")
        special(SPC_NOMOD)
    }
}
device(ao, CONSTANT, devAoSoft, "Soft Channel")
device(ao, CONSTANT, devAoSoftRaw, "Raw Soft Channel")
device(ao, CONSTANT, devAoSoftCallback, "Async Soft Channel")
recordtype(calc) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %#include "postfix.h"
    field(NAME, DBF_STRING) {
        size(61)
        special(SPC_NOMOD)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        size(41)
        prompt("Descriptor")
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        special(SPC_AS)
        size(29)
        prompt("Access Security Group")
    }
    field(SCAN, DBF_MENU) {
        promptgroup("20 - Scan")
        menu(menuScan)
        interest(1)
        prompt("Scan Mechanism")
        special(SPC_SCAN)
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        promptgroup("20 - Scan")
        menu(menuPini)
        interest(1)
    }
    field(PHAS, DBF_SHORT) {
        special(SPC_SCAN)
        prompt("Scan Phase")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(EVNT, DBF_STRING) {
        promptgroup("20 - Scan")
        interest(1)
        size(40)
        special(SPC_SCAN)
        prompt("Event Name")
    }
    field(TSE, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        interest(1)
        promptgroup("10 - Common")
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        prompt("Disable Value")
        initial("1")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(MLOK, DBF_NOACCESS) {
        extra("epicsMutexId        mlok")
        special(SPC_NOMOD)
        prompt("Monitor lock")
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor List")
        extra("ELLLIST             mlis")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        extra("ELLLIST             bklnk")
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        pp(TRUE)
        interest(3)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        initial("UDF")
        special(SPC_NOMOD)
        prompt("Alarm Status")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(NSTA, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Status")
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        menu(menuYesNo)
        interest(2)
        promptgroup("70 - Alarm")
    }
    field(DISS, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        prompt("Lock Count")
        special(SPC_NOMOD)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        prompt("Record active")
        special(SPC_NOMOD)
    }
    field(PUTF, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("dbPutField process")
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        extra("struct asgMember    *asp")
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        extra("struct processNotify *ppn")
        special(SPC_NOMOD)
        prompt("pprocessNotify")
    }
    field(PPNR, DBF_NOACCESS) {
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        extra("struct processNotifyRecord *ppnr")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        extra("struct scan_element *spvt")
        special(SPC_NOMOD)
        prompt("Scan Private")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of RSET")
        extra("struct typed_rset   *rset")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        extra("unambiguous_dset    *dset")
        prompt("DSET address")
        special(SPC_NOMOD)
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        extra("void                *dpvt")
        prompt("Device Private")
        special(SPC_NOMOD)
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
    }
    field(LSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Lock Set")
        extra("struct lockRecord   *lset")
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        prompt("Scheduling Priority")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
    }
    field(UDF, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("10 - Common")
        initial("1")
        prompt("Undefined")
    }
    field(UDFS, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
    }
    field(TIME, DBF_NOACCESS) {
        extra("epicsTimeStamp      time")
        prompt("Time")
        special(SPC_NOMOD)
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        prompt("Time Tag")
        special(SPC_NOMOD)
    }
    field(FLNK, DBF_FWDLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Forward Process Link")
    }
    field(VAL, DBF_DOUBLE) {
        prompt("Result")
        asl(ASL0)
        promptgroup("50 - Output")
    }
    field(CALC, DBF_STRING) {
        special(SPC_CALC)
        size(80)
        prompt("Calculation")
        promptgroup("30 - Action")
        pp(TRUE)
        initial("0")
    }
    field(INPA, DBF_INLINK) {
        promptgroup("41 - Input A-F")
        interest(1)
        prompt("Input A")
    }
    field(INPB, DBF_INLINK) {
        prompt("Input B")
        promptgroup("41 - Input A-F")
        interest(1)
    }
    field(INPC, DBF_INLINK) {
        promptgroup("41 - Input A-F")
        interest(1)
        prompt("Input C")
    }
    field(INPD, DBF_INLINK) {
        prompt("Input D")
        promptgroup("41 - Input A-F")
        interest(1)
    }
    field(INPE, DBF_INLINK) {
        interest(1)
        promptgroup("41 - Input A-F")
        prompt("Input E")
    }
    field(INPF, DBF_INLINK) {
        prompt("Input F")
        promptgroup("41 - Input A-F")
        interest(1)
    }
    field(INPG, DBF_INLINK) {
        prompt("Input G")
        promptgroup("42 - Input G-L")
        interest(1)
    }
    field(INPH, DBF_INLINK) {
        prompt("Input H")
        interest(1)
        promptgroup("42 - Input G-L")
    }
    field(INPI, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input G-L")
        prompt("Input I")
    }
    field(INPJ, DBF_INLINK) {
        promptgroup("42 - Input G-L")
        interest(1)
        prompt("Input J")
    }
    field(INPK, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input G-L")
        prompt("Input K")
    }
    field(INPL, DBF_INLINK) {
        prompt("Input L")
        promptgroup("42 - Input G-L")
        interest(1)
    }
    field(EGU, DBF_STRING) {
        prop(YES)
        prompt("Engineering Units")
        size(16)
        interest(1)
        promptgroup("80 - Display")
    }
    field(PREC, DBF_SHORT) {
        prop(YES)
        prompt("Display Precision")
        interest(1)
        promptgroup("80 - Display")
    }
    field(HOPR, DBF_DOUBLE) {
        prop(YES)
        prompt("High Operating Rng")
        interest(1)
        promptgroup("80 - Display")
    }
    field(LOPR, DBF_DOUBLE) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Low Operating Range")
        prop(YES)
    }
    field(HIHI, DBF_DOUBLE) {
        prop(YES)
        prompt("Hihi Alarm Limit")
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
    }
    field(LOLO, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
        prompt("Lolo Alarm Limit")
        prop(YES)
    }
    field(HIGH, DBF_DOUBLE) {
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("High Alarm Limit")
    }
    field(LOW, DBF_DOUBLE) {
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Low Alarm Limit")
    }
    field(HHSV, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Hihi Severity")
    }
    field(LLSV, DBF_MENU) {
        prop(YES)
        prompt("Lolo Severity")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(HSV, DBF_MENU) {
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("High Severity")
    }
    field(LSV, DBF_MENU) {
        prop(YES)
        prompt("Low Severity")
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(AFTC, DBF_DOUBLE) {
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Alarm Filter Time Constant")
    }
    field(AFVL, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Alarm Filter Value")
    }
    field(HYST, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        interest(1)
        prompt("Alarm Deadband")
    }
    field(ADEL, DBF_DOUBLE) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Archive Deadband")
    }
    field(MDEL, DBF_DOUBLE) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Monitor Deadband")
    }
    field(A, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input A")
    }
    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) {
        pp(TRUE)
        prompt("Value of Input E")
    }
    field(F, DBF_DOUBLE) {
        prompt("Value of Input F")
        pp(TRUE)
    }
    field(G, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input G")
    }
    field(H, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input H")
    }
    field(I, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input I")
    }
    field(J, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input J")
    }
    field(K, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input K")
    }
    field(L, DBF_DOUBLE) {
        prompt("Value of Input L")
        pp(TRUE)
    }
    field(LA, DBF_DOUBLE) {
        interest(3)
        prompt("Prev Value of A")
        special(SPC_NOMOD)
    }
    field(LB, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of B")
        interest(3)
    }
    field(LC, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of C")
        interest(3)
    }
    field(LD, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of D")
        interest(3)
    }
    field(LE, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of E")
    }
    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) {
        special(SPC_NOMOD)
        prompt("Prev Value of H")
        interest(3)
    }
    field(LI, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of I")
    }
    field(LJ, DBF_DOUBLE) {
        prompt("Prev Value of J")
        special(SPC_NOMOD)
        interest(3)
    }
    field(LK, DBF_DOUBLE) {
        interest(3)
        prompt("Prev Value of K")
        special(SPC_NOMOD)
    }
    field(LL, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of L")
    }
    field(LALM, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Alarmed")
    }
    field(ALST, DBF_DOUBLE) {
        interest(3)
        prompt("Last Value Archived")
        special(SPC_NOMOD)
    }
    field(MLST, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Val Monitored")
    }
    field(RPCL, DBF_NOACCESS) {
        prompt("Reverse Polish Calc")
        special(SPC_NOMOD)
        extra("char	rpcl[INFIX_TO_POSTFIX_SIZE(80)]")
        interest(4)
    }
}
recordtype(bi) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct biRecord;
    %typedef struct bidset {
    %    dset common;
    %    long (*read_bi)(struct biRecord *prec);
    %} bidset;
    %#define HAS_bidset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        special(SPC_NOMOD)
        size(61)
    }
    field(DESC, DBF_STRING) {
        prompt("Descriptor")
        size(41)
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        size(29)
        special(SPC_AS)
    }
    field(SCAN, DBF_MENU) {
        promptgroup("20 - Scan")
        interest(1)
        menu(menuScan)
        special(SPC_SCAN)
        prompt("Scan Mechanism")
    }
    field(PINI, DBF_MENU) {
        promptgroup("20 - Scan")
        menu(menuPini)
        interest(1)
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scan Phase")
        special(SPC_SCAN)
    }
    field(EVNT, DBF_STRING) {
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        prompt("Monitor lock")
        special(SPC_NOMOD)
        extra("epicsMutexId        mlok")
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        prompt("Monitor List")
        special(SPC_NOMOD)
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        extra("ELLLIST             bklnk")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        pp(TRUE)
        interest(3)
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        initial("UDF")
        special(SPC_NOMOD)
        prompt("Alarm Status")
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Severity")
    }
    field(AMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        prompt("New Alarm Status")
        special(SPC_NOMOD)
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
    }
    field(ACKT, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        menu(menuYesNo)
        interest(2)
        promptgroup("70 - Alarm")
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Lock Count")
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("dbPutField process")
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        extra("struct processNotify *ppn")
        special(SPC_NOMOD)
        prompt("pprocessNotify")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        extra("struct processNotifyRecord *ppnr")
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        extra("struct scan_element *spvt")
        special(SPC_NOMOD)
        prompt("Scan Private")
    }
    field(RSET, DBF_NOACCESS) {
        prompt("Address of RSET")
        special(SPC_NOMOD)
        extra("struct typed_rset   *rset")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("DSET address")
        extra("unambiguous_dset    *dset")
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        extra("void                *dpvt")
        prompt("Device Private")
        special(SPC_NOMOD)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        extra("struct dbRecordType *rdes")
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
    }
    field(LSET, DBF_NOACCESS) {
        extra("struct lockRecord   *lset")
        special(SPC_NOMOD)
        prompt("Lock Set")
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        promptgroup("20 - Scan")
        menu(menuPriority)
        interest(1)
        prompt("Scheduling Priority")
        special(SPC_SCAN)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
    }
    field(UDF, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("10 - Common")
        initial("1")
        prompt("Undefined")
    }
    field(UDFS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
    }
    field(TIME, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Forward Process Link")
    }
    field(INP, DBF_INLINK) {
        prompt("Input Specification")
        interest(1)
        promptgroup("40 - Input")
    }
    field(VAL, DBF_ENUM) {
        asl(ASL0)
        prompt("Current Value")
        pp(TRUE)
        promptgroup("40 - Input")
    }
    field(ZSV, DBF_MENU) {
        prompt("Zero Error Severity")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(OSV, DBF_MENU) {
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prompt("One Error Severity")
    }
    field(COSV, DBF_MENU) {
        prompt("Change of State Svr")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(ZNAM, DBF_STRING) {
        prop(YES)
        prompt("Zero Name")
        size(26)
        interest(1)
        pp(TRUE)
        promptgroup("80 - Display")
    }
    field(ONAM, DBF_STRING) {
        pp(TRUE)
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        size(26)
        prompt("One Name")
    }
    field(RVAL, DBF_ULONG) {
        pp(TRUE)
        prompt("Raw Value")
    }
    field(ORAW, DBF_ULONG) {
        prompt("prev Raw Value")
        special(SPC_NOMOD)
        interest(3)
    }
    field(MASK, DBF_ULONG) {
        interest(1)
        prompt("Hardware Mask")
        special(SPC_NOMOD)
    }
    field(LALM, DBF_USHORT) {
        special(SPC_NOMOD)
        prompt("Last Value Alarmed")
        interest(3)
    }
    field(MLST, DBF_USHORT) {
        prompt("Last Value Monitored")
        special(SPC_NOMOD)
        interest(3)
    }
    field(SIOL, DBF_INLINK) {
        prompt("Simulation Input Link")
        interest(1)
        promptgroup("90 - Simulate")
    }
    field(SVAL, DBF_ULONG) {
        prompt("Simulation Value")
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(SIMM, DBF_MENU) {
        prompt("Simulation Mode")
        special(SPC_MOD)
        interest(1)
        menu(menuSimm)
    }
    field(SIMS, DBF_MENU) {
        prompt("Simulation Mode Severity")
        menu(menuAlarmSevr)
        interest(2)
        promptgroup("90 - Simulate")
    }
    field(OLDSIMM, DBF_MENU) {
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
        interest(4)
        menu(menuSimm)
    }
    field(SSCN, DBF_MENU) {
        interest(1)
        menu(menuScan)
        promptgroup("90 - Simulate")
        initial("65535")
        prompt("Sim. Mode Scan")
    }
    field(SDLY, DBF_DOUBLE) {
        interest(2)
        promptgroup("90 - Simulate")
        initial("-1.0")
        prompt("Sim. Mode Async Delay")
    }
    field(SIMPVT, DBF_NOACCESS) {
        extra("epicsCallback            *simpvt")
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        interest(4)
    }
}
device(bi, CONSTANT, devBiSoft, "Soft Channel")
device(bi, CONSTANT, devBiSoftRaw, "Raw Soft Channel")
device(bi, CONSTANT, devBiSoftCallback, "Async Soft Channel")
device(bi, INST_IO, devBiDbState, "Db State")
recordtype(printf) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct printfRecord;
    %typedef struct printfdset {
    %    dset common;
    %    long (*write_string)(struct printfRecord *prec);
    %} printfdset;
    %#define HAS_printfdset
    %
    %/* Number of INPx fields defined */
    %#define PRINTF_NLINKS 10
    field(NAME, DBF_STRING) {
        size(61)
        special(SPC_NOMOD)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        prompt("Descriptor")
        size(41)
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        size(29)
        special(SPC_AS)
    }
    field(SCAN, DBF_MENU) {
        menu(menuScan)
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scan Mechanism")
        special(SPC_SCAN)
    }
    field(PINI, DBF_MENU) {
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPini)
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        special(SPC_SCAN)
        prompt("Scan Phase")
    }
    field(EVNT, DBF_STRING) {
        promptgroup("20 - Scan")
        interest(1)
        special(SPC_SCAN)
        size(40)
        prompt("Event Name")
    }
    field(TSE, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        prompt("Time Stamp Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        prompt("Disable Value")
        initial("1")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
    }
    field(MLIS, DBF_NOACCESS) {
        interest(4)
        prompt("Monitor List")
        special(SPC_NOMOD)
        extra("ELLLIST             mlis")
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        extra("ELLLIST             bklnk")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        interest(3)
        pp(TRUE)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        initial("UDF")
        prompt("Alarm Status")
        special(SPC_NOMOD)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        menu(menuAlarmStat)
        interest(2)
        prompt("New Alarm Status")
        special(SPC_NOMOD)
    }
    field(NSEV, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
        menu(menuAlarmSevr)
        interest(2)
    }
    field(ACKT, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuYesNo)
        interest(2)
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        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("struct asgMember    *asp")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        extra("struct processNotifyRecord *ppnr")
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        extra("struct scan_element *spvt")
        special(SPC_NOMOD)
        prompt("Scan Private")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        prompt("Address of RSET")
        special(SPC_NOMOD)
        extra("struct typed_rset   *rset")
    }
    field(DSET, DBF_NOACCESS) {
        prompt("DSET address")
        special(SPC_NOMOD)
        extra("unambiguous_dset    *dset")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        extra("void                *dpvt")
        special(SPC_NOMOD)
        prompt("Device Private")
    }
    field(RDES, DBF_NOACCESS) {
        extra("struct dbRecordType *rdes")
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        extra("struct lockRecord   *lset")
        prompt("Lock Set")
        special(SPC_NOMOD)
    }
    field(PRIO, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scheduling Priority")
        promptgroup("20 - Scan")
        menu(menuPriority)
        interest(1)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
    }
    field(UDF, DBF_UCHAR) {
        promptgroup("10 - Common")
        pp(TRUE)
        interest(1)
        prompt("Undefined")
        initial("1")
    }
    field(UDFS, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(VAL, DBF_NOACCESS) {
        pp(TRUE)
        special(SPC_DBADDR)
        prompt("Result")
        extra("char *val")
        asl(ASL0)
    }
    field(SIZV, DBF_USHORT) {
        promptgroup("30 - Action")
        interest(1)
        prompt("Size of VAL buffer")
        special(SPC_NOMOD)
        initial("41")
    }
    field(LEN, DBF_ULONG) {
        prompt("Length of VAL")
        special(SPC_NOMOD)
    }
    field(OUT, DBF_OUTLINK) {
        prompt("Output Specification")
        promptgroup("50 - Output")
        interest(1)
    }
    field(FMT, DBF_STRING) {
        pp(TRUE)
        promptgroup("30 - Action")
        prompt("Format String")
        size(81)
    }
    field(IVLS, DBF_STRING) {
        size(16)
        prompt("Invalid Link String")
        initial("LNK")
        promptgroup("30 - Action")
    }
    field(INP0, DBF_INLINK) {
        prompt("Input 0")
        interest(1)
        promptgroup("40 - Input")
    }
    field(INP1, DBF_INLINK) {
        promptgroup("40 - Input")
        interest(1)
        prompt("Input 1")
    }
    field(INP2, DBF_INLINK) {
        promptgroup("40 - Input")
        interest(1)
        prompt("Input 2")
    }
    field(INP3, DBF_INLINK) {
        promptgroup("40 - Input")
        interest(1)
        prompt("Input 3")
    }
    field(INP4, DBF_INLINK) {
        promptgroup("40 - Input")
        interest(1)
        prompt("Input 4")
    }
    field(INP5, DBF_INLINK) {
        prompt("Input 5")
        promptgroup("40 - Input")
        interest(1)
    }
    field(INP6, DBF_INLINK) {
        promptgroup("40 - Input")
        interest(1)
        prompt("Input 6")
    }
    field(INP7, DBF_INLINK) {
        prompt("Input 7")
        promptgroup("40 - Input")
        interest(1)
    }
    field(INP8, DBF_INLINK) {
        prompt("Input 8")
        promptgroup("40 - Input")
        interest(1)
    }
    field(INP9, DBF_INLINK) {
        prompt("Input 9")
        interest(1)
        promptgroup("40 - Input")
    }
}
device(printf, CONSTANT, devPrintfSoft, "Soft Channel")
device(printf, CONSTANT, devPrintfSoftCallback, "Async Soft Channel")
device(printf, INST_IO, devPrintfStdio, "stdio")
recordtype(sel) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        special(SPC_NOMOD)
        size(61)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Descriptor")
        size(41)
    }
    field(ASG, DBF_STRING) {
        special(SPC_AS)
        size(29)
        prompt("Access Security Group")
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        prompt("Scan Mechanism")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
        menu(menuScan)
    }
    field(PINI, DBF_MENU) {
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPini)
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        special(SPC_SCAN)
        prompt("Scan Phase")
    }
    field(EVNT, DBF_STRING) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
    }
    field(TSE, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        promptgroup("10 - Common")
        interest(1)
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        prompt("Disable Value")
        initial("1")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor List")
        extra("ELLLIST             mlis")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             bklnk")
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        pp(TRUE)
        interest(3)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Status")
        initial("UDF")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(NSTA, DBF_MENU) {
        menu(menuAlarmStat)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Status")
    }
    field(NSEV, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        interest(2)
        menu(menuYesNo)
        promptgroup("70 - Alarm")
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
    }
    field(DISS, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        prompt("Record active")
        special(SPC_NOMOD)
    }
    field(PUTF, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("dbPutField process")
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        extra("struct asgMember    *asp")
    }
    field(PPN, DBF_NOACCESS) {
        extra("struct processNotify *ppn")
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        extra("struct processNotifyRecord *ppnr")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Scan Private")
        extra("struct scan_element *spvt")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of RSET")
        extra("struct typed_rset   *rset")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        prompt("DSET address")
        special(SPC_NOMOD)
        extra("unambiguous_dset    *dset")
    }
    field(DPVT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Device Private")
        extra("void                *dpvt")
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        extra("struct dbRecordType *rdes")
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Lock Set")
        extra("struct lockRecord   *lset")
    }
    field(PRIO, DBF_MENU) {
        prompt("Scheduling Priority")
        special(SPC_SCAN)
        interest(1)
        menu(menuPriority)
        promptgroup("20 - Scan")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        extra("epicsUInt8          bkpt")
        prompt("Break Point")
        special(SPC_NOMOD)
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        promptgroup("10 - Common")
        pp(TRUE)
        interest(1)
        prompt("Undefined")
        initial("1")
    }
    field(UDFS, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
    }
    field(TIME, DBF_NOACCESS) {
        extra("epicsTimeStamp      time")
        prompt("Time")
        special(SPC_NOMOD)
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        prompt("Time Tag")
        special(SPC_NOMOD)
    }
    field(FLNK, DBF_FWDLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Forward Process Link")
    }
    field(VAL, DBF_DOUBLE) {
        promptgroup("40 - Input")
        asl(ASL0)
        prompt("Result")
        special(SPC_NOMOD)
    }
    field(SELM, DBF_MENU) {
        menu(selSELM)
        promptgroup("30 - Action")
        prompt("Select Mechanism")
    }
    field(SELN, DBF_USHORT) {
        prompt("Index value")
    }
    field(PREC, DBF_SHORT) {
        interest(1)
        promptgroup("80 - Display")
        prompt("Display Precision")
    }
    field(NVL, DBF_INLINK) {
        interest(1)
        promptgroup("30 - Action")
        prompt("Index Value Location")
    }
    field(INPA, DBF_INLINK) {
        prompt("Input A")
        promptgroup("41 - Input A-F")
        interest(1)
    }
    field(INPB, DBF_INLINK) {
        promptgroup("41 - Input A-F")
        interest(1)
        prompt("Input B")
    }
    field(INPC, DBF_INLINK) {
        prompt("Input C")
        promptgroup("41 - Input A-F")
        interest(1)
    }
    field(INPD, DBF_INLINK) {
        interest(1)
        promptgroup("41 - Input A-F")
        prompt("Input D")
    }
    field(INPE, DBF_INLINK) {
        prompt("Input E")
        interest(1)
        promptgroup("41 - Input A-F")
    }
    field(INPF, DBF_INLINK) {
        prompt("Input F")
        interest(1)
        promptgroup("41 - Input A-F")
    }
    field(INPG, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input G-L")
        prompt("Input G")
    }
    field(INPH, DBF_INLINK) {
        prompt("Input H")
        promptgroup("42 - Input G-L")
        interest(1)
    }
    field(INPI, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input G-L")
        prompt("Input I")
    }
    field(INPJ, DBF_INLINK) {
        prompt("Input J")
        interest(1)
        promptgroup("42 - Input G-L")
    }
    field(INPK, DBF_INLINK) {
        prompt("Input K")
        promptgroup("42 - Input G-L")
        interest(1)
    }
    field(INPL, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input G-L")
        prompt("Input L")
    }
    field(EGU, DBF_STRING) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        size(16)
        prompt("Engineering Units")
    }
    field(HOPR, DBF_DOUBLE) {
        prop(YES)
        prompt("High Operating Rng")
        interest(1)
        promptgroup("80 - Display")
    }
    field(LOPR, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Low Operating Range")
    }
    field(HIHI, DBF_DOUBLE) {
        prop(YES)
        prompt("Hihi Alarm Limit")
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LOLO, DBF_DOUBLE) {
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Lolo Alarm Limit")
    }
    field(HIGH, DBF_DOUBLE) {
        prompt("High Alarm Limit")
        prop(YES)
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
    }
    field(LOW, DBF_DOUBLE) {
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Low Alarm Limit")
    }
    field(HHSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        pp(TRUE)
        prompt("Hihi Severity")
        prop(YES)
    }
    field(LLSV, DBF_MENU) {
        prompt("Lolo Severity")
        prop(YES)
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
    }
    field(HSV, DBF_MENU) {
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("High Severity")
    }
    field(LSV, DBF_MENU) {
        prop(YES)
        prompt("Low Severity")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        promptgroup("70 - Alarm")
    }
    field(HYST, DBF_DOUBLE) {
        prompt("Alarm Deadband")
        promptgroup("70 - Alarm")
        interest(1)
    }
    field(ADEL, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prompt("Archive Deadband")
    }
    field(MDEL, DBF_DOUBLE) {
        prompt("Monitor Deadband")
        promptgroup("80 - Display")
        interest(1)
    }
    field(A, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input A")
    }
    field(B, DBF_DOUBLE) {
        prompt("Value of Input B")
        pp(TRUE)
    }
    field(C, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input C")
    }
    field(D, DBF_DOUBLE) {
        prompt("Value of Input D")
        pp(TRUE)
    }
    field(E, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input E")
    }
    field(F, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input F")
    }
    field(G, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input G")
    }
    field(H, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input H")
    }
    field(I, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input I")
    }
    field(J, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input J")
    }
    field(K, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input K")
    }
    field(L, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input L")
    }
    field(LA, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of A")
        interest(3)
    }
    field(LB, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of B")
    }
    field(LC, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of C")
    }
    field(LD, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of D")
    }
    field(LE, DBF_DOUBLE) {
        interest(3)
        prompt("Prev Value of E")
        special(SPC_NOMOD)
    }
    field(LF, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of F")
        interest(3)
    }
    field(LG, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of G")
        interest(3)
    }
    field(LH, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of H")
    }
    field(LI, DBF_DOUBLE) {
        interest(3)
        prompt("Prev Value of I")
        special(SPC_NOMOD)
    }
    field(LJ, DBF_DOUBLE) {
        prompt("Prev Value of J")
        special(SPC_NOMOD)
        interest(3)
    }
    field(LK, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of K")
        interest(3)
    }
    field(LL, DBF_DOUBLE) {
        prompt("Prev Value of L")
        special(SPC_NOMOD)
        interest(3)
    }
    field(LALM, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Last Value Alarmed")
        interest(3)
    }
    field(ALST, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Archived")
    }
    field(MLST, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Val Monitored")
    }
    field(NLST, DBF_USHORT) {
        interest(3)
        prompt("Last Index Monitored")
        special(SPC_NOMOD)
    }
}
recordtype(longin) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct longinRecord;
    %typedef struct longindset {
    %    dset common; /*init_record returns: (-1,0)=>(failure,success)*/
    %    long (*read_longin)(struct longinRecord *prec); /*returns: (-1,0)=>(failure,success)*/
    %} longindset;
    %#define HAS_longindset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        size(61)
        special(SPC_NOMOD)
    }
    field(DESC, DBF_STRING) {
        prompt("Descriptor")
        size(41)
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        size(29)
        special(SPC_AS)
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        promptgroup("20 - Scan")
        menu(menuScan)
        interest(1)
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        interest(1)
        menu(menuPini)
        promptgroup("20 - Scan")
    }
    field(PHAS, DBF_SHORT) {
        special(SPC_SCAN)
        prompt("Scan Phase")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(EVNT, DBF_STRING) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
    }
    field(TSE, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        interest(1)
        promptgroup("10 - Common")
    }
    field(DISV, DBF_SHORT) {
        initial("1")
        prompt("Disable Value")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Monitor lock")
        extra("epicsMutexId        mlok")
    }
    field(MLIS, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor List")
        extra("ELLLIST             mlis")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        extra("ELLLIST             bklnk")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        interest(3)
        pp(TRUE)
    }
    field(STAT, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Status")
        initial("UDF")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Severity")
        menu(menuAlarmSevr)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(NSTA, DBF_MENU) {
        prompt("New Alarm Status")
        special(SPC_NOMOD)
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
    }
    field(ACKT, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        promptgroup("70 - Alarm")
        menu(menuYesNo)
        interest(2)
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
    }
    field(LCNT, DBF_UCHAR) {
        prompt("Lock Count")
        special(SPC_NOMOD)
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        prompt("Record active")
        special(SPC_NOMOD)
    }
    field(PUTF, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("dbPutField process")
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Reprocess ")
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        extra("struct scan_element *spvt")
        special(SPC_NOMOD)
        prompt("Scan Private")
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        prompt("Address of RSET")
        special(SPC_NOMOD)
        extra("struct typed_rset   *rset")
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("DSET address")
        extra("unambiguous_dset    *dset")
    }
    field(DPVT, DBF_NOACCESS) {
        prompt("Device Private")
        special(SPC_NOMOD)
        extra("void                *dpvt")
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        extra("struct lockRecord   *lset")
        special(SPC_NOMOD)
        prompt("Lock Set")
    }
    field(PRIO, DBF_MENU) {
        prompt("Scheduling Priority")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        menu(menuPriority)
        interest(1)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Break Point")
        extra("epicsUInt8          bkpt")
    }
    field(UDF, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        promptgroup("10 - Common")
        initial("1")
        prompt("Undefined")
    }
    field(UDFS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
    }
    field(TIME, DBF_NOACCESS) {
        extra("epicsTimeStamp      time")
        prompt("Time")
        special(SPC_NOMOD)
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        prompt("Time Tag")
        special(SPC_NOMOD)
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Forward Process Link")
    }
    field(VAL, DBF_LONG) {
        asl(ASL0)
        prompt("Current value")
        pp(TRUE)
        promptgroup("40 - Input")
    }
    field(INP, DBF_INLINK) {
        prompt("Input Specification")
        promptgroup("40 - Input")
        interest(1)
    }
    field(EGU, DBF_STRING) {
        promptgroup("80 - Display")
        interest(1)
        size(16)
        prompt("Engineering Units")
        prop(YES)
    }
    field(HOPR, DBF_LONG) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("High Operating Range")
    }
    field(LOPR, DBF_LONG) {
        prop(YES)
        prompt("Low Operating Range")
        interest(1)
        promptgroup("80 - Display")
    }
    field(HIHI, DBF_LONG) {
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
        prompt("Hihi Alarm Limit")
        prop(YES)
    }
    field(LOLO, DBF_LONG) {
        prop(YES)
        prompt("Lolo Alarm Limit")
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
    }
    field(HIGH, DBF_LONG) {
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("High Alarm Limit")
    }
    field(LOW, DBF_LONG) {
        prompt("Low Alarm Limit")
        prop(YES)
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
    }
    field(HHSV, DBF_MENU) {
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Hihi Severity")
    }
    field(LLSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        prompt("Lolo Severity")
    }
    field(HSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
        prompt("High Severity")
    }
    field(LSV, DBF_MENU) {
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Low Severity")
    }
    field(HYST, DBF_LONG) {
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Alarm Deadband")
    }
    field(AFTC, DBF_DOUBLE) {
        prompt("Alarm Filter Time Constant")
        promptgroup("70 - Alarm")
        interest(1)
    }
    field(AFVL, DBF_DOUBLE) {
        interest(3)
        prompt("Alarm Filter Value")
        special(SPC_NOMOD)
    }
    field(ADEL, DBF_LONG) {
        interest(1)
        promptgroup("80 - Display")
        prompt("Archive Deadband")
    }
    field(MDEL, DBF_LONG) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Monitor Deadband")
    }
    field(LALM, DBF_LONG) {
        prompt("Last Value Alarmed")
        special(SPC_NOMOD)
        interest(3)
    }
    field(ALST, DBF_LONG) {
        interest(3)
        prompt("Last Value Archived")
        special(SPC_NOMOD)
    }
    field(MLST, DBF_LONG) {
        interest(3)
        prompt("Last Val Monitored")
        special(SPC_NOMOD)
    }
    field(SIOL, DBF_INLINK) {
        promptgroup("90 - Simulate")
        interest(1)
        prompt("Sim Input Specifctn")
    }
    field(SVAL, DBF_LONG) {
        prompt("Simulation Value")
    }
    field(SIML, DBF_INLINK) {
        prompt("Sim Mode Location")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(SIMM, DBF_MENU) {
        interest(1)
        menu(menuYesNo)
        special(SPC_MOD)
        prompt("Simulation Mode")
    }
    field(SIMS, DBF_MENU) {
        prompt("Sim mode Alarm Svrty")
        interest(2)
        menu(menuAlarmSevr)
        promptgroup("90 - Simulate")
    }
    field(OLDSIMM, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Prev. Simulation Mode")
        interest(4)
        menu(menuSimm)
    }
    field(SSCN, DBF_MENU) {
        prompt("Sim. Mode Scan")
        initial("65535")
        promptgroup("90 - Simulate")
        interest(1)
        menu(menuScan)
    }
    field(SDLY, DBF_DOUBLE) {
        promptgroup("90 - Simulate")
        interest(2)
        prompt("Sim. Mode Async Delay")
        initial("-1.0")
    }
    field(SIMPVT, DBF_NOACCESS) {
        interest(4)
        extra("epicsCallback            *simpvt")
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
    }
}
device(longin, CONSTANT, devLiSoft, "Soft Channel")
device(longin, CONSTANT, devLiSoftCallback, "Async Soft Channel")
device(longin, INST_IO, devLiGeneralTime, "General Time")
recordtype(ai) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct aiRecord;
    %typedef struct aidset {
    %    dset common;
    %    long (*read_ai)(struct aiRecord *prec);
    %    long (*special_linconv)(struct aiRecord *prec, int after);
    %} aidset;
    %#define HAS_aidset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        special(SPC_NOMOD)
        size(61)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Descriptor")
        size(41)
    }
    field(ASG, DBF_STRING) {
        prompt("Access Security Group")
        size(29)
        special(SPC_AS)
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        promptgroup("20 - Scan")
        menu(menuScan)
        interest(1)
        special(SPC_SCAN)
        prompt("Scan Mechanism")
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPini)
    }
    field(PHAS, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        special(SPC_SCAN)
        prompt("Scan Phase")
    }
    field(EVNT, DBF_STRING) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
    }
    field(TSE, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        promptgroup("10 - Common")
        interest(1)
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        prompt("Disable Value")
        initial("1")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        special(SPC_NOMOD)
        prompt("Monitor List")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             bklnk")
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        interest(3)
        pp(TRUE)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        prompt("Alarm Status")
        special(SPC_NOMOD)
        initial("UDF")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        prompt("New Alarm Status")
        special(SPC_NOMOD)
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
        interest(2)
        menu(menuAlarmSevr)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        interest(2)
        menu(menuYesNo)
        promptgroup("70 - Alarm")
    }
    field(DISS, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("dbPutField process")
    }
    field(RPRO, DBF_UCHAR) {
        prompt("Reprocess ")
        special(SPC_NOMOD)
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
        extra("struct asgMember    *asp")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Scan Private")
        extra("struct scan_element *spvt")
    }
    field(RSET, DBF_NOACCESS) {
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        prompt("DSET address")
        special(SPC_NOMOD)
        extra("unambiguous_dset    *dset")
    }
    field(DPVT, DBF_NOACCESS) {
        extra("void                *dpvt")
        special(SPC_NOMOD)
        prompt("Device Private")
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        extra("struct dbRecordType *rdes")
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        extra("struct lockRecord   *lset")
        special(SPC_NOMOD)
        prompt("Lock Set")
    }
    field(PRIO, DBF_MENU) {
        promptgroup("20 - Scan")
        menu(menuPriority)
        interest(1)
        special(SPC_SCAN)
        prompt("Scheduling Priority")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
    }
    field(UDF, DBF_UCHAR) {
        promptgroup("10 - Common")
        pp(TRUE)
        interest(1)
        prompt("Undefined")
        initial("1")
    }
    field(UDFS, DBF_MENU) {
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Forward Process Link")
    }
    field(VAL, DBF_DOUBLE) {
        pp(TRUE)
        promptgroup("40 - Input")
        asl(ASL0)
        prompt("Current EGU Value")
    }
    field(INP, DBF_INLINK) {
        interest(1)
        promptgroup("40 - Input")
        prompt("Input Specification")
    }
    field(PREC, DBF_SHORT) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Display Precision")
        prop(YES)
    }
    field(LINR, DBF_MENU) {
        promptgroup("60 - Convert")
        pp(TRUE)
        menu(menuConvert)
        interest(1)
        special(SPC_LINCONV)
        prompt("Linearization")
    }
    field(EGUF, DBF_DOUBLE) {
        prompt("Engineer Units Full")
        special(SPC_LINCONV)
        interest(1)
        pp(TRUE)
        promptgroup("60 - Convert")
    }
    field(EGUL, DBF_DOUBLE) {
        pp(TRUE)
        interest(1)
        promptgroup("60 - Convert")
        special(SPC_LINCONV)
        prompt("Engineer Units Low")
    }
    field(EGU, DBF_STRING) {
        size(16)
        prompt("Engineering Units")
        prop(YES)
        promptgroup("80 - Display")
        interest(1)
    }
    field(HOPR, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("High Operating Range")
    }
    field(LOPR, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Low Operating Range")
    }
    field(AOFF, DBF_DOUBLE) {
        interest(1)
        pp(TRUE)
        promptgroup("60 - Convert")
        prompt("Adjustment Offset")
    }
    field(ASLO, DBF_DOUBLE) {
        prompt("Adjustment Slope")
        initial("1")
        promptgroup("60 - Convert")
        pp(TRUE)
        interest(1)
    }
    field(SMOO, DBF_DOUBLE) {
        prompt("Smoothing")
        promptgroup("60 - Convert")
        interest(1)
    }
    field(HIHI, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
        prompt("Hihi Alarm Limit")
        prop(YES)
    }
    field(LOLO, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
        prompt("Lolo Alarm Limit")
        prop(YES)
    }
    field(HIGH, DBF_DOUBLE) {
        prop(YES)
        prompt("High Alarm Limit")
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LOW, DBF_DOUBLE) {
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Low Alarm Limit")
    }
    field(HHSV, DBF_MENU) {
        prompt("Hihi Severity")
        prop(YES)
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
    }
    field(LLSV, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Lolo Severity")
    }
    field(HSV, DBF_MENU) {
        prop(YES)
        prompt("High Severity")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LSV, DBF_MENU) {
        prop(YES)
        prompt("Low Severity")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(HYST, DBF_DOUBLE) {
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Alarm Deadband")
    }
    field(AFTC, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        interest(1)
        prompt("Alarm Filter Time Constant")
    }
    field(ADEL, DBF_DOUBLE) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Archive Deadband")
    }
    field(MDEL, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prompt("Monitor Deadband")
    }
    field(LALM, DBF_DOUBLE) {
        prompt("Last Value Alarmed")
        special(SPC_NOMOD)
        interest(3)
    }
    field(AFVL, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Alarm Filter Value")
    }
    field(ALST, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Archived")
    }
    field(MLST, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Last Val Monitored")
        interest(3)
    }
    field(ESLO, DBF_DOUBLE) {
        initial("1")
        prompt("Raw to EGU Slope")
        interest(2)
        pp(TRUE)
        promptgroup("60 - Convert")
    }
    field(EOFF, DBF_DOUBLE) {
        prompt("Raw to EGU Offset")
        pp(TRUE)
        interest(2)
        promptgroup("60 - Convert")
    }
    field(ROFF, DBF_ULONG) {
        prompt("Raw Offset")
        interest(2)
        pp(TRUE)
    }
    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) {
        interest(3)
        prompt("LastBreak Point")
        special(SPC_NOMOD)
    }
    field(RVAL, DBF_LONG) {
        pp(TRUE)
        prompt("Current Raw Value")
    }
    field(ORAW, DBF_LONG) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Previous Raw Value")
    }
    field(SIOL, DBF_INLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Simulation Input Link")
    }
    field(SVAL, DBF_DOUBLE) {
        prompt("Simulation Value")
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(SIMM, DBF_MENU) {
        prompt("Simulation Mode")
        special(SPC_MOD)
        menu(menuSimm)
        interest(1)
    }
    field(SIMS, DBF_MENU) {
        prompt("Simulation Mode Severity")
        menu(menuAlarmSevr)
        interest(2)
        promptgroup("90 - Simulate")
    }
    field(OLDSIMM, DBF_MENU) {
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
        interest(4)
        menu(menuSimm)
    }
    field(SSCN, DBF_MENU) {
        promptgroup("90 - Simulate")
        interest(1)
        menu(menuScan)
        prompt("Sim. Mode Scan")
        initial("65535")
    }
    field(SDLY, DBF_DOUBLE) {
        initial("-1.0")
        prompt("Sim. Mode Async Delay")
        interest(2)
        promptgroup("90 - Simulate")
    }
    field(SIMPVT, DBF_NOACCESS) {
        interest(4)
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        extra("epicsCallback            *simpvt")
    }
}
device(ai, CONSTANT, devAiSoft, "Soft Channel")
device(ai, CONSTANT, devAiSoftRaw, "Raw Soft Channel")
device(ai, CONSTANT, devAiSoftCallback, "Async Soft Channel")
device(ai, INST_IO, devTimestampAI, "Soft Timestamp")
device(ai, INST_IO, devAiGeneralTime, "General Time")
recordtype(mbboDirect) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %/* Declare Device Support Entry Table */
    %struct mbboDirectRecord;
    %typedef struct mbbodirectdset {
    %    dset common; /*init_record returns: (0, 2)=>(success, success no convert)*/
    %    long (*write_mbbo)(struct mbboDirectRecord *prec); /*returns: (0, 2)=>(success, success no convert)*/
    %} mbbodirectdset;
    %#define HAS_mbbodirectdset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        special(SPC_NOMOD)
        size(61)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        size(41)
        prompt("Descriptor")
    }
    field(ASG, DBF_STRING) {
        size(29)
        special(SPC_AS)
        prompt("Access Security Group")
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        prompt("Scan Mechanism")
        special(SPC_SCAN)
        menu(menuScan)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(PINI, DBF_MENU) {
        menu(menuPini)
        interest(1)
        promptgroup("20 - Scan")
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
    }
    field(EVNT, DBF_STRING) {
        interest(1)
        promptgroup("20 - Scan")
        special(SPC_SCAN)
        size(40)
        prompt("Event Name")
    }
    field(TSE, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
    }
    field(MLIS, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Monitor List")
        extra("ELLLIST             mlis")
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             bklnk")
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        interest(3)
        pp(TRUE)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        initial("UDF")
        prompt("Alarm Status")
        special(SPC_NOMOD)
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Severity")
        menu(menuAlarmSevr)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Status")
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        menu(menuYesNo)
        interest(2)
        promptgroup("70 - Alarm")
    }
    field(DISS, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        prompt("Disable Alarm Sevrty")
    }
    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) {
        interest(1)
        special(SPC_NOMOD)
        prompt("dbPutField process")
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
        extra("struct asgMember    *asp")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        extra("struct scan_element *spvt")
        special(SPC_NOMOD)
        prompt("Scan Private")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("DSET address")
        extra("unambiguous_dset    *dset")
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        prompt("Device Private")
        special(SPC_NOMOD)
        extra("void                *dpvt")
    }
    field(RDES, DBF_NOACCESS) {
        extra("struct dbRecordType *rdes")
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        extra("struct lockRecord   *lset")
        special(SPC_NOMOD)
        prompt("Lock Set")
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        interest(1)
        menu(menuPriority)
        promptgroup("20 - Scan")
        prompt("Scheduling Priority")
        special(SPC_SCAN)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        extra("epicsUInt8          bkpt")
        prompt("Break Point")
        special(SPC_NOMOD)
    }
    field(UDF, DBF_UCHAR) {
        prompt("Undefined")
        initial("1")
        promptgroup("10 - Common")
        pp(TRUE)
        interest(1)
    }
    field(UDFS, DBF_MENU) {
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(TIME, DBF_NOACCESS) {
        prompt("Time")
        special(SPC_NOMOD)
        extra("epicsTimeStamp      time")
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        prompt("Time Tag")
        special(SPC_NOMOD)
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(VAL, DBF_LONG) {
        prompt("Word")
        asl(ASL0)
        promptgroup("50 - Output")
        pp(TRUE)
    }
    field(OMSL, DBF_MENU) {
        prompt("Output Mode Select")
        pp(TRUE)
        menu(menuOmsl)
        interest(1)
        promptgroup("50 - Output")
    }
    field(NOBT, DBF_SHORT) {
        prompt("Number of Bits")
        special(SPC_NOMOD)
        promptgroup("50 - Output")
        interest(1)
    }
    field(DOL, DBF_INLINK) {
        interest(1)
        promptgroup("40 - Input")
        prompt("Desired Output Link")
    }
    field(OUT, DBF_OUTLINK) {
        promptgroup("50 - Output")
        interest(1)
        prompt("Output Specification")
    }
    field(RVAL, DBF_ULONG) {
        pp(TRUE)
        special(SPC_NOMOD)
        prompt("Raw Value")
    }
    field(ORAW, DBF_ULONG) {
        interest(3)
        prompt("Prev Raw Value")
        special(SPC_NOMOD)
    }
    field(RBV, DBF_ULONG) {
        prompt("Readback Value")
        special(SPC_NOMOD)
    }
    field(ORBV, DBF_ULONG) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Readback Value")
    }
    field(MASK, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Hardware Mask")
        interest(1)
    }
    field(MLST, DBF_LONG) {
        special(SPC_NOMOD)
        prompt("Last Value Monitored")
        interest(3)
    }
    field(OBIT, DBF_LONG) {
        special(SPC_NOMOD)
        prompt("Last Bit mask Monitored")
        interest(3)
    }
    field(SHFT, DBF_USHORT) {
        prompt("Shift")
        promptgroup("50 - Output")
        interest(1)
    }
    field(SIOL, DBF_OUTLINK) {
        promptgroup("90 - Simulate")
        interest(1)
        prompt("Simulation Output Link")
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        interest(1)
        promptgroup("90 - Simulate")
    }
    field(SIMM, DBF_MENU) {
        interest(1)
        menu(menuYesNo)
        special(SPC_MOD)
        prompt("Simulation Mode")
    }
    field(SIMS, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        promptgroup("90 - Simulate")
        prompt("Simulation Mode Severity")
    }
    field(OLDSIMM, DBF_MENU) {
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
        interest(4)
        menu(menuSimm)
    }
    field(SSCN, DBF_MENU) {
        prompt("Sim. Mode Scan")
        initial("65535")
        promptgroup("90 - Simulate")
        interest(1)
        menu(menuScan)
    }
    field(SDLY, DBF_DOUBLE) {
        promptgroup("90 - Simulate")
        interest(2)
        prompt("Sim. Mode Async Delay")
        initial("-1.0")
    }
    field(SIMPVT, DBF_NOACCESS) {
        extra("epicsCallback            *simpvt")
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        interest(4)
    }
    field(IVOA, DBF_MENU) {
        promptgroup("50 - Output")
        menu(menuIvoa)
        interest(2)
        prompt("INVALID outpt action")
    }
    field(IVOV, DBF_LONG) {
        prompt("INVALID output value")
        interest(2)
        promptgroup("50 - Output")
    }
    field(B0, DBF_UCHAR) {
        prompt("Bit 0")
        special(SPC_MOD)
        interest(1)
        pp(TRUE)
        promptgroup("51 - Output 0-7")
    }
    field(B1, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("51 - Output 0-7")
        prompt("Bit 1")
        special(SPC_MOD)
    }
    field(B2, DBF_UCHAR) {
        special(SPC_MOD)
        prompt("Bit 2")
        promptgroup("51 - Output 0-7")
        interest(1)
        pp(TRUE)
    }
    field(B3, DBF_UCHAR) {
        promptgroup("51 - Output 0-7")
        pp(TRUE)
        interest(1)
        special(SPC_MOD)
        prompt("Bit 3")
    }
    field(B4, DBF_UCHAR) {
        special(SPC_MOD)
        prompt("Bit 4")
        pp(TRUE)
        interest(1)
        promptgroup("51 - Output 0-7")
    }
    field(B5, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        promptgroup("51 - Output 0-7")
        special(SPC_MOD)
        prompt("Bit 5")
    }
    field(B6, DBF_UCHAR) {
        special(SPC_MOD)
        prompt("Bit 6")
        promptgroup("51 - Output 0-7")
        interest(1)
        pp(TRUE)
    }
    field(B7, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        promptgroup("51 - Output 0-7")
        prompt("Bit 7")
        special(SPC_MOD)
    }
    field(B8, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        promptgroup("52 - Output 8-15")
        special(SPC_MOD)
        prompt("Bit 8")
    }
    field(B9, DBF_UCHAR) {
        promptgroup("52 - Output 8-15")
        interest(1)
        pp(TRUE)
        prompt("Bit 9")
        special(SPC_MOD)
    }
    field(BA, DBF_UCHAR) {
        prompt("Bit 10")
        special(SPC_MOD)
        promptgroup("52 - Output 8-15")
        pp(TRUE)
        interest(1)
    }
    field(BB, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("52 - Output 8-15")
        special(SPC_MOD)
        prompt("Bit 11")
    }
    field(BC, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("52 - Output 8-15")
        special(SPC_MOD)
        prompt("Bit 12")
    }
    field(BD, DBF_UCHAR) {
        special(SPC_MOD)
        prompt("Bit 13")
        interest(1)
        pp(TRUE)
        promptgroup("52 - Output 8-15")
    }
    field(BE, DBF_UCHAR) {
        promptgroup("52 - Output 8-15")
        interest(1)
        pp(TRUE)
        special(SPC_MOD)
        prompt("Bit 14")
    }
    field(BF, DBF_UCHAR) {
        special(SPC_MOD)
        prompt("Bit 15")
        interest(1)
        pp(TRUE)
        promptgroup("52 - Output 8-15")
    }
    field(B10, DBF_UCHAR) {
        special(SPC_MOD)
        prompt("Bit 16")
        promptgroup("53 - Output 16-23")
        pp(TRUE)
        interest(1)
    }
    field(B11, DBF_UCHAR) {
        special(SPC_MOD)
        prompt("Bit 17")
        promptgroup("53 - Output 16-23")
        pp(TRUE)
        interest(1)
    }
    field(B12, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("53 - Output 16-23")
        prompt("Bit 18")
        special(SPC_MOD)
    }
    field(B13, DBF_UCHAR) {
        prompt("Bit 19")
        special(SPC_MOD)
        pp(TRUE)
        interest(1)
        promptgroup("53 - Output 16-23")
    }
    field(B14, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("53 - Output 16-23")
        prompt("Bit 20")
        special(SPC_MOD)
    }
    field(B15, DBF_UCHAR) {
        prompt("Bit 21")
        special(SPC_MOD)
        interest(1)
        pp(TRUE)
        promptgroup("53 - Output 16-23")
    }
    field(B16, DBF_UCHAR) {
        special(SPC_MOD)
        prompt("Bit 22")
        promptgroup("53 - Output 16-23")
        pp(TRUE)
        interest(1)
    }
    field(B17, DBF_UCHAR) {
        special(SPC_MOD)
        prompt("Bit 23")
        pp(TRUE)
        interest(1)
        promptgroup("53 - Output 16-23")
    }
    field(B18, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("54 - Output 24-31")
        special(SPC_MOD)
        prompt("Bit 24")
    }
    field(B19, DBF_UCHAR) {
        promptgroup("54 - Output 24-31")
        interest(1)
        pp(TRUE)
        special(SPC_MOD)
        prompt("Bit 25")
    }
    field(B1A, DBF_UCHAR) {
        promptgroup("54 - Output 24-31")
        interest(1)
        pp(TRUE)
        prompt("Bit 26")
        special(SPC_MOD)
    }
    field(B1B, DBF_UCHAR) {
        promptgroup("54 - Output 24-31")
        pp(TRUE)
        interest(1)
        prompt("Bit 27")
        special(SPC_MOD)
    }
    field(B1C, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        promptgroup("54 - Output 24-31")
        special(SPC_MOD)
        prompt("Bit 28")
    }
    field(B1D, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("54 - Output 24-31")
        prompt("Bit 29")
        special(SPC_MOD)
    }
    field(B1E, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        promptgroup("54 - Output 24-31")
        prompt("Bit 30")
        special(SPC_MOD)
    }
    field(B1F, DBF_UCHAR) {
        promptgroup("54 - Output 24-31")
        interest(1)
        pp(TRUE)
        prompt("Bit 31")
        special(SPC_MOD)
    }
}
device(mbboDirect, CONSTANT, devMbboDirectSoft, "Soft Channel")
device(mbboDirect, CONSTANT, devMbboDirectSoftRaw, "Raw Soft Channel")
device(mbboDirect, CONSTANT, devMbboDirectSoftCallback, "Async Soft Channel")
recordtype(state) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        size(61)
        special(SPC_NOMOD)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        size(41)
        prompt("Descriptor")
    }
    field(ASG, DBF_STRING) {
        prompt("Access Security Group")
        size(29)
        special(SPC_AS)
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        prompt("Scan Mechanism")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        menu(menuScan)
        interest(1)
    }
    field(PINI, DBF_MENU) {
        menu(menuPini)
        interest(1)
        promptgroup("20 - Scan")
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        special(SPC_SCAN)
        prompt("Scan Phase")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(EVNT, DBF_STRING) {
        prompt("Event Name")
        size(40)
        special(SPC_SCAN)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSE, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
    }
    field(MLIS, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             mlis")
        prompt("Monitor List")
        special(SPC_NOMOD)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        extra("ELLLIST             bklnk")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        interest(3)
        pp(TRUE)
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        initial("UDF")
        prompt("Alarm Status")
        special(SPC_NOMOD)
    }
    field(SEVR, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Severity")
        menu(menuAlarmSevr)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(NSTA, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Status")
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
        interest(2)
        menu(menuAlarmSevr)
    }
    field(ACKT, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        promptgroup("70 - Alarm")
        interest(2)
        menu(menuYesNo)
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        prompt("Lock Count")
        special(SPC_NOMOD)
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        prompt("Record active")
        special(SPC_NOMOD)
    }
    field(PUTF, DBF_UCHAR) {
        prompt("dbPutField process")
        special(SPC_NOMOD)
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Reprocess ")
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        extra("struct processNotifyRecord *ppnr")
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        prompt("Scan Private")
        special(SPC_NOMOD)
        extra("struct scan_element *spvt")
    }
    field(RSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of RSET")
        extra("struct typed_rset   *rset")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        extra("unambiguous_dset    *dset")
        prompt("DSET address")
        special(SPC_NOMOD)
    }
    field(DPVT, DBF_NOACCESS) {
        extra("void                *dpvt")
        special(SPC_NOMOD)
        prompt("Device Private")
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        extra("struct dbRecordType *rdes")
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        extra("struct lockRecord   *lset")
        special(SPC_NOMOD)
        prompt("Lock Set")
    }
    field(PRIO, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scheduling Priority")
        interest(1)
        menu(menuPriority)
        promptgroup("20 - Scan")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        prompt("Break Point")
        special(SPC_NOMOD)
        extra("epicsUInt8          bkpt")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        initial("1")
        prompt("Undefined")
        pp(TRUE)
        interest(1)
        promptgroup("10 - Common")
    }
    field(UDFS, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        extra("epicsTimeStamp      time")
        special(SPC_NOMOD)
        prompt("Time")
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(VAL, DBF_STRING) {
        size(20)
        prompt("Value")
        asl(ASL0)
        promptgroup("40 - Input")
        pp(TRUE)
    }
    field(OVAL, DBF_STRING) {
        interest(3)
        prompt("Prev Value")
        special(SPC_NOMOD)
        size(20)
    }
}
recordtype(seq) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        size(61)
        special(SPC_NOMOD)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Descriptor")
        size(41)
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        size(29)
        special(SPC_AS)
    }
    field(SCAN, DBF_MENU) {
        prompt("Scan Mechanism")
        special(SPC_SCAN)
        interest(1)
        menu(menuScan)
        promptgroup("20 - Scan")
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        interest(1)
        menu(menuPini)
        promptgroup("20 - Scan")
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
    }
    field(EVNT, DBF_STRING) {
        interest(1)
        promptgroup("20 - Scan")
        size(40)
        special(SPC_SCAN)
        prompt("Event Name")
    }
    field(TSE, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        promptgroup("10 - Common")
        interest(1)
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        prompt("Disable Value")
        initial("1")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        prompt("Monitor lock")
        special(SPC_NOMOD)
        extra("epicsMutexId        mlok")
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        special(SPC_NOMOD)
        prompt("Monitor List")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        extra("ELLLIST             bklnk")
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        interest(3)
        pp(TRUE)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        special(SPC_NOMOD)
        prompt("Alarm Status")
        initial("UDF")
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Severity")
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(NSTA, DBF_MENU) {
        interest(2)
        menu(menuAlarmStat)
        special(SPC_NOMOD)
        prompt("New Alarm Status")
    }
    field(NSEV, DBF_MENU) {
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
        interest(2)
        menu(menuAlarmSevr)
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(ACKS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
    }
    field(ACKT, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuYesNo)
        interest(2)
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        prompt("Lock Count")
        special(SPC_NOMOD)
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        prompt("dbPutField process")
        special(SPC_NOMOD)
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Reprocess ")
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        extra("struct scan_element *spvt")
        prompt("Scan Private")
        special(SPC_NOMOD)
    }
    field(RSET, DBF_NOACCESS) {
        prompt("Address of RSET")
        special(SPC_NOMOD)
        extra("struct typed_rset   *rset")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("DSET address")
        extra("unambiguous_dset    *dset")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        prompt("Device Private")
        special(SPC_NOMOD)
        extra("void                *dpvt")
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Lock Set")
        extra("struct lockRecord   *lset")
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
        prompt("Scheduling Priority")
        special(SPC_SCAN)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        prompt("Break Point")
        special(SPC_NOMOD)
        extra("epicsUInt8          bkpt")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        prompt("Undefined")
        initial("1")
        promptgroup("10 - Common")
        interest(1)
        pp(TRUE)
    }
    field(UDFS, DBF_MENU) {
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        prompt("Time")
        special(SPC_NOMOD)
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        prompt("Time Tag")
        special(SPC_NOMOD)
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Forward Process Link")
    }
    field(VAL, DBF_LONG) {
        pp(TRUE)
        prompt("Used to trigger")
        asl(ASL0)
    }
    field(SELM, DBF_MENU) {
        interest(1)
        menu(seqSELM)
        promptgroup("30 - Action")
        prompt("Select Mechanism")
    }
    field(SELN, DBF_USHORT) {
        interest(1)
        prompt("Link Selection")
        initial("1")
    }
    field(SELL, DBF_INLINK) {
        prompt("Link Selection Loc")
        promptgroup("30 - Action")
        interest(1)
    }
    field(OFFS, DBF_SHORT) {
        initial("0")
        prompt("Offset for Specified")
        interest(1)
        promptgroup("30 - Action")
    }
    field(SHFT, DBF_SHORT) {
        promptgroup("30 - Action")
        interest(1)
        prompt("Shift for Mask mode")
        initial("-1")
    }
    field(OLDN, DBF_USHORT) {
        prompt("Old Selection")
        interest(4)
    }
    field(PREC, DBF_SHORT) {
        interest(1)
        promptgroup("80 - Display")
        prompt("Display Precision")
    }
    field(DLY0, DBF_DOUBLE) {
        interest(1)
        promptgroup("41 - Link 0-7")
        prompt("Delay 0")
    }
    field(DOL0, DBF_INLINK) {
        prompt("Input link 0")
        interest(1)
        promptgroup("41 - Link 0-7")
    }
    field(DO0, DBF_DOUBLE) {
        prompt("Value 0")
        interest(1)
    }
    field(LNK0, DBF_OUTLINK) {
        interest(1)
        promptgroup("41 - Link 0-7")
        prompt("Output Link 0")
    }
    field(DLY1, DBF_DOUBLE) {
        prompt("Delay 1")
        interest(1)
        promptgroup("41 - Link 0-7")
    }
    field(DOL1, DBF_INLINK) {
        interest(1)
        promptgroup("41 - Link 0-7")
        prompt("Input link1")
    }
    field(DO1, DBF_DOUBLE) {
        interest(1)
        prompt("Value 1")
    }
    field(LNK1, DBF_OUTLINK) {
        prompt("Output Link 1")
        interest(1)
        promptgroup("41 - Link 0-7")
    }
    field(DLY2, DBF_DOUBLE) {
        prompt("Delay 2")
        promptgroup("41 - Link 0-7")
        interest(1)
    }
    field(DOL2, DBF_INLINK) {
        prompt("Input link 2")
        promptgroup("41 - Link 0-7")
        interest(1)
    }
    field(DO2, DBF_DOUBLE) {
        prompt("Value 2")
        interest(1)
    }
    field(LNK2, DBF_OUTLINK) {
        prompt("Output Link 2")
        promptgroup("41 - Link 0-7")
        interest(1)
    }
    field(DLY3, DBF_DOUBLE) {
        promptgroup("41 - Link 0-7")
        interest(1)
        prompt("Delay 3")
    }
    field(DOL3, DBF_INLINK) {
        prompt("Input link 3")
        interest(1)
        promptgroup("41 - Link 0-7")
    }
    field(DO3, DBF_DOUBLE) {
        interest(1)
        prompt("Value 3")
    }
    field(LNK3, DBF_OUTLINK) {
        prompt("Output Link 3")
        promptgroup("41 - Link 0-7")
        interest(1)
    }
    field(DLY4, DBF_DOUBLE) {
        prompt("Delay 4")
        promptgroup("41 - Link 0-7")
        interest(1)
    }
    field(DOL4, DBF_INLINK) {
        prompt("Input link 4")
        promptgroup("41 - Link 0-7")
        interest(1)
    }
    field(DO4, DBF_DOUBLE) {
        interest(1)
        prompt("Value 4")
    }
    field(LNK4, DBF_OUTLINK) {
        interest(1)
        promptgroup("41 - Link 0-7")
        prompt("Output Link 4")
    }
    field(DLY5, DBF_DOUBLE) {
        promptgroup("41 - Link 0-7")
        interest(1)
        prompt("Delay 5")
    }
    field(DOL5, DBF_INLINK) {
        interest(1)
        promptgroup("41 - Link 0-7")
        prompt("Input link 5")
    }
    field(DO5, DBF_DOUBLE) {
        interest(1)
        prompt("Value 5")
    }
    field(LNK5, DBF_OUTLINK) {
        prompt("Output Link 5")
        interest(1)
        promptgroup("41 - Link 0-7")
    }
    field(DLY6, DBF_DOUBLE) {
        interest(1)
        promptgroup("41 - Link 0-7")
        prompt("Delay 6")
    }
    field(DOL6, DBF_INLINK) {
        prompt("Input link 6")
        interest(1)
        promptgroup("41 - Link 0-7")
    }
    field(DO6, DBF_DOUBLE) {
        interest(1)
        prompt("Value 6")
    }
    field(LNK6, DBF_OUTLINK) {
        promptgroup("41 - Link 0-7")
        interest(1)
        prompt("Output Link 6")
    }
    field(DLY7, DBF_DOUBLE) {
        prompt("Delay 7")
        interest(1)
        promptgroup("41 - Link 0-7")
    }
    field(DOL7, DBF_INLINK) {
        prompt("Input link 7")
        interest(1)
        promptgroup("41 - Link 0-7")
    }
    field(DO7, DBF_DOUBLE) {
        interest(1)
        prompt("Value 7")
    }
    field(LNK7, DBF_OUTLINK) {
        interest(1)
        promptgroup("41 - Link 0-7")
        prompt("Output Link 7")
    }
    field(DLY8, DBF_DOUBLE) {
        interest(1)
        promptgroup("42 - Link 8-F")
        prompt("Delay 8")
    }
    field(DOL8, DBF_INLINK) {
        prompt("Input link 8")
        interest(1)
        promptgroup("42 - Link 8-F")
    }
    field(DO8, DBF_DOUBLE) {
        interest(1)
        prompt("Value 8")
    }
    field(LNK8, DBF_OUTLINK) {
        prompt("Output Link 8")
        promptgroup("42 - Link 8-F")
        interest(1)
    }
    field(DLY9, DBF_DOUBLE) {
        prompt("Delay 9")
        promptgroup("42 - Link 8-F")
        interest(1)
    }
    field(DOL9, DBF_INLINK) {
        promptgroup("42 - Link 8-F")
        interest(1)
        prompt("Input link 9")
    }
    field(DO9, DBF_DOUBLE) {
        prompt("Value 9")
        interest(1)
    }
    field(LNK9, DBF_OUTLINK) {
        prompt("Output Link 9")
        promptgroup("42 - Link 8-F")
        interest(1)
    }
    field(DLYA, DBF_DOUBLE) {
        prompt("Delay 10")
        promptgroup("42 - Link 8-F")
        interest(1)
    }
    field(DOLA, DBF_INLINK) {
        promptgroup("42 - Link 8-F")
        interest(1)
        prompt("Input link 10")
    }
    field(DOA, DBF_DOUBLE) {
        interest(1)
        prompt("Value 10")
    }
    field(LNKA, DBF_OUTLINK) {
        promptgroup("42 - Link 8-F")
        interest(1)
        prompt("Output Link 10")
    }
    field(DLYB, DBF_DOUBLE) {
        prompt("Delay 11")
        interest(1)
        promptgroup("42 - Link 8-F")
    }
    field(DOLB, DBF_INLINK) {
        prompt("Input link 11")
        promptgroup("42 - Link 8-F")
        interest(1)
    }
    field(DOB, DBF_DOUBLE) {
        prompt("Value 11")
        interest(1)
    }
    field(LNKB, DBF_OUTLINK) {
        promptgroup("42 - Link 8-F")
        interest(1)
        prompt("Output Link 11")
    }
    field(DLYC, DBF_DOUBLE) {
        promptgroup("42 - Link 8-F")
        interest(1)
        prompt("Delay 12")
    }
    field(DOLC, DBF_INLINK) {
        promptgroup("42 - Link 8-F")
        interest(1)
        prompt("Input link 12")
    }
    field(DOC, DBF_DOUBLE) {
        interest(1)
        prompt("Value 12")
    }
    field(LNKC, DBF_OUTLINK) {
        prompt("Output Link 12")
        interest(1)
        promptgroup("42 - Link 8-F")
    }
    field(DLYD, DBF_DOUBLE) {
        prompt("Delay 13")
        promptgroup("42 - Link 8-F")
        interest(1)
    }
    field(DOLD, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Link 8-F")
        prompt("Input link 13")
    }
    field(DOD, DBF_DOUBLE) {
        interest(1)
        prompt("Value 13")
    }
    field(LNKD, DBF_OUTLINK) {
        prompt("Output Link 13")
        promptgroup("42 - Link 8-F")
        interest(1)
    }
    field(DLYE, DBF_DOUBLE) {
        promptgroup("42 - Link 8-F")
        interest(1)
        prompt("Delay 14")
    }
    field(DOLE, DBF_INLINK) {
        prompt("Input link 14")
        interest(1)
        promptgroup("42 - Link 8-F")
    }
    field(DOE, DBF_DOUBLE) {
        interest(1)
        prompt("Value 14")
    }
    field(LNKE, DBF_OUTLINK) {
        prompt("Output Link 14")
        interest(1)
        promptgroup("42 - Link 8-F")
    }
    field(DLYF, DBF_DOUBLE) {
        prompt("Delay 15")
        interest(1)
        promptgroup("42 - Link 8-F")
    }
    field(DOLF, DBF_INLINK) {
        prompt("Input link 15")
        interest(1)
        promptgroup("42 - Link 8-F")
    }
    field(DOF, DBF_DOUBLE) {
        interest(1)
        prompt("Value 15")
    }
    field(LNKF, DBF_OUTLINK) {
        interest(1)
        promptgroup("42 - Link 8-F")
        prompt("Output Link 15")
    }
}
recordtype(permissive) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        size(61)
        special(SPC_NOMOD)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        size(41)
        prompt("Descriptor")
    }
    field(ASG, DBF_STRING) {
        special(SPC_AS)
        size(29)
        prompt("Access Security Group")
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        prompt("Scan Mechanism")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        menu(menuScan)
        interest(1)
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        interest(1)
        menu(menuPini)
        promptgroup("20 - Scan")
    }
    field(PHAS, DBF_SHORT) {
        special(SPC_SCAN)
        prompt("Scan Phase")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(EVNT, DBF_STRING) {
        size(40)
        special(SPC_SCAN)
        prompt("Event Name")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSE, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        prompt("Disable Value")
        initial("1")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Monitor lock")
        extra("epicsMutexId        mlok")
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        prompt("Monitor List")
        special(SPC_NOMOD)
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        extra("ELLLIST             bklnk")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        pp(TRUE)
        interest(3)
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        prompt("Alarm Status")
        special(SPC_NOMOD)
        initial("UDF")
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Status")
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
        menu(menuAlarmSevr)
        interest(2)
    }
    field(NAMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
        menu(menuAlarmSevr)
        interest(2)
    }
    field(ACKT, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(2)
        menu(menuYesNo)
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        prompt("Lock Count")
        special(SPC_NOMOD)
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        prompt("Record active")
        special(SPC_NOMOD)
    }
    field(PUTF, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("dbPutField process")
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Reprocess ")
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        extra("struct processNotify *ppn")
        prompt("pprocessNotify")
        special(SPC_NOMOD)
    }
    field(PPNR, DBF_NOACCESS) {
        extra("struct processNotifyRecord *ppnr")
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Scan Private")
        extra("struct scan_element *spvt")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        extra("struct typed_rset   *rset")
        prompt("Address of RSET")
        special(SPC_NOMOD)
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        extra("unambiguous_dset    *dset")
        prompt("DSET address")
        special(SPC_NOMOD)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Device Private")
        extra("void                *dpvt")
    }
    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) {
        promptgroup("20 - Scan")
        menu(menuPriority)
        interest(1)
        prompt("Scheduling Priority")
        special(SPC_SCAN)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        initial("1")
        prompt("Undefined")
        pp(TRUE)
        interest(1)
        promptgroup("10 - Common")
    }
    field(UDFS, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
    }
    field(TIME, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        special(SPC_NOMOD)
        prompt("Time Tag")
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(VAL, DBF_USHORT) {
        pp(TRUE)
        promptgroup("40 - Input")
        asl(ASL0)
        prompt("Status")
    }
    field(WFLG, DBF_USHORT) {
        prompt("Wait Flag")
        pp(TRUE)
    }
    field(LABL, DBF_STRING) {
        prompt("Button Label")
        size(20)
        promptgroup("80 - Display")
        interest(1)
        pp(TRUE)
    }
    field(OVAL, DBF_USHORT) {
        interest(3)
        prompt("Old Status")
        special(SPC_NOMOD)
    }
    field(OFLG, DBF_USHORT) {
        prompt("Old Flag")
        special(SPC_NOMOD)
        interest(3)
    }
}
recordtype(aSub) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %struct aSubRecord;
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        special(SPC_NOMOD)
        size(61)
    }
    field(DESC, DBF_STRING) {
        size(41)
        prompt("Descriptor")
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        prompt("Access Security Group")
        special(SPC_AS)
        size(29)
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        promptgroup("20 - Scan")
        menu(menuScan)
        interest(1)
        special(SPC_SCAN)
        prompt("Scan Mechanism")
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        promptgroup("20 - Scan")
        menu(menuPini)
        interest(1)
    }
    field(PHAS, DBF_SHORT) {
        special(SPC_SCAN)
        prompt("Scan Phase")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(EVNT, DBF_STRING) {
        interest(1)
        promptgroup("20 - Scan")
        size(40)
        special(SPC_SCAN)
        prompt("Event Name")
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSEL, DBF_INLINK) {
        prompt("Time Stamp Link")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        interest(1)
        promptgroup("10 - Common")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        prompt("Disable Value")
        initial("1")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Monitor lock")
        extra("epicsMutexId        mlok")
    }
    field(MLIS, DBF_NOACCESS) {
        prompt("Monitor List")
        special(SPC_NOMOD)
        extra("ELLLIST             mlis")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             bklnk")
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        pp(TRUE)
        interest(3)
    }
    field(STAT, DBF_MENU) {
        initial("UDF")
        special(SPC_NOMOD)
        prompt("Alarm Status")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        prompt("Alarm Severity")
        special(SPC_NOMOD)
        menu(menuAlarmSevr)
    }
    field(AMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        interest(2)
        menu(menuAlarmStat)
        special(SPC_NOMOD)
        prompt("New Alarm Status")
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        menu(menuYesNo)
        interest(2)
        promptgroup("70 - Alarm")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
    }
    field(LCNT, DBF_UCHAR) {
        prompt("Lock Count")
        special(SPC_NOMOD)
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Record active")
    }
    field(PUTF, DBF_UCHAR) {
        prompt("dbPutField process")
        special(SPC_NOMOD)
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Reprocess ")
    }
    field(ASP, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        extra("struct asgMember    *asp")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        extra("struct processNotifyRecord *ppnr")
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        extra("struct scan_element *spvt")
        special(SPC_NOMOD)
        prompt("Scan Private")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        extra("unambiguous_dset    *dset")
        prompt("DSET address")
        special(SPC_NOMOD)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Device Private")
        extra("void                *dpvt")
    }
    field(RDES, DBF_NOACCESS) {
        extra("struct dbRecordType *rdes")
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        extra("struct lockRecord   *lset")
        prompt("Lock Set")
        special(SPC_NOMOD)
    }
    field(PRIO, DBF_MENU) {
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
        special(SPC_SCAN)
        prompt("Scheduling Priority")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
    }
    field(UDF, DBF_UCHAR) {
        prompt("Undefined")
        initial("1")
        promptgroup("10 - Common")
        pp(TRUE)
        interest(1)
    }
    field(UDFS, DBF_MENU) {
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        prompt("Time")
        special(SPC_NOMOD)
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        special(SPC_NOMOD)
        prompt("Time Tag")
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(VAL, DBF_LONG) {
        prompt("Subr. return value")
        asl(ASL0)
    }
    field(OVAL, DBF_LONG) {
        special(SPC_NOMOD)
        prompt("Old return value")
        interest(3)
    }
    field(INAM, DBF_STRING) {
        interest(1)
        promptgroup("30 - Action")
        prompt("Initialize Subr. Name")
        special(SPC_NOMOD)
        size(41)
    }
    field(LFLG, DBF_MENU) {
        prompt("Subr. Input Enable")
        menu(aSubLFLG)
        interest(1)
        promptgroup("30 - Action")
    }
    field(SUBL, DBF_INLINK) {
        interest(1)
        promptgroup("30 - Action")
        prompt("Subroutine Name Link")
        special(SPC_NOMOD)
    }
    field(SNAM, DBF_STRING) {
        promptgroup("30 - Action")
        interest(1)
        prompt("Process Subr. Name")
        size(41)
        special(SPC_MOD)
    }
    field(ONAM, DBF_STRING) {
        promptgroup("30 - Action")
        interest(3)
        prompt("Old Subr. Name")
        special(SPC_NOMOD)
        size(41)
    }
    field(SADR, DBF_NOACCESS) {
        extra("long (*sadr)(struct aSubRecord *)")
        prompt("Subroutine Address")
        special(SPC_NOMOD)
        interest(2)
    }
    field(CADR, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Subroutine Cleanup Address")
        extra("void (*cadr)(struct aSubRecord *)")
        interest(2)
    }
    field(BRSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        prompt("Bad Return Severity")
    }
    field(PREC, DBF_SHORT) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Display Precision")
    }
    field(EFLG, DBF_MENU) {
        promptgroup("50 - Output")
        menu(aSubEFLG)
        interest(1)
        prompt("Output Event Flag")
        initial("1")
    }
    field(INPA, DBF_INLINK) {
        prompt("Input Link A")
        promptgroup("41 - Input A-G")
        interest(1)
    }
    field(INPB, DBF_INLINK) {
        prompt("Input Link B")
        promptgroup("41 - Input A-G")
        interest(1)
    }
    field(INPC, DBF_INLINK) {
        promptgroup("41 - Input A-G")
        interest(1)
        prompt("Input Link C")
    }
    field(INPD, DBF_INLINK) {
        prompt("Input Link D")
        promptgroup("41 - Input A-G")
        interest(1)
    }
    field(INPE, DBF_INLINK) {
        interest(1)
        promptgroup("41 - Input A-G")
        prompt("Input Link E")
    }
    field(INPF, DBF_INLINK) {
        prompt("Input Link F")
        interest(1)
        promptgroup("41 - Input A-G")
    }
    field(INPG, DBF_INLINK) {
        promptgroup("41 - Input A-G")
        interest(1)
        prompt("Input Link G")
    }
    field(INPH, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input H-N")
        prompt("Input Link H")
    }
    field(INPI, DBF_INLINK) {
        prompt("Input Link I")
        interest(1)
        promptgroup("42 - Input H-N")
    }
    field(INPJ, DBF_INLINK) {
        promptgroup("42 - Input H-N")
        interest(1)
        prompt("Input Link J")
    }
    field(INPK, DBF_INLINK) {
        prompt("Input Link K")
        interest(1)
        promptgroup("42 - Input H-N")
    }
    field(INPL, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input H-N")
        prompt("Input Link L")
    }
    field(INPM, DBF_INLINK) {
        prompt("Input Link M")
        promptgroup("42 - Input H-N")
        interest(1)
    }
    field(INPN, DBF_INLINK) {
        prompt("Input Link N")
        promptgroup("42 - Input H-N")
        interest(1)
    }
    field(INPO, DBF_INLINK) {
        promptgroup("43 - Input O-U")
        interest(1)
        prompt("Input Link O")
    }
    field(INPP, DBF_INLINK) {
        prompt("Input Link P")
        promptgroup("43 - Input O-U")
        interest(1)
    }
    field(INPQ, DBF_INLINK) {
        prompt("Input Link Q")
        promptgroup("43 - Input O-U")
        interest(1)
    }
    field(INPR, DBF_INLINK) {
        interest(1)
        promptgroup("43 - Input O-U")
        prompt("Input Link R")
    }
    field(INPS, DBF_INLINK) {
        prompt("Input Link S")
        promptgroup("43 - Input O-U")
        interest(1)
    }
    field(INPT, DBF_INLINK) {
        interest(1)
        promptgroup("43 - Input O-U")
        prompt("Input Link T")
    }
    field(INPU, DBF_INLINK) {
        prompt("Input Link U")
        promptgroup("43 - Input O-U")
        interest(1)
    }
    field(A, DBF_NOACCESS) {
        prompt("Input value A")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *a")
        interest(2)
    }
    field(B, DBF_NOACCESS) {
        interest(2)
        asl(ASL0)
        extra("void *b")
        prompt("Input value B")
        special(SPC_DBADDR)
    }
    field(C, DBF_NOACCESS) {
        interest(2)
        asl(ASL0)
        extra("void *c")
        prompt("Input value C")
        special(SPC_DBADDR)
    }
    field(D, DBF_NOACCESS) {
        interest(2)
        extra("void *d")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Input value D")
    }
    field(E, DBF_NOACCESS) {
        prompt("Input value E")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *e")
        interest(2)
    }
    field(F, DBF_NOACCESS) {
        interest(2)
        prompt("Input value F")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *f")
    }
    field(G, DBF_NOACCESS) {
        prompt("Input value G")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *g")
        interest(2)
    }
    field(H, DBF_NOACCESS) {
        special(SPC_DBADDR)
        prompt("Input value H")
        extra("void *h")
        asl(ASL0)
        interest(2)
    }
    field(I, DBF_NOACCESS) {
        asl(ASL0)
        extra("void *i")
        prompt("Input value I")
        special(SPC_DBADDR)
        interest(2)
    }
    field(J, DBF_NOACCESS) {
        asl(ASL0)
        extra("void *j")
        prompt("Input value J")
        special(SPC_DBADDR)
        interest(2)
    }
    field(K, DBF_NOACCESS) {
        interest(2)
        prompt("Input value K")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *k")
    }
    field(L, DBF_NOACCESS) {
        interest(2)
        prompt("Input value L")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *l")
    }
    field(M, DBF_NOACCESS) {
        prompt("Input value M")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *m")
        interest(2)
    }
    field(N, DBF_NOACCESS) {
        asl(ASL0)
        extra("void *n")
        prompt("Input value N")
        special(SPC_DBADDR)
        interest(2)
    }
    field(O, DBF_NOACCESS) {
        interest(2)
        prompt("Input value O")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *o")
    }
    field(P, DBF_NOACCESS) {
        interest(2)
        asl(ASL0)
        extra("void *p")
        prompt("Input value P")
        special(SPC_DBADDR)
    }
    field(Q, DBF_NOACCESS) {
        interest(2)
        asl(ASL0)
        extra("void *q")
        prompt("Input value Q")
        special(SPC_DBADDR)
    }
    field(R, DBF_NOACCESS) {
        asl(ASL0)
        extra("void *r")
        prompt("Input value R")
        special(SPC_DBADDR)
        interest(2)
    }
    field(S, DBF_NOACCESS) {
        interest(2)
        extra("void *s")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Input value S")
    }
    field(T, DBF_NOACCESS) {
        interest(2)
        special(SPC_DBADDR)
        prompt("Input value T")
        extra("void *t")
        asl(ASL0)
    }
    field(U, DBF_NOACCESS) {
        asl(ASL0)
        extra("void *u")
        prompt("Input value U")
        special(SPC_DBADDR)
        interest(2)
    }
    field(FTA, DBF_MENU) {
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of A")
        promptgroup("41 - Input A-G")
        interest(1)
        menu(menuFtype)
    }
    field(FTB, DBF_MENU) {
        initial("DOUBLE")
        promptgroup("41 - Input A-G")
        interest(1)
        menu(menuFtype)
        prompt("Type of B")
        special(SPC_NOMOD)
    }
    field(FTC, DBF_MENU) {
        menu(menuFtype)
        interest(1)
        promptgroup("41 - Input A-G")
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of C")
    }
    field(FTD, DBF_MENU) {
        prompt("Type of D")
        special(SPC_NOMOD)
        initial("DOUBLE")
        promptgroup("41 - Input A-G")
        menu(menuFtype)
        interest(1)
    }
    field(FTE, DBF_MENU) {
        prompt("Type of E")
        special(SPC_NOMOD)
        initial("DOUBLE")
        promptgroup("41 - Input A-G")
        menu(menuFtype)
        interest(1)
    }
    field(FTF, DBF_MENU) {
        promptgroup("41 - Input A-G")
        menu(menuFtype)
        interest(1)
        prompt("Type of F")
        special(SPC_NOMOD)
        initial("DOUBLE")
    }
    field(FTG, DBF_MENU) {
        initial("DOUBLE")
        prompt("Type of G")
        special(SPC_NOMOD)
        interest(1)
        menu(menuFtype)
        promptgroup("41 - Input A-G")
    }
    field(FTH, DBF_MENU) {
        promptgroup("42 - Input H-N")
        interest(1)
        menu(menuFtype)
        prompt("Type of H")
        special(SPC_NOMOD)
        initial("DOUBLE")
    }
    field(FTI, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Type of I")
        initial("DOUBLE")
        promptgroup("42 - Input H-N")
        interest(1)
        menu(menuFtype)
    }
    field(FTJ, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Type of J")
        promptgroup("42 - Input H-N")
        interest(1)
        menu(menuFtype)
        initial("DOUBLE")
    }
    field(FTK, DBF_MENU) {
        initial("DOUBLE")
        prompt("Type of K")
        special(SPC_NOMOD)
        interest(1)
        menu(menuFtype)
        promptgroup("42 - Input H-N")
    }
    field(FTL, DBF_MENU) {
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of L")
        interest(1)
        menu(menuFtype)
        promptgroup("42 - Input H-N")
    }
    field(FTM, DBF_MENU) {
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of M")
        promptgroup("42 - Input H-N")
        interest(1)
        menu(menuFtype)
    }
    field(FTN, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Type of N")
        initial("DOUBLE")
        promptgroup("42 - Input H-N")
        interest(1)
        menu(menuFtype)
    }
    field(FTO, DBF_MENU) {
        initial("DOUBLE")
        prompt("Type of O")
        special(SPC_NOMOD)
        promptgroup("43 - Input O-U")
        menu(menuFtype)
        interest(1)
    }
    field(FTP, DBF_MENU) {
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of P")
        interest(1)
        menu(menuFtype)
        promptgroup("43 - Input O-U")
    }
    field(FTQ, DBF_MENU) {
        promptgroup("43 - Input O-U")
        menu(menuFtype)
        interest(1)
        special(SPC_NOMOD)
        prompt("Type of Q")
        initial("DOUBLE")
    }
    field(FTR, DBF_MENU) {
        initial("DOUBLE")
        promptgroup("43 - Input O-U")
        menu(menuFtype)
        interest(1)
        prompt("Type of R")
        special(SPC_NOMOD)
    }
    field(FTS, DBF_MENU) {
        interest(1)
        menu(menuFtype)
        promptgroup("43 - Input O-U")
        initial("DOUBLE")
        prompt("Type of S")
        special(SPC_NOMOD)
    }
    field(FTT, DBF_MENU) {
        promptgroup("43 - Input O-U")
        menu(menuFtype)
        interest(1)
        prompt("Type of T")
        special(SPC_NOMOD)
        initial("DOUBLE")
    }
    field(FTU, DBF_MENU) {
        initial("DOUBLE")
        interest(1)
        menu(menuFtype)
        promptgroup("43 - Input O-U")
        prompt("Type of U")
        special(SPC_NOMOD)
    }
    field(NOA, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Max. elements in A")
        interest(1)
        promptgroup("41 - Input A-G")
    }
    field(NOB, DBF_ULONG) {
        promptgroup("41 - Input A-G")
        interest(1)
        special(SPC_NOMOD)
        prompt("Max. elements in B")
        initial("1")
    }
    field(NOC, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Max. elements in C")
        initial("1")
        promptgroup("41 - Input A-G")
        interest(1)
    }
    field(NOD, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Max. elements in D")
        interest(1)
        promptgroup("41 - Input A-G")
    }
    field(NOE, DBF_ULONG) {
        interest(1)
        promptgroup("41 - Input A-G")
        initial("1")
        special(SPC_NOMOD)
        prompt("Max. elements in E")
    }
    field(NOF, DBF_ULONG) {
        initial("1")
        prompt("Max. elements in F")
        special(SPC_NOMOD)
        interest(1)
        promptgroup("41 - Input A-G")
    }
    field(NOG, DBF_ULONG) {
        interest(1)
        promptgroup("41 - Input A-G")
        initial("1")
        prompt("Max. elements in G")
        special(SPC_NOMOD)
    }
    field(NOH, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Max. elements in H")
        initial("1")
        promptgroup("42 - Input H-N")
        interest(1)
    }
    field(NOI, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Max. elements in I")
        initial("1")
        promptgroup("42 - Input H-N")
        interest(1)
    }
    field(NOJ, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Max. elements in J")
        interest(1)
        promptgroup("42 - Input H-N")
    }
    field(NOK, DBF_ULONG) {
        promptgroup("42 - Input H-N")
        interest(1)
        prompt("Max. elements in K")
        special(SPC_NOMOD)
        initial("1")
    }
    field(NOL, DBF_ULONG) {
        interest(1)
        promptgroup("42 - Input H-N")
        initial("1")
        special(SPC_NOMOD)
        prompt("Max. elements in L")
    }
    field(NOM, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Max. elements in M")
        initial("1")
        promptgroup("42 - Input H-N")
        interest(1)
    }
    field(NON, DBF_ULONG) {
        interest(1)
        promptgroup("42 - Input H-N")
        initial("1")
        prompt("Max. elements in N")
        special(SPC_NOMOD)
    }
    field(NOO, DBF_ULONG) {
        prompt("Max. elements in O")
        special(SPC_NOMOD)
        initial("1")
        promptgroup("43 - Input O-U")
        interest(1)
    }
    field(NOP, DBF_ULONG) {
        promptgroup("43 - Input O-U")
        interest(1)
        prompt("Max. elements in P")
        special(SPC_NOMOD)
        initial("1")
    }
    field(NOQ, DBF_ULONG) {
        interest(1)
        promptgroup("43 - Input O-U")
        initial("1")
        special(SPC_NOMOD)
        prompt("Max. elements in Q")
    }
    field(NOR, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Max. elements in R")
        initial("1")
        promptgroup("43 - Input O-U")
        interest(1)
    }
    field(NOS, DBF_ULONG) {
        interest(1)
        promptgroup("43 - Input O-U")
        initial("1")
        special(SPC_NOMOD)
        prompt("Max. elements in S")
    }
    field(NOT, DBF_ULONG) {
        interest(1)
        promptgroup("43 - Input O-U")
        initial("1")
        prompt("Max. elements in T")
        special(SPC_NOMOD)
    }
    field(NOU, DBF_ULONG) {
        interest(1)
        promptgroup("43 - Input O-U")
        initial("1")
        prompt("Max. elements in U")
        special(SPC_NOMOD)
    }
    field(NEA, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in A")
        interest(3)
    }
    field(NEB, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in B")
        interest(3)
    }
    field(NEC, DBF_ULONG) {
        prompt("Num. elements in C")
        special(SPC_NOMOD)
        initial("1")
        interest(3)
    }
    field(NED, DBF_ULONG) {
        interest(3)
        prompt("Num. elements in D")
        special(SPC_NOMOD)
        initial("1")
    }
    field(NEE, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in E")
        interest(3)
    }
    field(NEF, DBF_ULONG) {
        initial("1")
        prompt("Num. elements in F")
        special(SPC_NOMOD)
        interest(3)
    }
    field(NEG, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Num. elements in G")
        initial("1")
        interest(3)
    }
    field(NEH, DBF_ULONG) {
        prompt("Num. elements in H")
        special(SPC_NOMOD)
        initial("1")
        interest(3)
    }
    field(NEI, DBF_ULONG) {
        interest(3)
        initial("1")
        prompt("Num. elements in I")
        special(SPC_NOMOD)
    }
    field(NEJ, DBF_ULONG) {
        interest(3)
        prompt("Num. elements in J")
        special(SPC_NOMOD)
        initial("1")
    }
    field(NEK, DBF_ULONG) {
        interest(3)
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in K")
    }
    field(NEL, DBF_ULONG) {
        interest(3)
        initial("1")
        prompt("Num. elements in L")
        special(SPC_NOMOD)
    }
    field(NEM, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Num. elements in M")
        initial("1")
        interest(3)
    }
    field(NEN, DBF_ULONG) {
        interest(3)
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in N")
    }
    field(NEO, DBF_ULONG) {
        prompt("Num. elements in O")
        special(SPC_NOMOD)
        initial("1")
        interest(3)
    }
    field(NEP, DBF_ULONG) {
        initial("1")
        prompt("Num. elements in P")
        special(SPC_NOMOD)
        interest(3)
    }
    field(NEQ, DBF_ULONG) {
        interest(3)
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in Q")
    }
    field(NER, DBF_ULONG) {
        prompt("Num. elements in R")
        special(SPC_NOMOD)
        initial("1")
        interest(3)
    }
    field(NES, DBF_ULONG) {
        interest(3)
        initial("1")
        prompt("Num. elements in S")
        special(SPC_NOMOD)
    }
    field(NET, DBF_ULONG) {
        interest(3)
        prompt("Num. elements in T")
        special(SPC_NOMOD)
        initial("1")
    }
    field(NEU, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in U")
        interest(3)
    }
    field(OUTA, DBF_OUTLINK) {
        prompt("Output Link A")
        interest(1)
        promptgroup("51 - Output A-G")
    }
    field(OUTB, DBF_OUTLINK) {
        interest(1)
        promptgroup("51 - Output A-G")
        prompt("Output Link B")
    }
    field(OUTC, DBF_OUTLINK) {
        interest(1)
        promptgroup("51 - Output A-G")
        prompt("Output Link C")
    }
    field(OUTD, DBF_OUTLINK) {
        prompt("Output Link D")
        promptgroup("51 - Output A-G")
        interest(1)
    }
    field(OUTE, DBF_OUTLINK) {
        interest(1)
        promptgroup("51 - Output A-G")
        prompt("Output Link E")
    }
    field(OUTF, DBF_OUTLINK) {
        prompt("Output Link F")
        promptgroup("51 - Output A-G")
        interest(1)
    }
    field(OUTG, DBF_OUTLINK) {
        prompt("Output Link G")
        interest(1)
        promptgroup("51 - Output A-G")
    }
    field(OUTH, DBF_OUTLINK) {
        promptgroup("52 - Output H-N")
        interest(1)
        prompt("Output Link H")
    }
    field(OUTI, DBF_OUTLINK) {
        interest(1)
        promptgroup("52 - Output H-N")
        prompt("Output Link I")
    }
    field(OUTJ, DBF_OUTLINK) {
        prompt("Output Link J")
        interest(1)
        promptgroup("52 - Output H-N")
    }
    field(OUTK, DBF_OUTLINK) {
        prompt("Output Link K")
        interest(1)
        promptgroup("52 - Output H-N")
    }
    field(OUTL, DBF_OUTLINK) {
        promptgroup("52 - Output H-N")
        interest(1)
        prompt("Output Link L")
    }
    field(OUTM, DBF_OUTLINK) {
        promptgroup("52 - Output H-N")
        interest(1)
        prompt("Output Link M")
    }
    field(OUTN, DBF_OUTLINK) {
        interest(1)
        promptgroup("52 - Output H-N")
        prompt("Output Link N")
    }
    field(OUTO, DBF_OUTLINK) {
        promptgroup("53 - Output O-U")
        interest(1)
        prompt("Output Link O")
    }
    field(OUTP, DBF_OUTLINK) {
        interest(1)
        promptgroup("53 - Output O-U")
        prompt("Output Link P")
    }
    field(OUTQ, DBF_OUTLINK) {
        interest(1)
        promptgroup("53 - Output O-U")
        prompt("Output Link Q")
    }
    field(OUTR, DBF_OUTLINK) {
        prompt("Output Link R")
        interest(1)
        promptgroup("53 - Output O-U")
    }
    field(OUTS, DBF_OUTLINK) {
        interest(1)
        promptgroup("53 - Output O-U")
        prompt("Output Link S")
    }
    field(OUTT, DBF_OUTLINK) {
        promptgroup("53 - Output O-U")
        interest(1)
        prompt("Output Link T")
    }
    field(OUTU, DBF_OUTLINK) {
        interest(1)
        promptgroup("53 - Output O-U")
        prompt("Output Link U")
    }
    field(VALA, DBF_NOACCESS) {
        extra("void *vala")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Output value A")
        interest(2)
    }
    field(VALB, DBF_NOACCESS) {
        interest(2)
        asl(ASL0)
        extra("void *valb")
        prompt("Output value B")
        special(SPC_DBADDR)
    }
    field(VALC, DBF_NOACCESS) {
        extra("void *valc")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Output value C")
        interest(2)
    }
    field(VALD, DBF_NOACCESS) {
        asl(ASL0)
        extra("void *vald")
        prompt("Output value D")
        special(SPC_DBADDR)
        interest(2)
    }
    field(VALE, DBF_NOACCESS) {
        interest(2)
        extra("void *vale")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Output value E")
    }
    field(VALF, DBF_NOACCESS) {
        interest(2)
        asl(ASL0)
        extra("void *valf")
        prompt("Output value F")
        special(SPC_DBADDR)
    }
    field(VALG, DBF_NOACCESS) {
        interest(2)
        special(SPC_DBADDR)
        prompt("Output value G")
        extra("void *valg")
        asl(ASL0)
    }
    field(VALH, DBF_NOACCESS) {
        extra("void *valh")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Output value H")
        interest(2)
    }
    field(VALI, DBF_NOACCESS) {
        interest(2)
        prompt("Output value I")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *vali")
    }
    field(VALJ, DBF_NOACCESS) {
        prompt("Output value J")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *valj")
        interest(2)
    }
    field(VALK, DBF_NOACCESS) {
        interest(2)
        prompt("Output value K")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *valk")
    }
    field(VALL, DBF_NOACCESS) {
        interest(2)
        asl(ASL0)
        extra("void *vall")
        prompt("Output value L")
        special(SPC_DBADDR)
    }
    field(VALM, DBF_NOACCESS) {
        special(SPC_DBADDR)
        prompt("Output value M")
        extra("void *valm")
        asl(ASL0)
        interest(2)
    }
    field(VALN, DBF_NOACCESS) {
        interest(2)
        special(SPC_DBADDR)
        prompt("Output value N")
        extra("void *valn")
        asl(ASL0)
    }
    field(VALO, DBF_NOACCESS) {
        interest(2)
        prompt("Output value O")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *valo")
    }
    field(VALP, DBF_NOACCESS) {
        special(SPC_DBADDR)
        prompt("Output value P")
        extra("void *valp")
        asl(ASL0)
        interest(2)
    }
    field(VALQ, DBF_NOACCESS) {
        extra("void *valq")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Output value Q")
        interest(2)
    }
    field(VALR, DBF_NOACCESS) {
        interest(2)
        prompt("Output value R")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("void *valr")
    }
    field(VALS, DBF_NOACCESS) {
        special(SPC_DBADDR)
        prompt("Output value S")
        extra("void *vals")
        asl(ASL0)
        interest(2)
    }
    field(VALT, DBF_NOACCESS) {
        interest(2)
        asl(ASL0)
        extra("void *valt")
        prompt("Output value T")
        special(SPC_DBADDR)
    }
    field(VALU, DBF_NOACCESS) {
        interest(2)
        extra("void *valu")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Output value U")
    }
    field(OVLA, DBF_NOACCESS) {
        interest(4)
        extra("void *ovla")
        asl(ASL0)
        special(SPC_NOMOD)
        prompt("Old Output A")
    }
    field(OVLB, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Old Output B")
        extra("void *ovlb")
        asl(ASL0)
    }
    field(OVLC, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Old Output C")
        extra("void *ovlc")
        asl(ASL0)
        interest(4)
    }
    field(OVLD, DBF_NOACCESS) {
        extra("void *ovld")
        asl(ASL0)
        special(SPC_NOMOD)
        prompt("Old Output D")
        interest(4)
    }
    field(OVLE, DBF_NOACCESS) {
        interest(4)
        asl(ASL0)
        extra("void *ovle")
        prompt("Old Output E")
        special(SPC_NOMOD)
    }
    field(OVLF, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Old Output F")
        extra("void *ovlf")
        asl(ASL0)
        interest(4)
    }
    field(OVLG, DBF_NOACCESS) {
        interest(4)
        prompt("Old Output G")
        special(SPC_NOMOD)
        asl(ASL0)
        extra("void *ovlg")
    }
    field(OVLH, DBF_NOACCESS) {
        interest(4)
        asl(ASL0)
        extra("void *ovlh")
        prompt("Old Output H")
        special(SPC_NOMOD)
    }
    field(OVLI, DBF_NOACCESS) {
        interest(4)
        asl(ASL0)
        extra("void *ovli")
        prompt("Old Output I")
        special(SPC_NOMOD)
    }
    field(OVLJ, DBF_NOACCESS) {
        asl(ASL0)
        extra("void *ovlj")
        prompt("Old Output J")
        special(SPC_NOMOD)
        interest(4)
    }
    field(OVLK, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Old Output K")
        extra("void *ovlk")
        asl(ASL0)
        interest(4)
    }
    field(OVLL, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Old Output L")
        extra("void *ovll")
        asl(ASL0)
        interest(4)
    }
    field(OVLM, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Old Output M")
        extra("void *ovlm")
        asl(ASL0)
        interest(4)
    }
    field(OVLN, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Old Output N")
        extra("void *ovln")
        asl(ASL0)
    }
    field(OVLO, DBF_NOACCESS) {
        prompt("Old Output O")
        special(SPC_NOMOD)
        asl(ASL0)
        extra("void *ovlo")
        interest(4)
    }
    field(OVLP, DBF_NOACCESS) {
        asl(ASL0)
        extra("void *ovlp")
        prompt("Old Output P")
        special(SPC_NOMOD)
        interest(4)
    }
    field(OVLQ, DBF_NOACCESS) {
        prompt("Old Output Q")
        special(SPC_NOMOD)
        asl(ASL0)
        extra("void *ovlq")
        interest(4)
    }
    field(OVLR, DBF_NOACCESS) {
        asl(ASL0)
        extra("void *ovlr")
        prompt("Old Output R")
        special(SPC_NOMOD)
        interest(4)
    }
    field(OVLS, DBF_NOACCESS) {
        asl(ASL0)
        extra("void *ovls")
        prompt("Old Output S")
        special(SPC_NOMOD)
        interest(4)
    }
    field(OVLT, DBF_NOACCESS) {
        interest(4)
        asl(ASL0)
        extra("void *ovlt")
        prompt("Old Output T")
        special(SPC_NOMOD)
    }
    field(OVLU, DBF_NOACCESS) {
        interest(4)
        asl(ASL0)
        extra("void *ovlu")
        prompt("Old Output U")
        special(SPC_NOMOD)
    }
    field(FTVA, DBF_MENU) {
        menu(menuFtype)
        interest(1)
        promptgroup("51 - Output A-G")
        initial("DOUBLE")
        prompt("Type of VALA")
        special(SPC_NOMOD)
    }
    field(FTVB, DBF_MENU) {
        promptgroup("51 - Output A-G")
        menu(menuFtype)
        interest(1)
        prompt("Type of VALB")
        special(SPC_NOMOD)
        initial("DOUBLE")
    }
    field(FTVC, DBF_MENU) {
        initial("DOUBLE")
        prompt("Type of VALC")
        special(SPC_NOMOD)
        interest(1)
        menu(menuFtype)
        promptgroup("51 - Output A-G")
    }
    field(FTVD, DBF_MENU) {
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of VALD")
        interest(1)
        menu(menuFtype)
        promptgroup("51 - Output A-G")
    }
    field(FTVE, DBF_MENU) {
        initial("DOUBLE")
        prompt("Type of VALE")
        special(SPC_NOMOD)
        menu(menuFtype)
        interest(1)
        promptgroup("51 - Output A-G")
    }
    field(FTVF, DBF_MENU) {
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of VALF")
        interest(1)
        menu(menuFtype)
        promptgroup("51 - Output A-G")
    }
    field(FTVG, DBF_MENU) {
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of VALG")
        interest(1)
        menu(menuFtype)
        promptgroup("51 - Output A-G")
    }
    field(FTVH, DBF_MENU) {
        initial("DOUBLE")
        prompt("Type of VALH")
        special(SPC_NOMOD)
        interest(1)
        menu(menuFtype)
        promptgroup("52 - Output H-N")
    }
    field(FTVI, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Type of VALI")
        initial("DOUBLE")
        promptgroup("52 - Output H-N")
        menu(menuFtype)
        interest(1)
    }
    field(FTVJ, DBF_MENU) {
        interest(1)
        menu(menuFtype)
        promptgroup("52 - Output H-N")
        initial("DOUBLE")
        prompt("Type of VALJ")
        special(SPC_NOMOD)
    }
    field(FTVK, DBF_MENU) {
        promptgroup("52 - Output H-N")
        menu(menuFtype)
        interest(1)
        special(SPC_NOMOD)
        prompt("Type of VALK")
        initial("DOUBLE")
    }
    field(FTVL, DBF_MENU) {
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of VALL")
        interest(1)
        menu(menuFtype)
        promptgroup("52 - Output H-N")
    }
    field(FTVM, DBF_MENU) {
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of VALM")
        promptgroup("52 - Output H-N")
        interest(1)
        menu(menuFtype)
    }
    field(FTVN, DBF_MENU) {
        initial("DOUBLE")
        promptgroup("52 - Output H-N")
        interest(1)
        menu(menuFtype)
        special(SPC_NOMOD)
        prompt("Type of VALN")
    }
    field(FTVO, DBF_MENU) {
        interest(1)
        menu(menuFtype)
        promptgroup("53 - Output O-U")
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of VALO")
    }
    field(FTVP, DBF_MENU) {
        initial("DOUBLE")
        special(SPC_NOMOD)
        prompt("Type of VALP")
        interest(1)
        menu(menuFtype)
        promptgroup("53 - Output O-U")
    }
    field(FTVQ, DBF_MENU) {
        promptgroup("53 - Output O-U")
        menu(menuFtype)
        interest(1)
        special(SPC_NOMOD)
        prompt("Type of VALQ")
        initial("DOUBLE")
    }
    field(FTVR, DBF_MENU) {
        initial("DOUBLE")
        prompt("Type of VALR")
        special(SPC_NOMOD)
        interest(1)
        menu(menuFtype)
        promptgroup("53 - Output O-U")
    }
    field(FTVS, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Type of VALS")
        menu(menuFtype)
        interest(1)
        promptgroup("53 - Output O-U")
        initial("DOUBLE")
    }
    field(FTVT, DBF_MENU) {
        interest(1)
        menu(menuFtype)
        promptgroup("53 - Output O-U")
        special(SPC_NOMOD)
        prompt("Type of VALT")
        initial("DOUBLE")
    }
    field(FTVU, DBF_MENU) {
        initial("DOUBLE")
        prompt("Type of VALU")
        special(SPC_NOMOD)
        menu(menuFtype)
        interest(1)
        promptgroup("53 - Output O-U")
    }
    field(NOVA, DBF_ULONG) {
        interest(1)
        promptgroup("51 - Output A-G")
        initial("1")
        prompt("Max. elements in VALA")
        special(SPC_NOMOD)
    }
    field(NOVB, DBF_ULONG) {
        prompt("Max. elements in VALB")
        special(SPC_NOMOD)
        initial("1")
        promptgroup("51 - Output A-G")
        interest(1)
    }
    field(NOVC, DBF_ULONG) {
        promptgroup("51 - Output A-G")
        interest(1)
        prompt("Max. elements in VALC")
        special(SPC_NOMOD)
        initial("1")
    }
    field(NOVD, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Max. elements in VALD")
        initial("1")
        promptgroup("51 - Output A-G")
        interest(1)
    }
    field(NOVE, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Max. elements in VALE")
        initial("1")
        promptgroup("51 - Output A-G")
        interest(1)
    }
    field(NOVF, DBF_ULONG) {
        initial("1")
        prompt("Max. elements in VALF")
        special(SPC_NOMOD)
        interest(1)
        promptgroup("51 - Output A-G")
    }
    field(NOVG, DBF_ULONG) {
        promptgroup("51 - Output A-G")
        interest(1)
        prompt("Max. elements in VALG")
        special(SPC_NOMOD)
        initial("1")
    }
    field(NOVH, DBF_ULONG) {
        interest(1)
        promptgroup("52 - Output H-N")
        initial("1")
        prompt("Max. elements in VAlH")
        special(SPC_NOMOD)
    }
    field(NOVI, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Max. elements in VALI")
        interest(1)
        promptgroup("52 - Output H-N")
    }
    field(NOVJ, DBF_ULONG) {
        prompt("Max. elements in VALJ")
        special(SPC_NOMOD)
        initial("1")
        promptgroup("52 - Output H-N")
        interest(1)
    }
    field(NOVK, DBF_ULONG) {
        promptgroup("52 - Output H-N")
        interest(1)
        prompt("Max. elements in VALK")
        special(SPC_NOMOD)
        initial("1")
    }
    field(NOVL, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Max. elements in VALL")
        interest(1)
        promptgroup("52 - Output H-N")
    }
    field(NOVM, DBF_ULONG) {
        promptgroup("52 - Output H-N")
        interest(1)
        prompt("Max. elements in VALM")
        special(SPC_NOMOD)
        initial("1")
    }
    field(NOVN, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Max. elements in VALN")
        initial("1")
        promptgroup("52 - Output H-N")
        interest(1)
    }
    field(NOVO, DBF_ULONG) {
        initial("1")
        prompt("Max. elements in VALO")
        special(SPC_NOMOD)
        interest(1)
        promptgroup("53 - Output O-U")
    }
    field(NOVP, DBF_ULONG) {
        prompt("Max. elements in VALP")
        special(SPC_NOMOD)
        initial("1")
        promptgroup("53 - Output O-U")
        interest(1)
    }
    field(NOVQ, DBF_ULONG) {
        interest(1)
        promptgroup("53 - Output O-U")
        initial("1")
        special(SPC_NOMOD)
        prompt("Max. elements in VALQ")
    }
    field(NOVR, DBF_ULONG) {
        initial("1")
        prompt("Max. elements in VALR")
        special(SPC_NOMOD)
        interest(1)
        promptgroup("53 - Output O-U")
    }
    field(NOVS, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Max. elements in VALS")
        initial("1")
        promptgroup("53 - Output O-U")
        interest(1)
    }
    field(NOVT, DBF_ULONG) {
        initial("1")
        prompt("Max. elements in VALT")
        special(SPC_NOMOD)
        interest(1)
        promptgroup("53 - Output O-U")
    }
    field(NOVU, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Max. elements in VALU")
        initial("1")
        promptgroup("53 - Output O-U")
        interest(1)
    }
    field(NEVA, DBF_ULONG) {
        interest(3)
        prompt("Num. elements in VALA")
        special(SPC_NOMOD)
        initial("1")
    }
    field(NEVB, DBF_ULONG) {
        prompt("Num. elements in VALB")
        special(SPC_NOMOD)
        initial("1")
        interest(3)
    }
    field(NEVC, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Num. elements in VALC")
        initial("1")
        interest(3)
    }
    field(NEVD, DBF_ULONG) {
        interest(3)
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in VALD")
    }
    field(NEVE, DBF_ULONG) {
        interest(3)
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in VALE")
    }
    field(NEVF, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in VALF")
        interest(3)
    }
    field(NEVG, DBF_ULONG) {
        prompt("Num. elements in VALG")
        special(SPC_NOMOD)
        initial("1")
        interest(3)
    }
    field(NEVH, DBF_ULONG) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Num. elements in VAlH")
        initial("1")
    }
    field(NEVI, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in VALI")
        interest(3)
    }
    field(NEVJ, DBF_ULONG) {
        initial("1")
        prompt("Num. elements in VALJ")
        special(SPC_NOMOD)
        interest(3)
    }
    field(NEVK, DBF_ULONG) {
        prompt("Num. elements in VALK")
        special(SPC_NOMOD)
        initial("1")
        interest(3)
    }
    field(NEVL, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in VALL")
        interest(3)
    }
    field(NEVM, DBF_ULONG) {
        prompt("Num. elements in VALM")
        special(SPC_NOMOD)
        initial("1")
        interest(3)
    }
    field(NEVN, DBF_ULONG) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Num. elements in VALN")
        initial("1")
    }
    field(NEVO, DBF_ULONG) {
        prompt("Num. elements in VALO")
        special(SPC_NOMOD)
        initial("1")
        interest(3)
    }
    field(NEVP, DBF_ULONG) {
        initial("1")
        prompt("Num. elements in VALP")
        special(SPC_NOMOD)
        interest(3)
    }
    field(NEVQ, DBF_ULONG) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Num. elements in VALQ")
        initial("1")
    }
    field(NEVR, DBF_ULONG) {
        interest(3)
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in VALR")
    }
    field(NEVS, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in VALS")
        interest(3)
    }
    field(NEVT, DBF_ULONG) {
        interest(3)
        initial("1")
        prompt("Num. elements in VALT")
        special(SPC_NOMOD)
    }
    field(NEVU, DBF_ULONG) {
        initial("1")
        prompt("Num. elements in VALU")
        special(SPC_NOMOD)
        interest(3)
    }
    field(ONVA, DBF_ULONG) {
        interest(4)
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in OVLA")
    }
    field(ONVB, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in OVLB")
        interest(4)
    }
    field(ONVC, DBF_ULONG) {
        initial("1")
        prompt("Num. elements in OVLC")
        special(SPC_NOMOD)
        interest(4)
    }
    field(ONVD, DBF_ULONG) {
        interest(4)
        prompt("Num. elements in OVLD")
        special(SPC_NOMOD)
        initial("1")
    }
    field(ONVE, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in OVLE")
        interest(4)
    }
    field(ONVF, DBF_ULONG) {
        initial("1")
        prompt("Num. elements in OVLF")
        special(SPC_NOMOD)
        interest(4)
    }
    field(ONVG, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in OVLG")
        interest(4)
    }
    field(ONVH, DBF_ULONG) {
        initial("1")
        prompt("Num. elements in VAlH")
        special(SPC_NOMOD)
        interest(4)
    }
    field(ONVI, DBF_ULONG) {
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in OVLI")
        interest(4)
    }
    field(ONVJ, DBF_ULONG) {
        interest(4)
        prompt("Num. elements in OVLJ")
        special(SPC_NOMOD)
        initial("1")
    }
    field(ONVK, DBF_ULONG) {
        interest(4)
        prompt("Num. elements in OVLK")
        special(SPC_NOMOD)
        initial("1")
    }
    field(ONVL, DBF_ULONG) {
        initial("1")
        prompt("Num. elements in OVLL")
        special(SPC_NOMOD)
        interest(4)
    }
    field(ONVM, DBF_ULONG) {
        initial("1")
        prompt("Num. elements in OVLM")
        special(SPC_NOMOD)
        interest(4)
    }
    field(ONVN, DBF_ULONG) {
        interest(4)
        prompt("Num. elements in OVLN")
        special(SPC_NOMOD)
        initial("1")
    }
    field(ONVO, DBF_ULONG) {
        prompt("Num. elements in OVLO")
        special(SPC_NOMOD)
        initial("1")
        interest(4)
    }
    field(ONVP, DBF_ULONG) {
        interest(4)
        initial("1")
        prompt("Num. elements in OVLP")
        special(SPC_NOMOD)
    }
    field(ONVQ, DBF_ULONG) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Num. elements in OVLQ")
        initial("1")
    }
    field(ONVR, DBF_ULONG) {
        initial("1")
        prompt("Num. elements in OVLR")
        special(SPC_NOMOD)
        interest(4)
    }
    field(ONVS, DBF_ULONG) {
        interest(4)
        prompt("Num. elements in OVLS")
        special(SPC_NOMOD)
        initial("1")
    }
    field(ONVT, DBF_ULONG) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Num. elements in OVLT")
        initial("1")
    }
    field(ONVU, DBF_ULONG) {
        interest(4)
        initial("1")
        special(SPC_NOMOD)
        prompt("Num. elements in OVLU")
    }
}
recordtype(int64out) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct int64outRecord;
    %typedef struct int64outdset {
    %    dset common;
    %    long (*write_int64out)(struct int64outRecord *prec);
    %} int64outdset;
    %#define HAS_int64outdset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        special(SPC_NOMOD)
        size(61)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        size(41)
        prompt("Descriptor")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        special(SPC_AS)
        size(29)
        prompt("Access Security Group")
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        interest(1)
        menu(menuScan)
        promptgroup("20 - Scan")
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        interest(1)
        menu(menuPini)
        promptgroup("20 - Scan")
    }
    field(PHAS, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        special(SPC_SCAN)
        prompt("Scan Phase")
    }
    field(EVNT, DBF_STRING) {
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSE, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        interest(1)
        promptgroup("10 - Common")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        prompt("Disable Value")
        initial("1")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Monitor lock")
        extra("epicsMutexId        mlok")
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        prompt("Monitor List")
        special(SPC_NOMOD)
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        extra("ELLLIST             bklnk")
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        interest(3)
        pp(TRUE)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        initial("UDF")
        prompt("Alarm Status")
        special(SPC_NOMOD)
    }
    field(SEVR, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Severity")
        menu(menuAlarmSevr)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        menu(menuAlarmStat)
        interest(2)
        prompt("New Alarm Status")
        special(SPC_NOMOD)
    }
    field(NSEV, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
        menu(menuAlarmSevr)
        interest(2)
    }
    field(ACKT, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        promptgroup("70 - Alarm")
        interest(2)
        menu(menuYesNo)
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Lock Count")
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        prompt("dbPutField process")
        special(SPC_NOMOD)
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Reprocess ")
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("pprocessNotify")
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        extra("struct scan_element *spvt")
        prompt("Scan Private")
        special(SPC_NOMOD)
    }
    field(RSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of RSET")
        extra("struct typed_rset   *rset")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("DSET address")
        extra("unambiguous_dset    *dset")
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        extra("void                *dpvt")
        special(SPC_NOMOD)
        prompt("Device Private")
    }
    field(RDES, DBF_NOACCESS) {
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
        extra("struct dbRecordType *rdes")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        prompt("Lock Set")
        special(SPC_NOMOD)
        extra("struct lockRecord   *lset")
    }
    field(PRIO, DBF_MENU) {
        prompt("Scheduling Priority")
        special(SPC_SCAN)
        menu(menuPriority)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        prompt("Break Point")
        special(SPC_NOMOD)
        extra("epicsUInt8          bkpt")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("10 - Common")
        initial("1")
        prompt("Undefined")
    }
    field(UDFS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
    }
    field(TIME, DBF_NOACCESS) {
        extra("epicsTimeStamp      time")
        special(SPC_NOMOD)
        prompt("Time")
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        prompt("Time Tag")
        special(SPC_NOMOD)
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(VAL, DBF_INT64) {
        asl(ASL0)
        prompt("Desired Output")
        pp(TRUE)
        promptgroup("50 - Output")
    }
    field(OUT, DBF_OUTLINK) {
        prompt("Output Specification")
        interest(1)
        promptgroup("50 - Output")
    }
    field(DOL, DBF_INLINK) {
        promptgroup("40 - Input")
        interest(1)
        prompt("Desired Output Link")
    }
    field(OMSL, DBF_MENU) {
        prompt("Output Mode Select")
        interest(1)
        menu(menuOmsl)
        promptgroup("50 - Output")
    }
    field(EGU, DBF_STRING) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Units name")
        size(16)
        prop(YES)
    }
    field(DRVH, DBF_INT64) {
        prompt("Drive High Limit")
        prop(YES)
        promptgroup("30 - Action")
        interest(1)
        pp(TRUE)
    }
    field(DRVL, DBF_INT64) {
        prop(YES)
        prompt("Drive Low Limit")
        interest(1)
        pp(TRUE)
        promptgroup("30 - Action")
    }
    field(HOPR, DBF_INT64) {
        promptgroup("80 - Display")
        interest(1)
        prompt("High Operating Range")
        prop(YES)
    }
    field(LOPR, DBF_INT64) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Low Operating Range")
        prop(YES)
    }
    field(HIHI, DBF_INT64) {
        prop(YES)
        prompt("Hihi Alarm Limit")
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
    }
    field(LOLO, DBF_INT64) {
        prompt("Lolo Alarm Limit")
        prop(YES)
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
    }
    field(HIGH, DBF_INT64) {
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("High Alarm Limit")
    }
    field(LOW, DBF_INT64) {
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Low Alarm Limit")
    }
    field(HHSV, DBF_MENU) {
        prompt("Hihi Severity")
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
    }
    field(LLSV, DBF_MENU) {
        prompt("Lolo Severity")
        menu(menuAlarmSevr)
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
    }
    field(HSV, DBF_MENU) {
        prompt("High Severity")
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
    }
    field(LSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
        prompt("Low Severity")
    }
    field(HYST, DBF_INT64) {
        prompt("Alarm Deadband")
        promptgroup("70 - Alarm")
        interest(1)
    }
    field(ADEL, DBF_INT64) {
        prompt("Archive Deadband")
        promptgroup("80 - Display")
        interest(1)
    }
    field(MDEL, DBF_INT64) {
        prompt("Monitor Deadband")
        interest(1)
        promptgroup("80 - Display")
    }
    field(LALM, DBF_INT64) {
        prompt("Last Value Alarmed")
        special(SPC_NOMOD)
        interest(3)
    }
    field(ALST, DBF_INT64) {
        special(SPC_NOMOD)
        prompt("Last Value Archived")
        interest(3)
    }
    field(MLST, DBF_INT64) {
        interest(3)
        prompt("Last Val Monitored")
        special(SPC_NOMOD)
    }
    field(SIOL, DBF_OUTLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Simulation Output Link")
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(SIMM, DBF_MENU) {
        prompt("Simulation Mode")
        special(SPC_MOD)
        menu(menuYesNo)
        interest(1)
    }
    field(SIMS, DBF_MENU) {
        prompt("Simulation Mode Severity")
        menu(menuAlarmSevr)
        interest(2)
        promptgroup("90 - Simulate")
    }
    field(OLDSIMM, DBF_MENU) {
        menu(menuSimm)
        interest(4)
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
    }
    field(SSCN, DBF_MENU) {
        prompt("Sim. Mode Scan")
        initial("65535")
        promptgroup("90 - Simulate")
        menu(menuScan)
        interest(1)
    }
    field(SDLY, DBF_DOUBLE) {
        promptgroup("90 - Simulate")
        interest(2)
        prompt("Sim. Mode Async Delay")
        initial("-1.0")
    }
    field(SIMPVT, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Sim. Mode Private")
        extra("epicsCallback            *simpvt")
    }
    field(IVOA, DBF_MENU) {
        promptgroup("50 - Output")
        menu(menuIvoa)
        interest(2)
        prompt("INVALID output action")
    }
    field(IVOV, DBF_INT64) {
        prompt("INVALID output value")
        interest(2)
        promptgroup("50 - Output")
    }
}
device(int64out, CONSTANT, devI64outSoft, "Soft Channel")
device(int64out, CONSTANT, devI64outSoftCallback, "Async Soft Channel")
recordtype(mbbi) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %/* Declare Device Support Entry Table */
    %struct mbbiRecord;
    %typedef struct mbbidset {
    %    dset common; /* init_record returns: (-1,0) => (failure, success)*/
    %    long (*read_mbbi)(struct mbbiRecord *prec); /* (0, 2) => (success, success no convert)*/
    %} mbbidset;
    %#define HAS_mbbidset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        special(SPC_NOMOD)
        size(61)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Descriptor")
        size(41)
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        special(SPC_AS)
        size(29)
    }
    field(SCAN, DBF_MENU) {
        interest(1)
        menu(menuScan)
        promptgroup("20 - Scan")
        prompt("Scan Mechanism")
        special(SPC_SCAN)
    }
    field(PINI, DBF_MENU) {
        menu(menuPini)
        interest(1)
        promptgroup("20 - Scan")
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Scan Phase")
        special(SPC_SCAN)
    }
    field(EVNT, DBF_STRING) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Event Name")
        size(40)
        special(SPC_SCAN)
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSEL, DBF_INLINK) {
        prompt("Time Stamp Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        prompt("Disable Value")
        initial("1")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        extra("epicsMutexId        mlok")
        special(SPC_NOMOD)
        prompt("Monitor lock")
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        special(SPC_NOMOD)
        prompt("Monitor List")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        extra("ELLLIST             bklnk")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        interest(3)
        pp(TRUE)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        initial("UDF")
        special(SPC_NOMOD)
        prompt("Alarm Status")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Status")
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        menu(menuYesNo)
        interest(2)
        promptgroup("70 - Alarm")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        prompt("Record active")
        special(SPC_NOMOD)
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        prompt("dbPutField process")
        special(SPC_NOMOD)
    }
    field(RPRO, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Reprocess ")
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
        extra("struct asgMember    *asp")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        extra("struct processNotifyRecord *ppnr")
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        extra("struct scan_element *spvt")
        special(SPC_NOMOD)
        prompt("Scan Private")
    }
    field(RSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of RSET")
        extra("struct typed_rset   *rset")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        prompt("DSET address")
        special(SPC_NOMOD)
        extra("unambiguous_dset    *dset")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        prompt("Device Private")
        special(SPC_NOMOD)
        extra("void                *dpvt")
    }
    field(RDES, DBF_NOACCESS) {
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
        extra("struct dbRecordType *rdes")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Lock Set")
        extra("struct lockRecord   *lset")
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scheduling Priority")
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Break Point")
        extra("epicsUInt8          bkpt")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        initial("1")
        prompt("Undefined")
        interest(1)
        pp(TRUE)
        promptgroup("10 - Common")
    }
    field(UDFS, DBF_MENU) {
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
    }
    field(TIME, DBF_NOACCESS) {
        extra("epicsTimeStamp      time")
        prompt("Time")
        special(SPC_NOMOD)
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        special(SPC_NOMOD)
        prompt("Time Tag")
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(VAL, DBF_ENUM) {
        asl(ASL0)
        prompt("Current Value")
        pp(TRUE)
        promptgroup("40 - Input")
    }
    field(NOBT, DBF_USHORT) {
        promptgroup("40 - Input")
        interest(1)
        special(SPC_NOMOD)
        prompt("Number of Bits")
    }
    field(INP, DBF_INLINK) {
        prompt("Input Specification")
        interest(1)
        promptgroup("40 - Input")
    }
    field(ZRVL, DBF_ULONG) {
        prompt("Zero Value")
        special(SPC_MOD)
        interest(1)
        pp(TRUE)
        promptgroup("41 - Input 0-7")
        base(HEX)
    }
    field(ONVL, DBF_ULONG) {
        prompt("One Value")
        special(SPC_MOD)
        promptgroup("41 - Input 0-7")
        interest(1)
        pp(TRUE)
        base(HEX)
    }
    field(TWVL, DBF_ULONG) {
        base(HEX)
        special(SPC_MOD)
        prompt("Two Value")
        promptgroup("41 - Input 0-7")
        pp(TRUE)
        interest(1)
    }
    field(THVL, DBF_ULONG) {
        promptgroup("41 - Input 0-7")
        interest(1)
        pp(TRUE)
        prompt("Three Value")
        special(SPC_MOD)
        base(HEX)
    }
    field(FRVL, DBF_ULONG) {
        interest(1)
        pp(TRUE)
        promptgroup("41 - Input 0-7")
        special(SPC_MOD)
        prompt("Four Value")
        base(HEX)
    }
    field(FVVL, DBF_ULONG) {
        promptgroup("41 - Input 0-7")
        interest(1)
        pp(TRUE)
        prompt("Five Value")
        special(SPC_MOD)
        base(HEX)
    }
    field(SXVL, DBF_ULONG) {
        base(HEX)
        promptgroup("41 - Input 0-7")
        pp(TRUE)
        interest(1)
        prompt("Six Value")
        special(SPC_MOD)
    }
    field(SVVL, DBF_ULONG) {
        prompt("Seven Value")
        special(SPC_MOD)
        interest(1)
        pp(TRUE)
        base(HEX)
        promptgroup("41 - Input 0-7")
    }
    field(EIVL, DBF_ULONG) {
        special(SPC_MOD)
        prompt("Eight Value")
        pp(TRUE)
        interest(1)
        promptgroup("42 - Input 8-15")
        base(HEX)
    }
    field(NIVL, DBF_ULONG) {
        base(HEX)
        promptgroup("42 - Input 8-15")
        pp(TRUE)
        interest(1)
        prompt("Nine Value")
        special(SPC_MOD)
    }
    field(TEVL, DBF_ULONG) {
        promptgroup("42 - Input 8-15")
        pp(TRUE)
        interest(1)
        prompt("Ten Value")
        special(SPC_MOD)
        base(HEX)
    }
    field(ELVL, DBF_ULONG) {
        base(HEX)
        promptgroup("42 - Input 8-15")
        pp(TRUE)
        interest(1)
        special(SPC_MOD)
        prompt("Eleven Value")
    }
    field(TVVL, DBF_ULONG) {
        base(HEX)
        special(SPC_MOD)
        prompt("Twelve Value")
        pp(TRUE)
        interest(1)
        promptgroup("42 - Input 8-15")
    }
    field(TTVL, DBF_ULONG) {
        promptgroup("42 - Input 8-15")
        base(HEX)
        interest(1)
        pp(TRUE)
        special(SPC_MOD)
        prompt("Thirteen Value")
    }
    field(FTVL, DBF_ULONG) {
        prompt("Fourteen Value")
        special(SPC_MOD)
        pp(TRUE)
        interest(1)
        base(HEX)
        promptgroup("42 - Input 8-15")
    }
    field(FFVL, DBF_ULONG) {
        special(SPC_MOD)
        prompt("Fifteen Value")
        promptgroup("42 - Input 8-15")
        pp(TRUE)
        interest(1)
        base(HEX)
    }
    field(ZRST, DBF_STRING) {
        prompt("Zero String")
        size(26)
        special(SPC_MOD)
        promptgroup("81 - Display 0-7")
        interest(1)
        pp(TRUE)
    }
    field(ONST, DBF_STRING) {
        prompt("One String")
        size(26)
        special(SPC_MOD)
        pp(TRUE)
        interest(1)
        promptgroup("81 - Display 0-7")
    }
    field(TWST, DBF_STRING) {
        prompt("Two String")
        special(SPC_MOD)
        size(26)
        promptgroup("81 - Display 0-7")
        pp(TRUE)
        interest(1)
    }
    field(THST, DBF_STRING) {
        interest(1)
        pp(TRUE)
        promptgroup("81 - Display 0-7")
        special(SPC_MOD)
        size(26)
        prompt("Three String")
    }
    field(FRST, DBF_STRING) {
        promptgroup("81 - Display 0-7")
        interest(1)
        pp(TRUE)
        size(26)
        special(SPC_MOD)
        prompt("Four String")
    }
    field(FVST, DBF_STRING) {
        size(26)
        special(SPC_MOD)
        prompt("Five String")
        pp(TRUE)
        interest(1)
        promptgroup("81 - Display 0-7")
    }
    field(SXST, DBF_STRING) {
        promptgroup("81 - Display 0-7")
        interest(1)
        pp(TRUE)
        special(SPC_MOD)
        size(26)
        prompt("Six String")
    }
    field(SVST, DBF_STRING) {
        size(26)
        special(SPC_MOD)
        prompt("Seven String")
        promptgroup("81 - Display 0-7")
        interest(1)
        pp(TRUE)
    }
    field(EIST, DBF_STRING) {
        promptgroup("82 - Display 8-15")
        interest(1)
        pp(TRUE)
        prompt("Eight String")
        special(SPC_MOD)
        size(26)
    }
    field(NIST, DBF_STRING) {
        interest(1)
        pp(TRUE)
        promptgroup("82 - Display 8-15")
        special(SPC_MOD)
        size(26)
        prompt("Nine String")
    }
    field(TEST, DBF_STRING) {
        special(SPC_MOD)
        size(26)
        prompt("Ten String")
        promptgroup("82 - Display 8-15")
        interest(1)
        pp(TRUE)
    }
    field(ELST, DBF_STRING) {
        interest(1)
        pp(TRUE)
        promptgroup("82 - Display 8-15")
        special(SPC_MOD)
        size(26)
        prompt("Eleven String")
    }
    field(TVST, DBF_STRING) {
        interest(1)
        pp(TRUE)
        promptgroup("82 - Display 8-15")
        size(26)
        special(SPC_MOD)
        prompt("Twelve String")
    }
    field(TTST, DBF_STRING) {
        size(26)
        special(SPC_MOD)
        prompt("Thirteen String")
        promptgroup("82 - Display 8-15")
        interest(1)
        pp(TRUE)
    }
    field(FTST, DBF_STRING) {
        prompt("Fourteen String")
        special(SPC_MOD)
        size(26)
        interest(1)
        pp(TRUE)
        promptgroup("82 - Display 8-15")
    }
    field(FFST, DBF_STRING) {
        prompt("Fifteen String")
        special(SPC_MOD)
        size(26)
        promptgroup("82 - Display 8-15")
        interest(1)
        pp(TRUE)
    }
    field(ZRSV, DBF_MENU) {
        prompt("State Zero Severity")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("71 - Alarm 0-7")
    }
    field(ONSV, DBF_MENU) {
        prompt("State One Severity")
        promptgroup("71 - Alarm 0-7")
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
    }
    field(TWSV, DBF_MENU) {
        prompt("State Two Severity")
        promptgroup("71 - Alarm 0-7")
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
    }
    field(THSV, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        promptgroup("71 - Alarm 0-7")
        prompt("State Three Severity")
    }
    field(FRSV, DBF_MENU) {
        promptgroup("71 - Alarm 0-7")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        prompt("State Four Severity")
    }
    field(FVSV, DBF_MENU) {
        prompt("State Five Severity")
        promptgroup("71 - Alarm 0-7")
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
    }
    field(SXSV, DBF_MENU) {
        prompt("State Six Severity")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
        promptgroup("71 - Alarm 0-7")
    }
    field(SVSV, DBF_MENU) {
        prompt("State Seven Severity")
        promptgroup("71 - Alarm 0-7")
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
    }
    field(EISV, DBF_MENU) {
        prompt("State Eight Severity")
        promptgroup("72 - Alarm 8-15")
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
    }
    field(NISV, DBF_MENU) {
        prompt("State Nine Severity")
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("72 - Alarm 8-15")
    }
    field(TESV, DBF_MENU) {
        prompt("State Ten Severity")
        promptgroup("72 - Alarm 8-15")
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
    }
    field(ELSV, DBF_MENU) {
        prompt("State Eleven Severity")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        promptgroup("72 - Alarm 8-15")
    }
    field(TVSV, DBF_MENU) {
        promptgroup("72 - Alarm 8-15")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
        prompt("State Twelve Severity")
    }
    field(TTSV, DBF_MENU) {
        promptgroup("72 - Alarm 8-15")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        prompt("State Thirteen Sevr")
    }
    field(FTSV, DBF_MENU) {
        promptgroup("72 - Alarm 8-15")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        prompt("State Fourteen Sevr")
    }
    field(FFSV, DBF_MENU) {
        promptgroup("72 - Alarm 8-15")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
        prompt("State Fifteen Severity")
    }
    field(AFTC, DBF_DOUBLE) {
        prompt("Alarm Filter Time Constant")
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(AFVL, DBF_DOUBLE) {
        prompt("Alarm Filter Value")
        special(SPC_NOMOD)
        interest(3)
    }
    field(UNSV, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prompt("Unknown State Severity")
    }
    field(COSV, DBF_MENU) {
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prompt("Change of State Svr")
    }
    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) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Monitored")
    }
    field(LALM, DBF_USHORT) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Alarmed")
    }
    field(SDEF, DBF_SHORT) {
        interest(3)
        special(SPC_NOMOD)
        prompt("States Defined")
    }
    field(SHFT, DBF_USHORT) {
        prompt("Shift")
        interest(1)
        promptgroup("40 - Input")
    }
    field(SIOL, DBF_INLINK) {
        promptgroup("90 - Simulate")
        interest(1)
        prompt("Simulation Input Link")
    }
    field(SVAL, DBF_ULONG) {
        prompt("Simulation Value")
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        interest(1)
        promptgroup("90 - Simulate")
    }
    field(SIMM, DBF_MENU) {
        special(SPC_MOD)
        prompt("Simulation Mode")
        interest(1)
        menu(menuSimm)
    }
    field(SIMS, DBF_MENU) {
        promptgroup("90 - Simulate")
        menu(menuAlarmSevr)
        interest(2)
        prompt("Simulation Mode Severity")
    }
    field(OLDSIMM, DBF_MENU) {
        interest(4)
        menu(menuSimm)
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
    }
    field(SSCN, DBF_MENU) {
        promptgroup("90 - Simulate")
        menu(menuScan)
        interest(1)
        prompt("Sim. Mode Scan")
        initial("65535")
    }
    field(SDLY, DBF_DOUBLE) {
        initial("-1.0")
        prompt("Sim. Mode Async Delay")
        interest(2)
        promptgroup("90 - Simulate")
    }
    field(SIMPVT, DBF_NOACCESS) {
        extra("epicsCallback            *simpvt")
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        interest(4)
    }
}
device(mbbi, CONSTANT, devMbbiSoft, "Soft Channel")
device(mbbi, CONSTANT, devMbbiSoftRaw, "Raw Soft Channel")
device(mbbi, CONSTANT, devMbbiSoftCallback, "Async Soft Channel")
recordtype(lso) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct lsoRecord;
    %typedef struct lsodset {
    %    dset common;
    %    long (*write_string)(struct lsoRecord *prec);
    %} lsodset;
    %#define HAS_lsodset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        size(61)
        special(SPC_NOMOD)
    }
    field(DESC, DBF_STRING) {
        prompt("Descriptor")
        size(41)
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        size(29)
        special(SPC_AS)
    }
    field(SCAN, DBF_MENU) {
        interest(1)
        menu(menuScan)
        promptgroup("20 - Scan")
        special(SPC_SCAN)
        prompt("Scan Mechanism")
    }
    field(PINI, DBF_MENU) {
        promptgroup("20 - Scan")
        menu(menuPini)
        interest(1)
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(EVNT, DBF_STRING) {
        promptgroup("20 - Scan")
        interest(1)
        size(40)
        special(SPC_SCAN)
        prompt("Event Name")
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSEL, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        interest(1)
        promptgroup("10 - Common")
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Monitor lock")
        extra("epicsMutexId        mlok")
    }
    field(MLIS, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor List")
        extra("ELLLIST             mlis")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        extra("ELLLIST             bklnk")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        pp(TRUE)
        interest(3)
    }
    field(STAT, DBF_MENU) {
        initial("UDF")
        prompt("Alarm Status")
        special(SPC_NOMOD)
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Severity")
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        interest(2)
        menu(menuAlarmStat)
        prompt("New Alarm Status")
        special(SPC_NOMOD)
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
        interest(2)
        menu(menuAlarmSevr)
    }
    field(ACKT, DBF_MENU) {
        menu(menuYesNo)
        interest(2)
        promptgroup("70 - Alarm")
        initial("YES")
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        prompt("Record active")
        special(SPC_NOMOD)
    }
    field(PUTF, DBF_UCHAR) {
        prompt("dbPutField process")
        special(SPC_NOMOD)
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Reprocess ")
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
        extra("struct asgMember    *asp")
    }
    field(PPN, DBF_NOACCESS) {
        extra("struct processNotify *ppn")
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        extra("struct processNotifyRecord *ppnr")
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        prompt("Scan Private")
        special(SPC_NOMOD)
        extra("struct scan_element *spvt")
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Address of RSET")
        extra("struct typed_rset   *rset")
    }
    field(DSET, DBF_NOACCESS) {
        extra("unambiguous_dset    *dset")
        prompt("DSET address")
        special(SPC_NOMOD)
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        extra("void                *dpvt")
        prompt("Device Private")
        special(SPC_NOMOD)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        extra("struct dbRecordType *rdes")
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
    }
    field(LSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Lock Set")
        extra("struct lockRecord   *lset")
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        interest(1)
        menu(menuPriority)
        promptgroup("20 - Scan")
        special(SPC_SCAN)
        prompt("Scheduling Priority")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        prompt("Break Point")
        special(SPC_NOMOD)
        extra("epicsUInt8          bkpt")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        initial("1")
        prompt("Undefined")
        pp(TRUE)
        interest(1)
        promptgroup("10 - Common")
    }
    field(UDFS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
    }
    field(TIME, DBF_NOACCESS) {
        prompt("Time")
        special(SPC_NOMOD)
        extra("epicsTimeStamp      time")
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        prompt("Time Tag")
        special(SPC_NOMOD)
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Forward Process Link")
    }
    field(VAL, DBF_NOACCESS) {
        pp(TRUE)
        prompt("Current Value")
        special(SPC_DBADDR)
        asl(ASL0)
        extra("char *val")
    }
    field(OVAL, DBF_NOACCESS) {
        interest(3)
        extra("char *oval")
        prompt("Previous Value")
        special(SPC_DBADDR)
    }
    field(SIZV, DBF_USHORT) {
        initial("41")
        special(SPC_NOMOD)
        prompt("Size of buffers")
        interest(1)
        promptgroup("50 - Output")
    }
    field(LEN, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Length of VAL")
    }
    field(OLEN, DBF_ULONG) {
        interest(3)
        prompt("Length of OVAL")
        special(SPC_NOMOD)
    }
    field(DOL, DBF_INLINK) {
        prompt("Desired Output Link")
        promptgroup("40 - Input")
        interest(1)
    }
    field(IVOA, DBF_MENU) {
        interest(2)
        menu(menuIvoa)
        promptgroup("50 - Output")
        prompt("INVALID Output Action")
    }
    field(IVOV, DBF_STRING) {
        prompt("INVALID Output Value")
        size(40)
        promptgroup("50 - Output")
        interest(2)
    }
    field(OMSL, DBF_MENU) {
        prompt("Output Mode Select")
        promptgroup("50 - Output")
        menu(menuOmsl)
        interest(1)
    }
    field(OUT, DBF_OUTLINK) {
        promptgroup("50 - Output")
        interest(1)
        prompt("Output Specification")
    }
    field(MPST, DBF_MENU) {
        interest(1)
        menu(menuPost)
        promptgroup("80 - Display")
        prompt("Post Value Monitors")
    }
    field(APST, DBF_MENU) {
        interest(1)
        menu(menuPost)
        promptgroup("80 - Display")
        prompt("Post Archive Monitors")
    }
    field(SIML, DBF_INLINK) {
        promptgroup("90 - Simulate")
        interest(1)
        prompt("Simulation Mode link")
    }
    field(SIMM, DBF_MENU) {
        menu(menuYesNo)
        interest(1)
        special(SPC_MOD)
        prompt("Simulation Mode")
    }
    field(SIMS, DBF_MENU) {
        prompt("Simulation Mode Severity")
        menu(menuAlarmSevr)
        interest(2)
        promptgroup("90 - Simulate")
    }
    field(SIOL, DBF_OUTLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Simulation Output Link")
    }
    field(OLDSIMM, DBF_MENU) {
        menu(menuSimm)
        interest(4)
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
    }
    field(SSCN, DBF_MENU) {
        initial("65535")
        prompt("Sim. Mode Scan")
        interest(1)
        menu(menuScan)
        promptgroup("90 - Simulate")
    }
    field(SDLY, DBF_DOUBLE) {
        prompt("Sim. Mode Async Delay")
        initial("-1.0")
        promptgroup("90 - Simulate")
        interest(2)
    }
    field(SIMPVT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Sim. Mode Private")
        extra("epicsCallback            *simpvt")
        interest(4)
    }
}
device(lso, CONSTANT, devLsoSoft, "Soft Channel")
device(lso, CONSTANT, devLsoSoftCallback, "Async Soft Channel")
device(lso, INST_IO, devLsoStdio, "stdio")
recordtype(bo) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct boRecord;
    %typedef struct bodset {
    %    dset common; /*init_record returns:(0,2)=>(success,success no convert*/
    %    long (*write_bo)(struct boRecord *prec); /*returns: (-1,0)=>(failure,success)*/
    %} bodset;
    %#define HAS_bodset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        special(SPC_NOMOD)
        size(61)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Descriptor")
        size(41)
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        special(SPC_AS)
        size(29)
        prompt("Access Security Group")
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        menu(menuScan)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(PINI, DBF_MENU) {
        interest(1)
        menu(menuPini)
        promptgroup("20 - Scan")
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        special(SPC_SCAN)
        prompt("Scan Phase")
    }
    field(EVNT, DBF_STRING) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Event Name")
        size(40)
        special(SPC_SCAN)
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSEL, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        interest(1)
        promptgroup("10 - Common")
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        initial("1")
        prompt("Disable Value")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        extra("epicsMutexId        mlok")
        special(SPC_NOMOD)
        prompt("Monitor lock")
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        prompt("Monitor List")
        special(SPC_NOMOD)
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        extra("ELLLIST             bklnk")
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        interest(3)
        pp(TRUE)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Status")
        initial("UDF")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Severity")
        menu(menuAlarmSevr)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        prompt("New Alarm Status")
        special(SPC_NOMOD)
        interest(2)
        menu(menuAlarmStat)
    }
    field(NSEV, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
        menu(menuAlarmSevr)
        interest(2)
    }
    field(NAMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
        interest(2)
        menu(menuAlarmSevr)
    }
    field(ACKT, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(2)
        menu(menuYesNo)
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        prompt("Record active")
        special(SPC_NOMOD)
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        prompt("dbPutField process")
        special(SPC_NOMOD)
    }
    field(RPRO, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Reprocess ")
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        extra("struct scan_element *spvt")
        prompt("Scan Private")
        special(SPC_NOMOD)
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
    }
    field(DSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("DSET address")
        extra("unambiguous_dset    *dset")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        extra("void                *dpvt")
        prompt("Device Private")
        special(SPC_NOMOD)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        extra("struct dbRecordType *rdes")
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
    }
    field(LSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Lock Set")
        extra("struct lockRecord   *lset")
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scheduling Priority")
        interest(1)
        menu(menuPriority)
        promptgroup("20 - Scan")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Break Point")
        extra("epicsUInt8          bkpt")
    }
    field(UDF, DBF_UCHAR) {
        initial("1")
        prompt("Undefined")
        interest(1)
        pp(TRUE)
        promptgroup("10 - Common")
    }
    field(UDFS, DBF_MENU) {
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
    }
    field(TIME, DBF_NOACCESS) {
        extra("epicsTimeStamp      time")
        prompt("Time")
        special(SPC_NOMOD)
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Forward Process Link")
    }
    field(VAL, DBF_ENUM) {
        asl(ASL0)
        prompt("Current Value")
        pp(TRUE)
        promptgroup("50 - Output")
    }
    field(OMSL, DBF_MENU) {
        prompt("Output Mode Select")
        menu(menuOmsl)
        interest(1)
        promptgroup("50 - Output")
    }
    field(DOL, DBF_INLINK) {
        prompt("Desired Output Link")
        interest(1)
        promptgroup("40 - Input")
    }
    field(OUT, DBF_OUTLINK) {
        promptgroup("50 - Output")
        interest(1)
        prompt("Output Specification")
    }
    field(HIGH, DBF_DOUBLE) {
        promptgroup("30 - Action")
        interest(1)
        prompt("Seconds to Hold High")
    }
    field(ZNAM, DBF_STRING) {
        interest(1)
        pp(TRUE)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Zero Name")
        size(26)
    }
    field(ONAM, DBF_STRING) {
        promptgroup("80 - Display")
        pp(TRUE)
        interest(1)
        size(26)
        prompt("One Name")
        prop(YES)
    }
    field(RVAL, DBF_ULONG) {
        prompt("Raw Value")
        pp(TRUE)
    }
    field(ORAW, DBF_ULONG) {
        interest(3)
        special(SPC_NOMOD)
        prompt("prev Raw Value")
    }
    field(MASK, DBF_ULONG) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Hardware Mask")
    }
    field(RPVT, DBF_NOACCESS) {
        interest(4)
        extra("void *  rpvt")
        prompt("Record Private")
        special(SPC_NOMOD)
    }
    field(WDPT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Watch Dog Timer ID")
        extra("void *	wdpt")
        interest(4)
    }
    field(ZSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
        prompt("Zero Error Severity")
    }
    field(OSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        prompt("One Error Severity")
    }
    field(COSV, DBF_MENU) {
        prompt("Change of State Sevr")
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
    }
    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) {
        interest(3)
        prompt("Last Value Monitored")
        special(SPC_NOMOD)
    }
    field(LALM, DBF_USHORT) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Alarmed")
    }
    field(SIOL, DBF_OUTLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Simulation Output Link")
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        interest(1)
        promptgroup("90 - Simulate")
    }
    field(SIMM, DBF_MENU) {
        prompt("Simulation Mode")
        special(SPC_MOD)
        menu(menuYesNo)
        interest(1)
    }
    field(SIMS, DBF_MENU) {
        prompt("Simulation Mode Severity")
        promptgroup("90 - Simulate")
        interest(2)
        menu(menuAlarmSevr)
    }
    field(OLDSIMM, DBF_MENU) {
        menu(menuSimm)
        interest(4)
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
    }
    field(SSCN, DBF_MENU) {
        initial("65535")
        prompt("Sim. Mode Scan")
        menu(menuScan)
        interest(1)
        promptgroup("90 - Simulate")
    }
    field(SDLY, DBF_DOUBLE) {
        prompt("Sim. Mode Async Delay")
        initial("-1.0")
        promptgroup("90 - Simulate")
        interest(2)
    }
    field(SIMPVT, DBF_NOACCESS) {
        interest(4)
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        extra("epicsCallback            *simpvt")
    }
    field(IVOA, DBF_MENU) {
        prompt("INVALID outpt action")
        interest(2)
        menu(menuIvoa)
        promptgroup("50 - Output")
    }
    field(IVOV, DBF_USHORT) {
        prompt("INVALID output value")
        promptgroup("50 - Output")
        interest(2)
    }
}
device(bo, CONSTANT, devBoSoft, "Soft Channel")
device(bo, CONSTANT, devBoSoftRaw, "Raw Soft Channel")
device(bo, CONSTANT, devBoSoftCallback, "Async Soft Channel")
device(bo, INST_IO, devBoGeneralTime, "General Time")
device(bo, INST_IO, devBoDbState, "Db State")
recordtype(longout) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct longoutRecord;
    %typedef struct longoutdset {
    %    dset common; /*init_record returns: (-1,0)=>(failure,success)*/
    %    long (*write_longout)(struct longoutRecord *prec); /*(-1,0)=>(failure,success*/
    %} longoutdset;
    %#define HAS_longoutdset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        size(61)
        special(SPC_NOMOD)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        size(41)
        prompt("Descriptor")
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        prompt("Access Security Group")
        special(SPC_AS)
        size(29)
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        promptgroup("20 - Scan")
        menu(menuScan)
        interest(1)
        special(SPC_SCAN)
        prompt("Scan Mechanism")
    }
    field(PINI, DBF_MENU) {
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPini)
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        special(SPC_SCAN)
        prompt("Scan Phase")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(EVNT, DBF_STRING) {
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSE, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        initial("1")
        prompt("Disable Value")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        prompt("Monitor List")
        special(SPC_NOMOD)
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        extra("ELLLIST             bklnk")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        pp(TRUE)
        interest(3)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        initial("UDF")
        prompt("Alarm Status")
        special(SPC_NOMOD)
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        interest(2)
        menu(menuAlarmStat)
        prompt("New Alarm Status")
        special(SPC_NOMOD)
    }
    field(NSEV, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
        interest(2)
        menu(menuAlarmSevr)
    }
    field(ACKT, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        initial("YES")
        promptgroup("70 - Alarm")
        menu(menuYesNo)
        interest(2)
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Lock Count")
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Record active")
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        prompt("dbPutField process")
        special(SPC_NOMOD)
    }
    field(RPRO, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Reprocess ")
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        extra("struct asgMember    *asp")
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("pprocessNotify")
        extra("struct processNotify *ppn")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        extra("struct processNotifyRecord *ppnr")
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
    }
    field(SPVT, DBF_NOACCESS) {
        extra("struct scan_element *spvt")
        prompt("Scan Private")
        special(SPC_NOMOD)
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        extra("struct typed_rset   *rset")
        prompt("Address of RSET")
        special(SPC_NOMOD)
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        prompt("DSET address")
        special(SPC_NOMOD)
        extra("unambiguous_dset    *dset")
    }
    field(DPVT, DBF_NOACCESS) {
        extra("void                *dpvt")
        prompt("Device Private")
        special(SPC_NOMOD)
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
        extra("struct dbRecordType *rdes")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Lock Set")
        extra("struct lockRecord   *lset")
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        interest(1)
        menu(menuPriority)
        promptgroup("20 - Scan")
        prompt("Scheduling Priority")
        special(SPC_SCAN)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Break Point")
        extra("epicsUInt8          bkpt")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        promptgroup("10 - Common")
        interest(1)
        pp(TRUE)
        prompt("Undefined")
        initial("1")
    }
    field(UDFS, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
    }
    field(TIME, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Forward Process Link")
    }
    field(VAL, DBF_LONG) {
        promptgroup("50 - Output")
        pp(TRUE)
        prompt("Desired Output")
        asl(ASL0)
    }
    field(OUT, DBF_OUTLINK) {
        prompt("Output Specification")
        interest(1)
        promptgroup("50 - Output")
    }
    field(DOL, DBF_INLINK) {
        promptgroup("40 - Input")
        interest(1)
        prompt("Desired Output Link")
    }
    field(OMSL, DBF_MENU) {
        promptgroup("50 - Output")
        menu(menuOmsl)
        interest(1)
        prompt("Output Mode Select")
    }
    field(EGU, DBF_STRING) {
        size(16)
        prompt("Engineering Units")
        prop(YES)
        promptgroup("80 - Display")
        interest(1)
    }
    field(DRVH, DBF_LONG) {
        prop(YES)
        prompt("Drive High Limit")
        interest(1)
        pp(TRUE)
        promptgroup("30 - Action")
    }
    field(DRVL, DBF_LONG) {
        prop(YES)
        prompt("Drive Low Limit")
        pp(TRUE)
        interest(1)
        promptgroup("30 - Action")
    }
    field(HOPR, DBF_LONG) {
        prop(YES)
        prompt("High Operating Range")
        interest(1)
        promptgroup("80 - Display")
    }
    field(LOPR, DBF_LONG) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Low Operating Range")
    }
    field(HIHI, DBF_LONG) {
        prompt("Hihi Alarm Limit")
        prop(YES)
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
    }
    field(LOLO, DBF_LONG) {
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Lolo Alarm Limit")
    }
    field(HIGH, DBF_LONG) {
        prop(YES)
        prompt("High Alarm Limit")
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LOW, DBF_LONG) {
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Low Alarm Limit")
    }
    field(HHSV, DBF_MENU) {
        prompt("Hihi Severity")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LLSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
        prompt("Lolo Severity")
    }
    field(HSV, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prompt("High Severity")
    }
    field(LSV, DBF_MENU) {
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prompt("Low Severity")
    }
    field(HYST, DBF_LONG) {
        prompt("Alarm Deadband")
        promptgroup("70 - Alarm")
        interest(1)
    }
    field(ADEL, DBF_LONG) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Archive Deadband")
    }
    field(MDEL, DBF_LONG) {
        prompt("Monitor Deadband")
        interest(1)
        promptgroup("80 - Display")
    }
    field(LALM, DBF_LONG) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Alarmed")
    }
    field(ALST, DBF_LONG) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Archived")
    }
    field(MLST, DBF_LONG) {
        special(SPC_NOMOD)
        prompt("Last Val Monitored")
        interest(3)
    }
    field(SIOL, DBF_OUTLINK) {
        promptgroup("90 - Simulate")
        interest(1)
        prompt("Sim Output Specifctn")
    }
    field(SIML, DBF_INLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Sim Mode Location")
    }
    field(SIMM, DBF_MENU) {
        interest(1)
        menu(menuYesNo)
        special(SPC_MOD)
        prompt("Simulation Mode")
    }
    field(SIMS, DBF_MENU) {
        promptgroup("90 - Simulate")
        menu(menuAlarmSevr)
        interest(2)
        prompt("Sim mode Alarm Svrty")
    }
    field(OLDSIMM, DBF_MENU) {
        interest(4)
        menu(menuSimm)
        special(SPC_NOMOD)
        prompt("Prev. Simulation Mode")
    }
    field(SSCN, DBF_MENU) {
        initial("65535")
        prompt("Sim. Mode Scan")
        menu(menuScan)
        interest(1)
        promptgroup("90 - Simulate")
    }
    field(SDLY, DBF_DOUBLE) {
        initial("-1.0")
        prompt("Sim. Mode Async Delay")
        interest(2)
        promptgroup("90 - Simulate")
    }
    field(SIMPVT, DBF_NOACCESS) {
        interest(4)
        extra("epicsCallback            *simpvt")
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
    }
    field(IVOA, DBF_MENU) {
        prompt("INVALID output action")
        promptgroup("50 - Output")
        interest(2)
        menu(menuIvoa)
    }
    field(IVOV, DBF_LONG) {
        interest(2)
        promptgroup("50 - Output")
        prompt("INVALID output value")
    }
}
device(longout, CONSTANT, devLoSoft, "Soft Channel")
device(longout, CONSTANT, devLoSoftCallback, "Async Soft Channel")
recordtype(int64in) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct int64inRecord;
    %typedef struct int64indset {
    %    dset common;
    %    long (*read_int64in)(struct int64inRecord *prec);
    %} int64indset;
    %#define HAS_int64indset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        special(SPC_NOMOD)
        size(61)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        size(41)
        prompt("Descriptor")
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        special(SPC_AS)
        size(29)
    }
    field(SCAN, DBF_MENU) {
        prompt("Scan Mechanism")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        menu(menuScan)
        interest(1)
    }
    field(PINI, DBF_MENU) {
        promptgroup("20 - Scan")
        menu(menuPini)
        interest(1)
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        special(SPC_SCAN)
        prompt("Scan Phase")
    }
    field(EVNT, DBF_STRING) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
    }
    field(TSE, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        interest(1)
        promptgroup("10 - Common")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        prompt("Monitor lock")
        special(SPC_NOMOD)
        extra("epicsMutexId        mlok")
    }
    field(MLIS, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             mlis")
        special(SPC_NOMOD)
        prompt("Monitor List")
    }
    field(BKLNK, DBF_NOACCESS) {
        extra("ELLLIST             bklnk")
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        interest(3)
        pp(TRUE)
    }
    field(STAT, DBF_MENU) {
        prompt("Alarm Status")
        special(SPC_NOMOD)
        initial("UDF")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        interest(2)
        menu(menuAlarmStat)
        special(SPC_NOMOD)
        prompt("New Alarm Status")
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
        interest(2)
        menu(menuAlarmSevr)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        menu(menuYesNo)
        interest(2)
        promptgroup("70 - Alarm")
    }
    field(DISS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Record active")
    }
    field(PUTF, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("dbPutField process")
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        prompt("Reprocess ")
        special(SPC_NOMOD)
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        prompt("Scan Private")
        special(SPC_NOMOD)
        extra("struct scan_element *spvt")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        prompt("DSET address")
        special(SPC_NOMOD)
        extra("unambiguous_dset    *dset")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        prompt("Device Private")
        special(SPC_NOMOD)
        extra("void                *dpvt")
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
    }
    field(LSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Lock Set")
        extra("struct lockRecord   *lset")
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        interest(1)
        menu(menuPriority)
        promptgroup("20 - Scan")
        special(SPC_SCAN)
        prompt("Scheduling Priority")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        prompt("Break Point")
        special(SPC_NOMOD)
        extra("epicsUInt8          bkpt")
    }
    field(UDF, DBF_UCHAR) {
        initial("1")
        prompt("Undefined")
        pp(TRUE)
        interest(1)
        promptgroup("10 - Common")
    }
    field(UDFS, DBF_MENU) {
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(TIME, DBF_NOACCESS) {
        extra("epicsTimeStamp      time")
        prompt("Time")
        special(SPC_NOMOD)
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        special(SPC_NOMOD)
        prompt("Time Tag")
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Forward Process Link")
    }
    field(VAL, DBF_INT64) {
        asl(ASL0)
        prompt("Current value")
        pp(TRUE)
        promptgroup("40 - Input")
    }
    field(INP, DBF_INLINK) {
        prompt("Input Specification")
        promptgroup("40 - Input")
        interest(1)
    }
    field(EGU, DBF_STRING) {
        prop(YES)
        prompt("Units name")
        size(16)
        interest(1)
        promptgroup("80 - Display")
    }
    field(HOPR, DBF_INT64) {
        promptgroup("80 - Display")
        interest(1)
        prompt("High Operating Range")
        prop(YES)
    }
    field(LOPR, DBF_INT64) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Low Operating Range")
        prop(YES)
    }
    field(HIHI, DBF_INT64) {
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Hihi Alarm Limit")
    }
    field(LOLO, DBF_INT64) {
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        prompt("Lolo Alarm Limit")
        prop(YES)
    }
    field(HIGH, DBF_INT64) {
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("High Alarm Limit")
    }
    field(LOW, DBF_INT64) {
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        prompt("Low Alarm Limit")
        prop(YES)
    }
    field(HHSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        prompt("Hihi Severity")
    }
    field(LLSV, DBF_MENU) {
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Lolo Severity")
    }
    field(HSV, DBF_MENU) {
        prompt("High Severity")
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        pp(TRUE)
    }
    field(LSV, DBF_MENU) {
        prompt("Low Severity")
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
    }
    field(HYST, DBF_INT64) {
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Alarm Deadband")
    }
    field(AFTC, DBF_DOUBLE) {
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Alarm Filter Time Constant")
    }
    field(AFVL, DBF_DOUBLE) {
        interest(3)
        prompt("Alarm Filter Value")
        special(SPC_NOMOD)
    }
    field(ADEL, DBF_INT64) {
        prompt("Archive Deadband")
        promptgroup("80 - Display")
        interest(1)
    }
    field(MDEL, DBF_INT64) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Monitor Deadband")
    }
    field(LALM, DBF_INT64) {
        special(SPC_NOMOD)
        prompt("Last Value Alarmed")
        interest(3)
    }
    field(ALST, DBF_INT64) {
        interest(3)
        prompt("Last Value Archived")
        special(SPC_NOMOD)
    }
    field(MLST, DBF_INT64) {
        interest(3)
        prompt("Last Val Monitored")
        special(SPC_NOMOD)
    }
    field(SIOL, DBF_INLINK) {
        promptgroup("90 - Simulate")
        interest(1)
        prompt("Simulation Input Link")
    }
    field(SVAL, DBF_INT64) {
        prompt("Simulation Value")
    }
    field(SIML, DBF_INLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Simulation Mode Link")
    }
    field(SIMM, DBF_MENU) {
        interest(1)
        menu(menuYesNo)
        prompt("Simulation Mode")
        special(SPC_MOD)
    }
    field(SIMS, DBF_MENU) {
        prompt("Simulation Mode Severity")
        promptgroup("90 - Simulate")
        menu(menuAlarmSevr)
        interest(2)
    }
    field(OLDSIMM, DBF_MENU) {
        interest(4)
        menu(menuSimm)
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
    }
    field(SSCN, DBF_MENU) {
        interest(1)
        menu(menuScan)
        promptgroup("90 - Simulate")
        initial("65535")
        prompt("Sim. Mode Scan")
    }
    field(SDLY, DBF_DOUBLE) {
        interest(2)
        promptgroup("90 - Simulate")
        initial("-1.0")
        prompt("Sim. Mode Async Delay")
    }
    field(SIMPVT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Sim. Mode Private")
        extra("epicsCallback            *simpvt")
        interest(4)
    }
}
device(int64in, CONSTANT, devI64inSoft, "Soft Channel")
device(int64in, CONSTANT, devI64inSoftCallback, "Async Soft Channel")
recordtype(event) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct eventRecord;
    %typedef struct eventdset {
    %    dset common; /*init_record returns: (-1,0)=>(failure,success)*/
    %    long (*read_event)(struct eventRecord *prec); /*(0)=> success */
    %} eventdset;
    %#define HAS_eventdset
    %
    %#include "dbScan.h"
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        size(61)
        special(SPC_NOMOD)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        prompt("Descriptor")
        size(41)
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        special(SPC_AS)
        size(29)
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        menu(menuScan)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        promptgroup("20 - Scan")
        menu(menuPini)
        interest(1)
    }
    field(PHAS, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scan Phase")
        special(SPC_SCAN)
    }
    field(EVNT, DBF_STRING) {
        size(40)
        special(SPC_SCAN)
        prompt("Event Name")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSE, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        prompt("Time Stamp Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        interest(1)
        promptgroup("10 - Common")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        prompt("Disable Value")
        initial("1")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        prompt("Monitor lock")
        special(SPC_NOMOD)
        extra("epicsMutexId        mlok")
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor List")
        extra("ELLLIST             mlis")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        extra("ELLLIST             bklnk")
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        pp(TRUE)
        interest(3)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        initial("UDF")
        special(SPC_NOMOD)
        prompt("Alarm Status")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        menu(menuAlarmStat)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Status")
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
        interest(2)
        menu(menuAlarmSevr)
    }
    field(ACKT, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        promptgroup("70 - Alarm")
        menu(menuYesNo)
        interest(2)
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Record active")
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        prompt("dbPutField process")
        special(SPC_NOMOD)
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Reprocess ")
    }
    field(ASP, DBF_NOACCESS) {
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
        extra("struct asgMember    *asp")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("pprocessNotify")
        extra("struct processNotify *ppn")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        extra("struct processNotifyRecord *ppnr")
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        prompt("Scan Private")
        special(SPC_NOMOD)
        extra("struct scan_element *spvt")
    }
    field(RSET, DBF_NOACCESS) {
        extra("struct typed_rset   *rset")
        prompt("Address of RSET")
        special(SPC_NOMOD)
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        prompt("DSET address")
        special(SPC_NOMOD)
        extra("unambiguous_dset    *dset")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Device Private")
        extra("void                *dpvt")
    }
    field(RDES, DBF_NOACCESS) {
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
        extra("struct dbRecordType *rdes")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        extra("struct lockRecord   *lset")
        prompt("Lock Set")
        special(SPC_NOMOD)
    }
    field(PRIO, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scheduling Priority")
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        prompt("Break Point")
        special(SPC_NOMOD)
        extra("epicsUInt8          bkpt")
    }
    field(UDF, DBF_UCHAR) {
        promptgroup("10 - Common")
        interest(1)
        pp(TRUE)
        prompt("Undefined")
        initial("1")
    }
    field(UDFS, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(VAL, DBF_STRING) {
        promptgroup("40 - Input")
        special(SPC_MOD)
        size(40)
        prompt("Event Name To Post")
        asl(ASL0)
    }
    field(EPVT, DBF_NOACCESS) {
        prompt("Event private")
        special(SPC_NOMOD)
        extra("EVENTPVT epvt")
        interest(4)
    }
    field(INP, DBF_INLINK) {
        prompt("Input Specification")
        interest(1)
        promptgroup("40 - Input")
    }
    field(SIOL, DBF_INLINK) {
        prompt("Sim Input Specifctn")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(SVAL, DBF_STRING) {
        prompt("Simulation Value")
        size(40)
    }
    field(SIML, DBF_INLINK) {
        prompt("Sim Mode Location")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(SIMM, DBF_MENU) {
        prompt("Simulation Mode")
        special(SPC_MOD)
        interest(1)
        menu(menuYesNo)
    }
    field(SIMS, DBF_MENU) {
        prompt("Sim mode Alarm Svrty")
        promptgroup("90 - Simulate")
        interest(2)
        menu(menuAlarmSevr)
    }
    field(OLDSIMM, DBF_MENU) {
        menu(menuSimm)
        interest(4)
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
    }
    field(SSCN, DBF_MENU) {
        prompt("Sim. Mode Scan")
        initial("65535")
        promptgroup("90 - Simulate")
        menu(menuScan)
        interest(1)
    }
    field(SDLY, DBF_DOUBLE) {
        interest(2)
        promptgroup("90 - Simulate")
        initial("-1.0")
        prompt("Sim. Mode Async Delay")
    }
    field(SIMPVT, DBF_NOACCESS) {
        extra("epicsCallback            *simpvt")
        special(SPC_NOMOD)
        prompt("Sim. Mode Private")
        interest(4)
    }
}
device(event, CONSTANT, devEventSoft, "Soft Channel")
recordtype(calcout) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %/* Declare Device Support Entry Table */
    %struct calcoutRecord;
    %typedef struct calcoutdset {
    %    dset common;
    %    long (*write)(struct calcoutRecord *prec);
    %} calcoutdset;
    %#define HAS_calcoutdset
    %
    %#include "dbScan.h"
    %#include "postfix.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        special(SPC_NOMOD)
        size(61)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Descriptor")
        size(41)
    }
    field(ASG, DBF_STRING) {
        size(29)
        special(SPC_AS)
        prompt("Access Security Group")
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        promptgroup("20 - Scan")
        menu(menuScan)
        interest(1)
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        menu(menuPini)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(PHAS, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Scan Phase")
        special(SPC_SCAN)
    }
    field(EVNT, DBF_STRING) {
        size(40)
        special(SPC_SCAN)
        prompt("Event Name")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSE, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        promptgroup("10 - Common")
        interest(1)
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        initial("1")
        prompt("Disable Value")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        prompt("Monitor lock")
        special(SPC_NOMOD)
        extra("epicsMutexId        mlok")
    }
    field(MLIS, DBF_NOACCESS) {
        interest(4)
        prompt("Monitor List")
        special(SPC_NOMOD)
        extra("ELLLIST             mlis")
    }
    field(BKLNK, DBF_NOACCESS) {
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        extra("ELLLIST             bklnk")
        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")
        special(SPC_NOMOD)
        initial("UDF")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Severity")
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        interest(2)
        menu(menuAlarmStat)
        special(SPC_NOMOD)
        prompt("New Alarm Status")
    }
    field(NSEV, DBF_MENU) {
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
        menu(menuAlarmSevr)
        interest(2)
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
        menu(menuAlarmSevr)
        interest(2)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        menu(menuYesNo)
        interest(2)
        promptgroup("70 - Alarm")
    }
    field(DISS, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        prompt("Record active")
        special(SPC_NOMOD)
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("dbPutField process")
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("pprocessNotify")
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        extra("struct processNotifyRecord *ppnr")
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
    }
    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 typed_rset   *rset")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        extra("unambiguous_dset    *dset")
        special(SPC_NOMOD)
        prompt("DSET address")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        extra("void                *dpvt")
        prompt("Device Private")
        special(SPC_NOMOD)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
        extra("struct dbRecordType *rdes")
    }
    field(LSET, DBF_NOACCESS) {
        extra("struct lockRecord   *lset")
        prompt("Lock Set")
        special(SPC_NOMOD)
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        prompt("Scheduling Priority")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
    }
    field(UDF, DBF_UCHAR) {
        promptgroup("10 - Common")
        pp(TRUE)
        interest(1)
        prompt("Undefined")
        initial("1")
    }
    field(UDFS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(RPVT, DBF_NOACCESS) {
        extra("struct rpvtStruct *rpvt")
        prompt("Record Private")
        special(SPC_NOMOD)
        interest(4)
    }
    field(VAL, DBF_DOUBLE) {
        promptgroup("50 - Output")
        prompt("Result")
        asl(ASL0)
    }
    field(PVAL, DBF_DOUBLE) {
        prompt("Previous Value")
    }
    field(CALC, DBF_STRING) {
        initial("0")
        special(SPC_CALC)
        size(80)
        prompt("Calculation")
        pp(TRUE)
        promptgroup("30 - Action")
    }
    field(CLCV, DBF_LONG) {
        interest(1)
        prompt("CALC Valid")
    }
    field(INPA, DBF_INLINK) {
        interest(1)
        promptgroup("41 - Input A-F")
        prompt("Input A")
        special(SPC_MOD)
    }
    field(INPB, DBF_INLINK) {
        prompt("Input B")
        special(SPC_MOD)
        promptgroup("41 - Input A-F")
        interest(1)
    }
    field(INPC, DBF_INLINK) {
        promptgroup("41 - Input A-F")
        interest(1)
        special(SPC_MOD)
        prompt("Input C")
    }
    field(INPD, DBF_INLINK) {
        special(SPC_MOD)
        prompt("Input D")
        interest(1)
        promptgroup("41 - Input A-F")
    }
    field(INPE, DBF_INLINK) {
        special(SPC_MOD)
        prompt("Input E")
        interest(1)
        promptgroup("41 - Input A-F")
    }
    field(INPF, DBF_INLINK) {
        special(SPC_MOD)
        prompt("Input F")
        interest(1)
        promptgroup("41 - Input A-F")
    }
    field(INPG, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input G-L")
        prompt("Input G")
        special(SPC_MOD)
    }
    field(INPH, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input G-L")
        special(SPC_MOD)
        prompt("Input H")
    }
    field(INPI, DBF_INLINK) {
        prompt("Input I")
        special(SPC_MOD)
        promptgroup("42 - Input G-L")
        interest(1)
    }
    field(INPJ, DBF_INLINK) {
        prompt("Input J")
        special(SPC_MOD)
        interest(1)
        promptgroup("42 - Input G-L")
    }
    field(INPK, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input G-L")
        prompt("Input K")
        special(SPC_MOD)
    }
    field(INPL, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input G-L")
        special(SPC_MOD)
        prompt("Input L")
    }
    field(OUT, DBF_OUTLINK) {
        prompt("Output Specification")
        special(SPC_MOD)
        promptgroup("50 - Output")
        interest(1)
    }
    field(INAV, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("INPA PV Status")
        initial("1")
        menu(calcoutINAV)
        interest(1)
    }
    field(INBV, DBF_MENU) {
        interest(1)
        menu(calcoutINAV)
        prompt("INPB PV Status")
        special(SPC_NOMOD)
        initial("1")
    }
    field(INCV, DBF_MENU) {
        prompt("INPC PV Status")
        special(SPC_NOMOD)
        initial("1")
        menu(calcoutINAV)
        interest(1)
    }
    field(INDV, DBF_MENU) {
        menu(calcoutINAV)
        interest(1)
        special(SPC_NOMOD)
        prompt("INPD PV Status")
        initial("1")
    }
    field(INEV, DBF_MENU) {
        interest(1)
        menu(calcoutINAV)
        prompt("INPE PV Status")
        special(SPC_NOMOD)
        initial("1")
    }
    field(INFV, DBF_MENU) {
        interest(1)
        menu(calcoutINAV)
        initial("1")
        special(SPC_NOMOD)
        prompt("INPF PV Status")
    }
    field(INGV, DBF_MENU) {
        menu(calcoutINAV)
        interest(1)
        initial("1")
        prompt("INPG PV Status")
        special(SPC_NOMOD)
    }
    field(INHV, DBF_MENU) {
        interest(1)
        menu(calcoutINAV)
        prompt("INPH PV Status")
        special(SPC_NOMOD)
        initial("1")
    }
    field(INIV, DBF_MENU) {
        initial("1")
        special(SPC_NOMOD)
        prompt("INPI PV Status")
        menu(calcoutINAV)
        interest(1)
    }
    field(INJV, DBF_MENU) {
        interest(1)
        menu(calcoutINAV)
        initial("1")
        prompt("INPJ PV Status")
        special(SPC_NOMOD)
    }
    field(INKV, DBF_MENU) {
        initial("1")
        special(SPC_NOMOD)
        prompt("INPK PV Status")
        interest(1)
        menu(calcoutINAV)
    }
    field(INLV, DBF_MENU) {
        menu(calcoutINAV)
        interest(1)
        initial("1")
        prompt("INPL PV Status")
        special(SPC_NOMOD)
    }
    field(OUTV, DBF_MENU) {
        menu(calcoutINAV)
        interest(1)
        prompt("OUT PV Status")
        special(SPC_NOMOD)
    }
    field(OOPT, DBF_MENU) {
        prompt("Output Execute Opt")
        promptgroup("50 - Output")
        menu(calcoutOOPT)
        interest(1)
    }
    field(ODLY, DBF_DOUBLE) {
        promptgroup("50 - Output")
        interest(1)
        prompt("Output Execute Delay")
        asl(ASL0)
    }
    field(DLYA, DBF_USHORT) {
        special(SPC_NOMOD)
        prompt("Output Delay Active")
        asl(ASL0)
    }
    field(DOPT, DBF_MENU) {
        promptgroup("30 - Action")
        menu(calcoutDOPT)
        interest(1)
        prompt("Output Data Opt")
    }
    field(OCAL, DBF_STRING) {
        initial("0")
        pp(TRUE)
        promptgroup("30 - Action")
        special(SPC_CALC)
        size(80)
        prompt("Output Calculation")
    }
    field(OCLV, DBF_LONG) {
        interest(1)
        prompt("OCAL Valid")
    }
    field(OEVT, DBF_STRING) {
        promptgroup("30 - Action")
        asl(ASL0)
        special(SPC_MOD)
        size(40)
        prompt("Event To Issue")
    }
    field(EPVT, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Event private")
        extra("EVENTPVT epvt")
    }
    field(IVOA, DBF_MENU) {
        prompt("INVALID output action")
        promptgroup("50 - Output")
        interest(2)
        menu(menuIvoa)
    }
    field(IVOV, DBF_DOUBLE) {
        prompt("INVALID output value")
        interest(2)
        promptgroup("50 - Output")
    }
    field(EGU, DBF_STRING) {
        prop(YES)
        prompt("Engineering Units")
        size(16)
        interest(1)
        promptgroup("80 - Display")
    }
    field(PREC, DBF_SHORT) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Display Precision")
        prop(YES)
    }
    field(HOPR, DBF_DOUBLE) {
        prompt("High Operating Rng")
        prop(YES)
        promptgroup("80 - Display")
        interest(1)
    }
    field(LOPR, DBF_DOUBLE) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Low Operating Range")
        prop(YES)
    }
    field(HIHI, DBF_DOUBLE) {
        prompt("Hihi Alarm Limit")
        prop(YES)
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
    }
    field(LOLO, DBF_DOUBLE) {
        prop(YES)
        prompt("Lolo Alarm Limit")
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(HIGH, DBF_DOUBLE) {
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("High Alarm Limit")
    }
    field(LOW, DBF_DOUBLE) {
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Low Alarm Limit")
    }
    field(HHSV, DBF_MENU) {
        prompt("Hihi Severity")
        prop(YES)
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
    }
    field(LLSV, DBF_MENU) {
        prompt("Lolo Severity")
        prop(YES)
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
    }
    field(HSV, DBF_MENU) {
        prop(YES)
        prompt("High Severity")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LSV, DBF_MENU) {
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Low Severity")
    }
    field(HYST, DBF_DOUBLE) {
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Alarm Deadband")
    }
    field(ADEL, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prompt("Archive Deadband")
    }
    field(MDEL, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prompt("Monitor Deadband")
    }
    field(A, DBF_DOUBLE) {
        prompt("Value of Input A")
        pp(TRUE)
    }
    field(B, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input B")
    }
    field(C, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input C")
    }
    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) {
        pp(TRUE)
        prompt("Value of Input G")
    }
    field(H, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input H")
    }
    field(I, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input I")
    }
    field(J, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input J")
    }
    field(K, DBF_DOUBLE) {
        prompt("Value of Input K")
        pp(TRUE)
    }
    field(L, DBF_DOUBLE) {
        pp(TRUE)
        prompt("Value of Input L")
    }
    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) {
        interest(3)
        prompt("Prev Value of B")
        special(SPC_NOMOD)
    }
    field(LC, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of C")
        interest(3)
    }
    field(LD, DBF_DOUBLE) {
        interest(3)
        prompt("Prev Value of D")
        special(SPC_NOMOD)
    }
    field(LE, DBF_DOUBLE) {
        prompt("Prev Value of E")
        special(SPC_NOMOD)
        interest(3)
    }
    field(LF, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of F")
    }
    field(LG, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of G")
    }
    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) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of J")
    }
    field(LK, DBF_DOUBLE) {
        interest(3)
        prompt("Prev Value of K")
        special(SPC_NOMOD)
    }
    field(LL, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of L")
        interest(3)
    }
    field(POVL, DBF_DOUBLE) {
        prompt("Prev Value of OVAL")
        asl(ASL0)
    }
    field(LALM, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Alarmed")
    }
    field(ALST, DBF_DOUBLE) {
        interest(3)
        prompt("Last Value Archived")
        special(SPC_NOMOD)
    }
    field(MLST, DBF_DOUBLE) {
        interest(3)
        prompt("Last Val Monitored")
        special(SPC_NOMOD)
    }
    field(RPCL, DBF_NOACCESS) {
        prompt("Reverse Polish Calc")
        special(SPC_NOMOD)
        extra("char	rpcl[INFIX_TO_POSTFIX_SIZE(80)]")
        interest(4)
    }
    field(ORPC, DBF_NOACCESS) {
        interest(4)
        extra("char	orpc[INFIX_TO_POSTFIX_SIZE(80)]")
        special(SPC_NOMOD)
        prompt("Reverse Polish OCalc")
    }
}
device(calcout, CONSTANT, devCalcoutSoft, "Soft Channel")
device(calcout, CONSTANT, devCalcoutSoftCallback, "Async Soft Channel")
recordtype(stringin) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct stringinRecord;
    %typedef struct stringindset {
    %    dset common; /*init_record returns: (-1,0)=>(failure,success)*/
    %    long (*read_stringin)(struct stringinRecord *prec); /*returns: (-1,0)=>(failure,success)*/
    %} stringindset;
    %#define HAS_stringindset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        special(SPC_NOMOD)
        size(61)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        size(41)
        prompt("Descriptor")
    }
    field(ASG, DBF_STRING) {
        special(SPC_AS)
        size(29)
        prompt("Access Security Group")
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        promptgroup("20 - Scan")
        menu(menuScan)
        interest(1)
    }
    field(PINI, DBF_MENU) {
        interest(1)
        menu(menuPini)
        promptgroup("20 - Scan")
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
    }
    field(EVNT, DBF_STRING) {
        size(40)
        special(SPC_SCAN)
        prompt("Event Name")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSE, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        prompt("Disable Value")
        initial("1")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
    }
    field(MLIS, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Monitor List")
        extra("ELLLIST             mlis")
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        extra("ELLLIST             bklnk")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        pp(TRUE)
        interest(3)
    }
    field(STAT, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Status")
        initial("UDF")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        prompt("Alarm Severity")
        special(SPC_NOMOD)
        menu(menuAlarmSevr)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        prompt("New Alarm Status")
        special(SPC_NOMOD)
        interest(2)
        menu(menuAlarmStat)
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(ACKS, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
        interest(2)
        menu(menuAlarmSevr)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        promptgroup("70 - Alarm")
        menu(menuYesNo)
        interest(2)
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        prompt("Lock Count")
        special(SPC_NOMOD)
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("dbPutField process")
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Reprocess ")
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        extra("struct processNotify *ppn")
        special(SPC_NOMOD)
        prompt("pprocessNotify")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        extra("struct scan_element *spvt")
        special(SPC_NOMOD)
        prompt("Scan Private")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Address of RSET")
        extra("struct typed_rset   *rset")
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        extra("unambiguous_dset    *dset")
        special(SPC_NOMOD)
        prompt("DSET address")
    }
    field(DPVT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Device Private")
        extra("void                *dpvt")
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
        extra("struct dbRecordType *rdes")
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        extra("struct lockRecord   *lset")
        special(SPC_NOMOD)
        prompt("Lock Set")
    }
    field(PRIO, DBF_MENU) {
        menu(menuPriority)
        interest(1)
        promptgroup("20 - Scan")
        special(SPC_SCAN)
        prompt("Scheduling Priority")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        extra("epicsUInt8          bkpt")
        prompt("Break Point")
        special(SPC_NOMOD)
    }
    field(UDF, DBF_UCHAR) {
        prompt("Undefined")
        initial("1")
        promptgroup("10 - Common")
        pp(TRUE)
        interest(1)
    }
    field(UDFS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
    }
    field(TIME, DBF_NOACCESS) {
        prompt("Time")
        special(SPC_NOMOD)
        extra("epicsTimeStamp      time")
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        prompt("Time Tag")
        special(SPC_NOMOD)
    }
    field(FLNK, DBF_FWDLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Forward Process Link")
    }
    field(VAL, DBF_STRING) {
        asl(ASL0)
        prompt("Current Value")
        size(40)
        pp(TRUE)
        promptgroup("40 - Input")
    }
    field(OVAL, DBF_STRING) {
        interest(3)
        prompt("Previous Value")
        size(40)
        special(SPC_NOMOD)
    }
    field(INP, DBF_INLINK) {
        promptgroup("40 - Input")
        interest(1)
        prompt("Input Specification")
    }
    field(MPST, DBF_MENU) {
        interest(1)
        menu(stringinPOST)
        promptgroup("80 - Display")
        prompt("Post Value Monitors")
    }
    field(APST, DBF_MENU) {
        prompt("Post Archive Monitors")
        interest(1)
        menu(stringinPOST)
        promptgroup("80 - Display")
    }
    field(SIOL, DBF_INLINK) {
        promptgroup("90 - Simulate")
        interest(1)
        prompt("Simulation Input Link")
    }
    field(SVAL, DBF_STRING) {
        prompt("Simulation Value")
        size(40)
        pp(TRUE)
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(SIMM, DBF_MENU) {
        interest(1)
        menu(menuYesNo)
        prompt("Simulation Mode")
        special(SPC_MOD)
    }
    field(SIMS, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        promptgroup("90 - Simulate")
        prompt("Simulation Mode Severity")
    }
    field(OLDSIMM, DBF_MENU) {
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
        menu(menuSimm)
        interest(4)
    }
    field(SSCN, DBF_MENU) {
        prompt("Sim. Mode Scan")
        initial("65535")
        promptgroup("90 - Simulate")
        interest(1)
        menu(menuScan)
    }
    field(SDLY, DBF_DOUBLE) {
        initial("-1.0")
        prompt("Sim. Mode Async Delay")
        interest(2)
        promptgroup("90 - Simulate")
    }
    field(SIMPVT, DBF_NOACCESS) {
        interest(4)
        extra("epicsCallback            *simpvt")
        special(SPC_NOMOD)
        prompt("Sim. Mode Private")
    }
}
device(stringin, CONSTANT, devSiSoft, "Soft Channel")
device(stringin, CONSTANT, devSiSoftCallback, "Async Soft Channel")
device(stringin, INST_IO, devTimestampSI, "Soft Timestamp")
device(stringin, INST_IO, devSiGeneralTime, "General Time")
device(stringin, INST_IO, devSiEnviron, "getenv")
recordtype(aao) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct aaoRecord;
    %typedef struct aaodset {
    %    dset common; /*init_record returns: (-1,0)=>(failure,success)*/
    %    long (*write_aao)(struct aaoRecord *prec); /*returns: (-1,0)=>(failure,success)*/
    %} aaodset;
    %#define HAS_aaodset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        special(SPC_NOMOD)
        size(61)
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Descriptor")
        size(41)
    }
    field(ASG, DBF_STRING) {
        special(SPC_AS)
        size(29)
        prompt("Access Security Group")
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        promptgroup("20 - Scan")
        interest(1)
        menu(menuScan)
    }
    field(PINI, DBF_MENU) {
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPini)
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
    }
    field(EVNT, DBF_STRING) {
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSEL, DBF_INLINK) {
        prompt("Time Stamp Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(DTYP, DBF_DEVICE) {
        promptgroup("10 - Common")
        interest(1)
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor lock")
        extra("epicsMutexId        mlok")
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor List")
        extra("ELLLIST             mlis")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        extra("ELLLIST             bklnk")
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        interest(3)
        pp(TRUE)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        prompt("Alarm Status")
        special(SPC_NOMOD)
        initial("UDF")
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Severity")
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(NSTA, DBF_MENU) {
        menu(menuAlarmStat)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Status")
    }
    field(NSEV, DBF_MENU) {
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
        interest(2)
        menu(menuAlarmSevr)
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(ACKS, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
    }
    field(ACKT, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuYesNo)
        interest(2)
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("dbPutField process")
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("Reprocess ")
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
        extra("struct asgMember    *asp")
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        extra("struct processNotify *ppn")
        prompt("pprocessNotify")
        special(SPC_NOMOD)
    }
    field(PPNR, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Scan Private")
        extra("struct scan_element *spvt")
    }
    field(RSET, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of RSET")
        extra("struct typed_rset   *rset")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        extra("unambiguous_dset    *dset")
        special(SPC_NOMOD)
        prompt("DSET address")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        extra("void                *dpvt")
        special(SPC_NOMOD)
        prompt("Device Private")
    }
    field(RDES, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        extra("struct lockRecord   *lset")
        prompt("Lock Set")
        special(SPC_NOMOD)
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scheduling Priority")
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        prompt("Undefined")
        initial("1")
        promptgroup("10 - Common")
        pp(TRUE)
        interest(1)
    }
    field(UDFS, DBF_MENU) {
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
    }
    field(TIME, DBF_NOACCESS) {
        prompt("Time")
        special(SPC_NOMOD)
        extra("epicsTimeStamp      time")
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        prompt("Time Tag")
        special(SPC_NOMOD)
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Forward Process Link")
    }
    field(VAL, DBF_NOACCESS) {
        pp(TRUE)
        asl(ASL0)
        extra("void *		val")
        prompt("Value")
        special(SPC_DBADDR)
    }
    field(PREC, DBF_SHORT) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Display Precision")
        prop(YES)
    }
    field(OUT, DBF_OUTLINK) {
        interest(1)
        promptgroup("50 - Output")
        prompt("Output Specification")
    }
    field(EGU, DBF_STRING) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Engineering Units")
        size(16)
    }
    field(HOPR, DBF_DOUBLE) {
        prop(YES)
        prompt("High Operating Range")
        interest(1)
        promptgroup("80 - Display")
    }
    field(LOPR, DBF_DOUBLE) {
        prop(YES)
        prompt("Low Operating Range")
        interest(1)
        promptgroup("80 - Display")
    }
    field(NELM, DBF_ULONG) {
        interest(1)
        promptgroup("30 - Action")
        initial("1")
        special(SPC_NOMOD)
        prompt("Number of Elements")
    }
    field(FTVL, DBF_MENU) {
        menu(menuFtype)
        interest(1)
        promptgroup("30 - Action")
        prompt("Field Type of Value")
        special(SPC_NOMOD)
    }
    field(NORD, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Number elements read")
    }
    field(BPTR, DBF_NOACCESS) {
        extra("void *		bptr")
        special(SPC_NOMOD)
        prompt("Buffer Pointer")
        interest(4)
    }
    field(SIML, DBF_INLINK) {
        promptgroup("90 - Simulate")
        interest(1)
        prompt("Simulation Mode Link")
    }
    field(SIMM, DBF_MENU) {
        prompt("Simulation Mode")
        special(SPC_MOD)
        interest(1)
        menu(menuYesNo)
    }
    field(SIMS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        promptgroup("90 - Simulate")
        prompt("Simulation Mode Severity")
    }
    field(SIOL, DBF_OUTLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Simulation Output Link")
    }
    field(OLDSIMM, DBF_MENU) {
        menu(menuSimm)
        interest(4)
        special(SPC_NOMOD)
        prompt("Prev. Simulation Mode")
    }
    field(SSCN, DBF_MENU) {
        prompt("Sim. Mode Scan")
        initial("65535")
        promptgroup("90 - Simulate")
        menu(menuScan)
        interest(1)
    }
    field(SDLY, DBF_DOUBLE) {
        interest(2)
        promptgroup("90 - Simulate")
        initial("-1.0")
        prompt("Sim. Mode Async Delay")
    }
    field(SIMPVT, DBF_NOACCESS) {
        extra("epicsCallback            *simpvt")
        special(SPC_NOMOD)
        prompt("Sim. Mode Private")
        interest(4)
    }
    field(MPST, DBF_MENU) {
        prompt("Post Value Monitors")
        promptgroup("80 - Display")
        menu(aaoPOST)
        interest(1)
    }
    field(APST, DBF_MENU) {
        prompt("Post Archive Monitors")
        menu(aaoPOST)
        interest(1)
        promptgroup("80 - Display")
    }
    field(HASH, DBF_ULONG) {
        interest(3)
        prompt("Hash of OnChange data.")
    }
}
device(aao, CONSTANT, devAaoSoft, "Soft Channel")
recordtype(waveform) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct waveformRecord;
    %typedef struct wfdset {
    %    dset common; /*init_record returns: (-1,0)=>(failure,success)*/
    %    long (*read_wf)(struct waveformRecord *prec); /*returns: (-1,0)=>(failure,success)*/
    %} wfdset;
    %#define HAS_wfdset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        size(61)
        special(SPC_NOMOD)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        size(41)
        prompt("Descriptor")
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        prompt("Access Security Group")
        special(SPC_AS)
        size(29)
        promptgroup("10 - Common")
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        interest(1)
        menu(menuScan)
        promptgroup("20 - Scan")
    }
    field(PINI, DBF_MENU) {
        interest(1)
        menu(menuPini)
        promptgroup("20 - Scan")
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scan Phase")
        special(SPC_SCAN)
    }
    field(EVNT, DBF_STRING) {
        special(SPC_SCAN)
        size(40)
        prompt("Event Name")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSE, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        prompt("Disable Value")
        initial("1")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        extra("epicsMutexId        mlok")
        special(SPC_NOMOD)
        prompt("Monitor lock")
    }
    field(MLIS, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             mlis")
        special(SPC_NOMOD)
        prompt("Monitor List")
    }
    field(BKLNK, DBF_NOACCESS) {
        extra("ELLLIST             bklnk")
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        pp(TRUE)
        interest(3)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        initial("UDF")
        prompt("Alarm Status")
        special(SPC_NOMOD)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Severity")
    }
    field(AMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Status")
        interest(2)
        menu(menuAlarmStat)
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
    }
    field(ACKT, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(2)
        menu(menuYesNo)
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        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) {
        special(SPC_NOMOD)
        prompt("Reprocess ")
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        extra("struct asgMember    *asp")
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
    }
    field(PPN, DBF_NOACCESS) {
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        prompt("Scan Private")
        special(SPC_NOMOD)
        extra("struct scan_element *spvt")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        extra("struct typed_rset   *rset")
        prompt("Address of RSET")
        special(SPC_NOMOD)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        extra("unambiguous_dset    *dset")
        special(SPC_NOMOD)
        prompt("DSET address")
    }
    field(DPVT, DBF_NOACCESS) {
        prompt("Device Private")
        special(SPC_NOMOD)
        extra("void                *dpvt")
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        extra("struct dbRecordType *rdes")
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Lock Set")
        extra("struct lockRecord   *lset")
    }
    field(PRIO, DBF_MENU) {
        prompt("Scheduling Priority")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
    }
    field(UDF, DBF_UCHAR) {
        prompt("Undefined")
        initial("1")
        promptgroup("10 - Common")
        interest(1)
        pp(TRUE)
    }
    field(UDFS, DBF_MENU) {
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(TIME, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        prompt("Time Tag")
        special(SPC_NOMOD)
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Forward Process Link")
    }
    field(VAL, DBF_NOACCESS) {
        extra("void *		val")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Value")
        pp(TRUE)
    }
    field(RARM, DBF_SHORT) {
        pp(TRUE)
        interest(1)
        promptgroup("30 - Action")
        prompt("Rearm the waveform")
    }
    field(PREC, DBF_SHORT) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Display Precision")
    }
    field(INP, DBF_INLINK) {
        interest(1)
        promptgroup("40 - Input")
        prompt("Input Specification")
    }
    field(EGU, DBF_STRING) {
        prompt("Engineering Units")
        size(16)
        prop(YES)
        promptgroup("80 - Display")
        interest(1)
    }
    field(HOPR, DBF_DOUBLE) {
        prop(YES)
        prompt("High Operating Range")
        interest(1)
        promptgroup("80 - Display")
    }
    field(LOPR, DBF_DOUBLE) {
        prompt("Low Operating Range")
        prop(YES)
        promptgroup("80 - Display")
        interest(1)
    }
    field(NELM, DBF_ULONG) {
        initial("1")
        prompt("Number of Elements")
        special(SPC_NOMOD)
        interest(1)
        promptgroup("30 - Action")
    }
    field(FTVL, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Field Type of Value")
        promptgroup("30 - Action")
        interest(1)
        menu(menuFtype)
    }
    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) {
        promptgroup("90 - Simulate")
        interest(1)
        prompt("Simulation Input Link")
    }
    field(SIML, DBF_INLINK) {
        promptgroup("90 - Simulate")
        interest(1)
        prompt("Simulation Mode Link")
    }
    field(SIMM, DBF_MENU) {
        special(SPC_MOD)
        prompt("Simulation Mode")
        interest(1)
        menu(menuYesNo)
    }
    field(SIMS, DBF_MENU) {
        promptgroup("90 - Simulate")
        interest(2)
        menu(menuAlarmSevr)
        prompt("Simulation Mode Severity")
    }
    field(OLDSIMM, DBF_MENU) {
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
        interest(4)
        menu(menuSimm)
    }
    field(SSCN, DBF_MENU) {
        prompt("Sim. Mode Scan")
        initial("65535")
        promptgroup("90 - Simulate")
        menu(menuScan)
        interest(1)
    }
    field(SDLY, DBF_DOUBLE) {
        promptgroup("90 - Simulate")
        interest(2)
        prompt("Sim. Mode Async Delay")
        initial("-1.0")
    }
    field(SIMPVT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Sim. Mode Private")
        extra("epicsCallback            *simpvt")
        interest(4)
    }
    field(MPST, DBF_MENU) {
        interest(1)
        menu(waveformPOST)
        promptgroup("80 - Display")
        prompt("Post Value Monitors")
    }
    field(APST, DBF_MENU) {
        prompt("Post Archive Monitors")
        menu(waveformPOST)
        interest(1)
        promptgroup("80 - Display")
    }
    field(HASH, DBF_ULONG) {
        prompt("Hash of OnChange data.")
        interest(3)
    }
}
device(waveform, CONSTANT, devWfSoft, "Soft Channel")
device(waveform, CONSTANT, devWfPDBDemo, "QSRV Demo")
recordtype(histogram) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct histogramRecord;
    %typedef struct histogramdset {
    %    dset common; /*init_record returns: (-1,0)=>(failure,success)*/
    %    long (*read_histogram)(struct histogramRecord *prec); /*(0,2)=> success and add_count, don't add_count); if add_count then sgnl added to array*/
    %    long (*special_linconv)(struct histogramRecord *prec, int after);
    %} histogramdset;
    %#define HAS_histogramdset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        size(61)
        special(SPC_NOMOD)
    }
    field(DESC, DBF_STRING) {
        size(41)
        prompt("Descriptor")
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        size(29)
        special(SPC_AS)
        prompt("Access Security Group")
    }
    field(SCAN, DBF_MENU) {
        promptgroup("20 - Scan")
        interest(1)
        menu(menuScan)
        special(SPC_SCAN)
        prompt("Scan Mechanism")
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        promptgroup("20 - Scan")
        menu(menuPini)
        interest(1)
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(EVNT, DBF_STRING) {
        prompt("Event Name")
        size(40)
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        interest(1)
        promptgroup("10 - Common")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
    }
    field(MLIS, DBF_NOACCESS) {
        prompt("Monitor List")
        special(SPC_NOMOD)
        extra("ELLLIST             mlis")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             bklnk")
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        interest(3)
        pp(TRUE)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        initial("UDF")
        special(SPC_NOMOD)
        prompt("Alarm Status")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Severity")
    }
    field(AMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        prompt("New Alarm Status")
        special(SPC_NOMOD)
        interest(2)
        menu(menuAlarmStat)
    }
    field(NSEV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
        menu(menuAlarmSevr)
        interest(2)
    }
    field(ACKT, DBF_MENU) {
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        initial("YES")
        promptgroup("70 - Alarm")
        menu(menuYesNo)
        interest(2)
    }
    field(DISS, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Lock Count")
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        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) {
        interest(4)
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        extra("struct scan_element *spvt")
        special(SPC_NOMOD)
        prompt("Scan Private")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        prompt("DSET address")
        special(SPC_NOMOD)
        extra("unambiguous_dset    *dset")
        interest(4)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        prompt("Device Private")
        special(SPC_NOMOD)
        extra("void                *dpvt")
    }
    field(RDES, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Lock Set")
        extra("struct lockRecord   *lset")
    }
    field(PRIO, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scheduling Priority")
        menu(menuPriority)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        extra("epicsUInt8          bkpt")
        prompt("Break Point")
        special(SPC_NOMOD)
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("10 - Common")
        initial("1")
        prompt("Undefined")
    }
    field(UDFS, DBF_MENU) {
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        special(SPC_NOMOD)
        prompt("Time Tag")
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(VAL, DBF_NOACCESS) {
        asl(ASL0)
        extra("void *	val")
        prompt("Value")
        special(SPC_DBADDR)
    }
    field(NELM, DBF_USHORT) {
        special(SPC_NOMOD)
        prompt("Num of Array Elements")
        initial("1")
        promptgroup("30 - Action")
        interest(1)
    }
    field(CSTA, DBF_SHORT) {
        initial("1")
        prompt("Collection Status")
        special(SPC_NOMOD)
        interest(1)
    }
    field(CMD, DBF_MENU) {
        asl(ASL0)
        special(SPC_CALC)
        prompt("Collection Control")
        interest(1)
        menu(histogramCMD)
    }
    field(ULIM, DBF_DOUBLE) {
        interest(1)
        promptgroup("30 - Action")
        prop(YES)
        special(SPC_RESET)
        prompt("Upper Signal Limit")
    }
    field(LLIM, DBF_DOUBLE) {
        promptgroup("30 - Action")
        interest(1)
        prompt("Lower Signal Limit ")
        special(SPC_RESET)
        prop(YES)
    }
    field(WDTH, DBF_DOUBLE) {
        prompt("Element Width")
        special(SPC_NOMOD)
        interest(3)
    }
    field(SGNL, DBF_DOUBLE) {
        special(SPC_MOD)
        prompt("Signal Value")
    }
    field(PREC, DBF_SHORT) {
        prompt("Display Precision")
        prop(YES)
        promptgroup("80 - Display")
        interest(1)
    }
    field(SVL, DBF_INLINK) {
        prompt("Signal Value Location")
        promptgroup("40 - Input")
        interest(1)
    }
    field(BPTR, DBF_NOACCESS) {
        interest(4)
        extra("epicsUInt32 *bptr")
        prompt("Buffer Pointer")
        special(SPC_NOMOD)
    }
    field(WDOG, DBF_NOACCESS) {
        extra("void *  wdog")
        prompt("Watchdog callback")
        special(SPC_NOMOD)
        interest(4)
    }
    field(MDEL, DBF_SHORT) {
        prompt("Monitor Count Deadband")
        interest(1)
        promptgroup("80 - Display")
    }
    field(MCNT, DBF_SHORT) {
        interest(3)
        prompt("Counts Since Monitor")
        special(SPC_NOMOD)
    }
    field(SDEL, DBF_DOUBLE) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Monitor Seconds Dband")
        special(SPC_RESET)
    }
    field(SIOL, DBF_INLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Simulation Input Link")
    }
    field(SVAL, DBF_DOUBLE) {
        prompt("Simulation Value")
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(SIMM, DBF_MENU) {
        menu(menuYesNo)
        interest(1)
        special(SPC_MOD)
        prompt("Simulation Mode")
    }
    field(SIMS, DBF_MENU) {
        prompt("Simulation Mode Severity")
        interest(2)
        menu(menuAlarmSevr)
        promptgroup("90 - Simulate")
    }
    field(OLDSIMM, DBF_MENU) {
        interest(4)
        menu(menuSimm)
        special(SPC_NOMOD)
        prompt("Prev. Simulation Mode")
    }
    field(SSCN, DBF_MENU) {
        initial("65535")
        prompt("Sim. Mode Scan")
        menu(menuScan)
        interest(1)
        promptgroup("90 - Simulate")
    }
    field(SDLY, DBF_DOUBLE) {
        promptgroup("90 - Simulate")
        interest(2)
        prompt("Sim. Mode Async Delay")
        initial("-1.0")
    }
    field(SIMPVT, DBF_NOACCESS) {
        interest(4)
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        extra("epicsCallback            *simpvt")
    }
    field(HOPR, DBF_ULONG) {
        prompt("High Operating Range")
        prop(YES)
        promptgroup("80 - Display")
        interest(1)
    }
    field(LOPR, DBF_ULONG) {
        prop(YES)
        prompt("Low Operating Range")
        interest(1)
        promptgroup("80 - Display")
    }
}
device(histogram, CONSTANT, devHistogramSoft, "Soft Channel")
recordtype(mbbo) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %/* Declare Device Support Entry Table */
    %struct mbboRecord;
    %typedef struct mbbodset {
    %    dset common; /*init_record returns: (0, 2) => (success, success no convert)*/
    %    long (*write_mbbo)(struct mbboRecord *prec); /*returns: (0, 2) => (success, success no convert)*/
    %} mbbodset;
    %#define HAS_mbbodset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        size(61)
        special(SPC_NOMOD)
    }
    field(DESC, DBF_STRING) {
        prompt("Descriptor")
        size(41)
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        size(29)
        special(SPC_AS)
    }
    field(SCAN, DBF_MENU) {
        prompt("Scan Mechanism")
        special(SPC_SCAN)
        menu(menuScan)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPini)
    }
    field(PHAS, DBF_SHORT) {
        special(SPC_SCAN)
        prompt("Scan Phase")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(EVNT, DBF_STRING) {
        promptgroup("20 - Scan")
        interest(1)
        size(40)
        special(SPC_SCAN)
        prompt("Event Name")
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSEL, DBF_INLINK) {
        prompt("Time Stamp Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(DTYP, DBF_DEVICE) {
        interest(1)
        promptgroup("10 - Common")
        prompt("Device Type")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        prompt("Disable Value")
        initial("1")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Monitor List")
        extra("ELLLIST             mlis")
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             bklnk")
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        interest(3)
        pp(TRUE)
    }
    field(STAT, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Status")
        initial("UDF")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        interest(2)
        menu(menuAlarmStat)
        special(SPC_NOMOD)
        prompt("New Alarm Status")
    }
    field(NSEV, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
        interest(2)
        menu(menuAlarmSevr)
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(ACKS, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(2)
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
    }
    field(ACKT, DBF_MENU) {
        interest(2)
        menu(menuYesNo)
        promptgroup("70 - Alarm")
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
    }
    field(LCNT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Lock Count")
        interest(2)
    }
    field(PACT, DBF_UCHAR) {
        prompt("Record active")
        special(SPC_NOMOD)
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("dbPutField process")
    }
    field(RPRO, DBF_UCHAR) {
        prompt("Reprocess ")
        special(SPC_NOMOD)
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        extra("struct asgMember    *asp")
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
    }
    field(PPN, DBF_NOACCESS) {
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
        interest(4)
    }
    field(PPNR, DBF_NOACCESS) {
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        extra("struct processNotifyRecord *ppnr")
        interest(4)
    }
    field(SPVT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Scan Private")
        extra("struct scan_element *spvt")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        extra("struct typed_rset   *rset")
        prompt("Address of RSET")
        special(SPC_NOMOD)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        extra("unambiguous_dset    *dset")
        prompt("DSET address")
        special(SPC_NOMOD)
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Device Private")
        extra("void                *dpvt")
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
    }
    field(LSET, DBF_NOACCESS) {
        extra("struct lockRecord   *lset")
        prompt("Lock Set")
        special(SPC_NOMOD)
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        prompt("Scheduling Priority")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        prompt("Break Point")
        special(SPC_NOMOD)
        extra("epicsUInt8          bkpt")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("10 - Common")
        initial("1")
        prompt("Undefined")
    }
    field(UDFS, DBF_MENU) {
        initial("INVALID")
        prompt("Undefined Alarm Sevrty")
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(TIME, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Time Tag")
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(VAL, DBF_ENUM) {
        pp(TRUE)
        promptgroup("50 - Output")
        asl(ASL0)
        special(SPC_DBADDR)
        prompt("Desired Value")
    }
    field(DOL, DBF_INLINK) {
        prompt("Desired Output Link")
        interest(1)
        promptgroup("40 - Input")
    }
    field(OMSL, DBF_MENU) {
        prompt("Output Mode Select")
        interest(1)
        menu(menuOmsl)
        promptgroup("50 - Output")
    }
    field(NOBT, DBF_USHORT) {
        interest(1)
        promptgroup("50 - Output")
        special(SPC_NOMOD)
        prompt("Number of Bits")
    }
    field(OUT, DBF_OUTLINK) {
        prompt("Output Specification")
        interest(1)
        promptgroup("50 - Output")
    }
    field(ZRVL, DBF_ULONG) {
        base(HEX)
        pp(TRUE)
        interest(1)
        promptgroup("51 - Output 0-7")
        prompt("Zero Value")
        special(SPC_MOD)
    }
    field(ONVL, DBF_ULONG) {
        special(SPC_MOD)
        prompt("One Value")
        interest(1)
        pp(TRUE)
        promptgroup("51 - Output 0-7")
        base(HEX)
    }
    field(TWVL, DBF_ULONG) {
        special(SPC_MOD)
        prompt("Two Value")
        base(HEX)
        promptgroup("51 - Output 0-7")
        pp(TRUE)
        interest(1)
    }
    field(THVL, DBF_ULONG) {
        base(HEX)
        interest(1)
        pp(TRUE)
        promptgroup("51 - Output 0-7")
        special(SPC_MOD)
        prompt("Three Value")
    }
    field(FRVL, DBF_ULONG) {
        prompt("Four Value")
        special(SPC_MOD)
        interest(1)
        pp(TRUE)
        base(HEX)
        promptgroup("51 - Output 0-7")
    }
    field(FVVL, DBF_ULONG) {
        special(SPC_MOD)
        prompt("Five Value")
        promptgroup("51 - Output 0-7")
        interest(1)
        pp(TRUE)
        base(HEX)
    }
    field(SXVL, DBF_ULONG) {
        base(HEX)
        prompt("Six Value")
        special(SPC_MOD)
        pp(TRUE)
        interest(1)
        promptgroup("51 - Output 0-7")
    }
    field(SVVL, DBF_ULONG) {
        special(SPC_MOD)
        prompt("Seven Value")
        interest(1)
        pp(TRUE)
        promptgroup("51 - Output 0-7")
        base(HEX)
    }
    field(EIVL, DBF_ULONG) {
        interest(1)
        pp(TRUE)
        promptgroup("52 - Output 8-15")
        base(HEX)
        special(SPC_MOD)
        prompt("Eight Value")
    }
    field(NIVL, DBF_ULONG) {
        special(SPC_MOD)
        prompt("Nine Value")
        promptgroup("52 - Output 8-15")
        base(HEX)
        interest(1)
        pp(TRUE)
    }
    field(TEVL, DBF_ULONG) {
        promptgroup("52 - Output 8-15")
        interest(1)
        pp(TRUE)
        prompt("Ten Value")
        special(SPC_MOD)
        base(HEX)
    }
    field(ELVL, DBF_ULONG) {
        base(HEX)
        interest(1)
        pp(TRUE)
        promptgroup("52 - Output 8-15")
        special(SPC_MOD)
        prompt("Eleven Value")
    }
    field(TVVL, DBF_ULONG) {
        base(HEX)
        special(SPC_MOD)
        prompt("Twelve Value")
        pp(TRUE)
        interest(1)
        promptgroup("52 - Output 8-15")
    }
    field(TTVL, DBF_ULONG) {
        base(HEX)
        prompt("Thirteen Value")
        special(SPC_MOD)
        promptgroup("52 - Output 8-15")
        pp(TRUE)
        interest(1)
    }
    field(FTVL, DBF_ULONG) {
        prompt("Fourteen Value")
        special(SPC_MOD)
        base(HEX)
        promptgroup("52 - Output 8-15")
        pp(TRUE)
        interest(1)
    }
    field(FFVL, DBF_ULONG) {
        base(HEX)
        pp(TRUE)
        interest(1)
        promptgroup("52 - Output 8-15")
        prompt("Fifteen Value")
        special(SPC_MOD)
    }
    field(ZRST, DBF_STRING) {
        pp(TRUE)
        interest(1)
        promptgroup("81 - Display 0-7")
        prompt("Zero String")
        special(SPC_MOD)
        size(26)
    }
    field(ONST, DBF_STRING) {
        size(26)
        special(SPC_MOD)
        prompt("One String")
        pp(TRUE)
        interest(1)
        promptgroup("81 - Display 0-7")
    }
    field(TWST, DBF_STRING) {
        promptgroup("81 - Display 0-7")
        pp(TRUE)
        interest(1)
        size(26)
        special(SPC_MOD)
        prompt("Two String")
    }
    field(THST, DBF_STRING) {
        promptgroup("81 - Display 0-7")
        pp(TRUE)
        interest(1)
        special(SPC_MOD)
        size(26)
        prompt("Three String")
    }
    field(FRST, DBF_STRING) {
        interest(1)
        pp(TRUE)
        promptgroup("81 - Display 0-7")
        special(SPC_MOD)
        size(26)
        prompt("Four String")
    }
    field(FVST, DBF_STRING) {
        promptgroup("81 - Display 0-7")
        pp(TRUE)
        interest(1)
        special(SPC_MOD)
        size(26)
        prompt("Five String")
    }
    field(SXST, DBF_STRING) {
        pp(TRUE)
        interest(1)
        promptgroup("81 - Display 0-7")
        prompt("Six String")
        size(26)
        special(SPC_MOD)
    }
    field(SVST, DBF_STRING) {
        pp(TRUE)
        interest(1)
        promptgroup("81 - Display 0-7")
        prompt("Seven String")
        special(SPC_MOD)
        size(26)
    }
    field(EIST, DBF_STRING) {
        prompt("Eight String")
        size(26)
        special(SPC_MOD)
        interest(1)
        pp(TRUE)
        promptgroup("82 - Display 8-15")
    }
    field(NIST, DBF_STRING) {
        special(SPC_MOD)
        size(26)
        prompt("Nine String")
        pp(TRUE)
        interest(1)
        promptgroup("82 - Display 8-15")
    }
    field(TEST, DBF_STRING) {
        promptgroup("82 - Display 8-15")
        pp(TRUE)
        interest(1)
        prompt("Ten String")
        size(26)
        special(SPC_MOD)
    }
    field(ELST, DBF_STRING) {
        special(SPC_MOD)
        size(26)
        prompt("Eleven String")
        promptgroup("82 - Display 8-15")
        interest(1)
        pp(TRUE)
    }
    field(TVST, DBF_STRING) {
        promptgroup("82 - Display 8-15")
        pp(TRUE)
        interest(1)
        special(SPC_MOD)
        size(26)
        prompt("Twelve String")
    }
    field(TTST, DBF_STRING) {
        prompt("Thirteen String")
        special(SPC_MOD)
        size(26)
        interest(1)
        pp(TRUE)
        promptgroup("82 - Display 8-15")
    }
    field(FTST, DBF_STRING) {
        pp(TRUE)
        interest(1)
        promptgroup("82 - Display 8-15")
        prompt("Fourteen String")
        size(26)
        special(SPC_MOD)
    }
    field(FFST, DBF_STRING) {
        promptgroup("82 - Display 8-15")
        pp(TRUE)
        interest(1)
        special(SPC_MOD)
        size(26)
        prompt("Fifteen String")
    }
    field(ZRSV, DBF_MENU) {
        promptgroup("71 - Alarm 0-7")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        prompt("State Zero Severity")
    }
    field(ONSV, DBF_MENU) {
        promptgroup("71 - Alarm 0-7")
        menu(menuAlarmSevr)
        interest(1)
        pp(TRUE)
        prompt("State One Severity")
    }
    field(TWSV, DBF_MENU) {
        prompt("State Two Severity")
        promptgroup("71 - Alarm 0-7")
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
    }
    field(THSV, DBF_MENU) {
        promptgroup("71 - Alarm 0-7")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        prompt("State Three Severity")
    }
    field(FRSV, DBF_MENU) {
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
        promptgroup("71 - Alarm 0-7")
        prompt("State Four Severity")
    }
    field(FVSV, DBF_MENU) {
        prompt("State Five Severity")
        promptgroup("71 - Alarm 0-7")
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
    }
    field(SXSV, DBF_MENU) {
        prompt("State Six Severity")
        promptgroup("71 - Alarm 0-7")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
    }
    field(SVSV, DBF_MENU) {
        promptgroup("71 - Alarm 0-7")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        prompt("State Seven Severity")
    }
    field(EISV, DBF_MENU) {
        prompt("State Eight Severity")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        promptgroup("72 - Alarm 8-15")
    }
    field(NISV, DBF_MENU) {
        prompt("State Nine Severity")
        pp(TRUE)
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("72 - Alarm 8-15")
    }
    field(TESV, DBF_MENU) {
        prompt("State Ten Severity")
        promptgroup("72 - Alarm 8-15")
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
    }
    field(ELSV, DBF_MENU) {
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("72 - Alarm 8-15")
        prompt("State Eleven Severity")
    }
    field(TVSV, DBF_MENU) {
        prompt("State Twelve Severity")
        promptgroup("72 - Alarm 8-15")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
    }
    field(TTSV, DBF_MENU) {
        prompt("State Thirteen Sevr")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
        promptgroup("72 - Alarm 8-15")
    }
    field(FTSV, DBF_MENU) {
        promptgroup("72 - Alarm 8-15")
        menu(menuAlarmSevr)
        interest(1)
        pp(TRUE)
        prompt("State Fourteen Sevr")
    }
    field(FFSV, DBF_MENU) {
        prompt("State Fifteen Sevr")
        promptgroup("72 - Alarm 8-15")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
    }
    field(UNSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        pp(TRUE)
        prompt("Unknown State Sevr")
    }
    field(COSV, DBF_MENU) {
        menu(menuAlarmSevr)
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
        prompt("Change of State Sevr")
    }
    field(RVAL, DBF_ULONG) {
        pp(TRUE)
        prompt("Raw Value")
    }
    field(ORAW, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Prev Raw Value")
        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) {
        interest(1)
        prompt("Hardware Mask")
        special(SPC_NOMOD)
    }
    field(MLST, DBF_USHORT) {
        interest(3)
        prompt("Last Value Monitored")
        special(SPC_NOMOD)
    }
    field(LALM, DBF_USHORT) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Alarmed")
    }
    field(SDEF, DBF_SHORT) {
        interest(3)
        special(SPC_NOMOD)
        prompt("States Defined")
    }
    field(SHFT, DBF_USHORT) {
        interest(1)
        promptgroup("50 - Output")
        prompt("Shift")
    }
    field(SIOL, DBF_OUTLINK) {
        prompt("Simulation Output Link")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        interest(1)
        promptgroup("90 - Simulate")
    }
    field(SIMM, DBF_MENU) {
        interest(1)
        menu(menuYesNo)
        special(SPC_MOD)
        prompt("Simulation Mode")
    }
    field(SIMS, DBF_MENU) {
        promptgroup("90 - Simulate")
        menu(menuAlarmSevr)
        interest(2)
        prompt("Simulation Mode Severity")
    }
    field(OLDSIMM, DBF_MENU) {
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
        interest(4)
        menu(menuSimm)
    }
    field(SSCN, DBF_MENU) {
        promptgroup("90 - Simulate")
        interest(1)
        menu(menuScan)
        prompt("Sim. Mode Scan")
        initial("65535")
    }
    field(SDLY, DBF_DOUBLE) {
        interest(2)
        promptgroup("90 - Simulate")
        initial("-1.0")
        prompt("Sim. Mode Async Delay")
    }
    field(SIMPVT, DBF_NOACCESS) {
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        extra("epicsCallback            *simpvt")
        interest(4)
    }
    field(IVOA, DBF_MENU) {
        prompt("INVALID outpt action")
        promptgroup("50 - Output")
        interest(2)
        menu(menuIvoa)
    }
    field(IVOV, DBF_USHORT) {
        interest(2)
        promptgroup("50 - Output")
        prompt("INVALID output value")
    }
}
device(mbbo, CONSTANT, devMbboSoft, "Soft Channel")
device(mbbo, CONSTANT, devMbboSoftRaw, "Raw Soft Channel")
device(mbbo, CONSTANT, devMbboSoftCallback, "Async Soft Channel")
recordtype(sub) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %struct subRecord;
    %typedef long (*SUBFUNCPTR)(struct subRecord *);
    field(NAME, DBF_STRING) {
        size(61)
        special(SPC_NOMOD)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        size(41)
        prompt("Descriptor")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        size(29)
        special(SPC_AS)
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        promptgroup("20 - Scan")
        menu(menuScan)
        interest(1)
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        menu(menuPini)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(PHAS, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scan Phase")
        special(SPC_SCAN)
    }
    field(EVNT, DBF_STRING) {
        size(40)
        special(SPC_SCAN)
        prompt("Event Name")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSE, DBF_SHORT) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        initial("1")
        prompt("Disable Value")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Monitor lock")
        extra("epicsMutexId        mlok")
    }
    field(MLIS, DBF_NOACCESS) {
        extra("ELLLIST             mlis")
        prompt("Monitor List")
        special(SPC_NOMOD)
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        extra("ELLLIST             bklnk")
        special(SPC_NOMOD)
        prompt("Backwards link tracking")
        interest(4)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        pp(TRUE)
        interest(3)
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        initial("UDF")
        special(SPC_NOMOD)
        prompt("Alarm Status")
    }
    field(SEVR, DBF_MENU) {
        prompt("Alarm Severity")
        special(SPC_NOMOD)
        menu(menuAlarmSevr)
    }
    field(AMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("Alarm Message")
    }
    field(NSTA, DBF_MENU) {
        menu(menuAlarmStat)
        interest(2)
        special(SPC_NOMOD)
        prompt("New Alarm Status")
    }
    field(NSEV, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
        interest(2)
        menu(menuAlarmSevr)
    }
    field(NAMSG, DBF_STRING) {
        special(SPC_NOMOD)
        size(40)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
        menu(menuAlarmSevr)
        interest(2)
    }
    field(ACKT, DBF_MENU) {
        initial("YES")
        menu(menuYesNo)
        interest(2)
        promptgroup("70 - Alarm")
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
    }
    field(DISS, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        prompt("Lock Count")
        special(SPC_NOMOD)
    }
    field(PACT, DBF_UCHAR) {
        prompt("Record active")
        special(SPC_NOMOD)
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("dbPutField process")
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        extra("struct asgMember    *asp")
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        prompt("Scan Private")
        special(SPC_NOMOD)
        extra("struct scan_element *spvt")
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
        interest(4)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        extra("unambiguous_dset    *dset")
        special(SPC_NOMOD)
        prompt("DSET address")
    }
    field(DPVT, DBF_NOACCESS) {
        prompt("Device Private")
        special(SPC_NOMOD)
        extra("void                *dpvt")
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        interest(4)
        extra("struct dbRecordType *rdes")
        prompt("Address of dbRecordType")
        special(SPC_NOMOD)
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        prompt("Lock Set")
        special(SPC_NOMOD)
        extra("struct lockRecord   *lset")
    }
    field(PRIO, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scheduling Priority")
        promptgroup("20 - Scan")
        interest(1)
        menu(menuPriority)
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        interest(1)
        extra("epicsUInt8          bkpt")
        special(SPC_NOMOD)
        prompt("Break Point")
    }
    field(UDF, DBF_UCHAR) {
        promptgroup("10 - Common")
        interest(1)
        pp(TRUE)
        prompt("Undefined")
        initial("1")
    }
    field(UDFS, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        prompt("Time Tag")
        special(SPC_NOMOD)
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(VAL, DBF_DOUBLE) {
        prompt("Result")
        asl(ASL0)
        pp(TRUE)
    }
    field(INAM, DBF_STRING) {
        prompt("Init Routine Name")
        special(SPC_NOMOD)
        size(40)
        interest(1)
        promptgroup("30 - Action")
    }
    field(SNAM, DBF_STRING) {
        size(40)
        special(SPC_MOD)
        prompt("Subroutine Name")
        promptgroup("30 - Action")
        interest(1)
    }
    field(SADR, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Subroutine Address")
        extra("SUBFUNCPTR sadr")
        interest(4)
    }
    field(INPA, DBF_INLINK) {
        promptgroup("41 - Input A-F")
        interest(1)
        prompt("Input A")
    }
    field(INPB, DBF_INLINK) {
        promptgroup("41 - Input A-F")
        interest(1)
        prompt("Input B")
    }
    field(INPC, DBF_INLINK) {
        promptgroup("41 - Input A-F")
        interest(1)
        prompt("Input C")
    }
    field(INPD, DBF_INLINK) {
        interest(1)
        promptgroup("41 - Input A-F")
        prompt("Input D")
    }
    field(INPE, DBF_INLINK) {
        prompt("Input E")
        interest(1)
        promptgroup("41 - Input A-F")
    }
    field(INPF, DBF_INLINK) {
        promptgroup("41 - Input A-F")
        interest(1)
        prompt("Input F")
    }
    field(INPG, DBF_INLINK) {
        promptgroup("42 - Input G-L")
        interest(1)
        prompt("Input G")
    }
    field(INPH, DBF_INLINK) {
        promptgroup("42 - Input G-L")
        interest(1)
        prompt("Input H")
    }
    field(INPI, DBF_INLINK) {
        promptgroup("42 - Input G-L")
        interest(1)
        prompt("Input I")
    }
    field(INPJ, DBF_INLINK) {
        prompt("Input J")
        interest(1)
        promptgroup("42 - Input G-L")
    }
    field(INPK, DBF_INLINK) {
        interest(1)
        promptgroup("42 - Input G-L")
        prompt("Input K")
    }
    field(INPL, DBF_INLINK) {
        promptgroup("42 - Input G-L")
        interest(1)
        prompt("Input L")
    }
    field(EGU, DBF_STRING) {
        prop(YES)
        size(16)
        prompt("Engineering Units")
        interest(1)
        promptgroup("80 - Display")
    }
    field(HOPR, DBF_DOUBLE) {
        prop(YES)
        prompt("High Operating Range")
        interest(1)
        promptgroup("80 - Display")
    }
    field(LOPR, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Low Operating Range")
    }
    field(HIHI, DBF_DOUBLE) {
        prompt("Hihi Alarm Limit")
        prop(YES)
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
    }
    field(LOLO, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        prompt("Lolo Alarm Limit")
        prop(YES)
    }
    field(HIGH, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        interest(1)
        pp(TRUE)
        prompt("High Alarm Limit")
        prop(YES)
    }
    field(LOW, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        prompt("Low Alarm Limit")
        prop(YES)
    }
    field(PREC, DBF_SHORT) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Display Precision")
    }
    field(BRSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
        prompt("Bad Return Severity")
    }
    field(HHSV, DBF_MENU) {
        prompt("Hihi Severity")
        prop(YES)
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
    }
    field(LLSV, DBF_MENU) {
        interest(1)
        pp(TRUE)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Lolo Severity")
    }
    field(HSV, DBF_MENU) {
        prop(YES)
        prompt("High Severity")
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
    }
    field(LSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        pp(TRUE)
        prompt("Low Severity")
        prop(YES)
    }
    field(HYST, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        interest(1)
        prompt("Alarm Deadband")
    }
    field(ADEL, DBF_DOUBLE) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Archive Deadband")
    }
    field(MDEL, DBF_DOUBLE) {
        prompt("Monitor Deadband")
        interest(1)
        promptgroup("80 - Display")
    }
    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) {
        pp(TRUE)
        prompt("Value of Input F")
    }
    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) {
        special(SPC_NOMOD)
        prompt("Prev Value of A")
        interest(3)
    }
    field(LB, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of B")
    }
    field(LC, DBF_DOUBLE) {
        prompt("Prev Value of C")
        special(SPC_NOMOD)
        interest(3)
    }
    field(LD, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of D")
        interest(3)
    }
    field(LE, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Prev Value of E")
    }
    field(LF, DBF_DOUBLE) {
        prompt("Prev Value of F")
        special(SPC_NOMOD)
        interest(3)
    }
    field(LG, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of G")
        interest(3)
    }
    field(LH, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of H")
        interest(3)
    }
    field(LI, DBF_DOUBLE) {
        prompt("Prev Value of I")
        special(SPC_NOMOD)
        interest(3)
    }
    field(LJ, DBF_DOUBLE) {
        interest(3)
        prompt("Prev Value of J")
        special(SPC_NOMOD)
    }
    field(LK, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Prev Value of K")
        interest(3)
    }
    field(LL, DBF_DOUBLE) {
        prompt("Prev Value of L")
        special(SPC_NOMOD)
        interest(3)
    }
    field(LALM, DBF_DOUBLE) {
        special(SPC_NOMOD)
        prompt("Last Value Alarmed")
        interest(3)
    }
    field(ALST, DBF_DOUBLE) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Archived")
    }
    field(MLST, DBF_DOUBLE) {
        prompt("Last Value Monitored")
        special(SPC_NOMOD)
        interest(3)
    }
}
recordtype(mbbiDirect) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %/* Declare Device Support Entry Table */
    %struct mbbiDirectRecord;
    %typedef struct mbbidirectdset {
    %    dset common; /* init_record returns: (-1,0) => (failure, success)*/
    %    long (*read_mbbi)(struct mbbiDirectRecord *prec); /* (0, 2) => (success, success no convert)*/
    %} mbbidirectdset;
    %#define HAS_mbbidirectdset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        special(SPC_NOMOD)
        size(61)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        size(41)
        prompt("Descriptor")
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        special(SPC_AS)
        size(29)
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        interest(1)
        menu(menuScan)
        promptgroup("20 - Scan")
    }
    field(PINI, DBF_MENU) {
        prompt("Process at iocInit")
        promptgroup("20 - Scan")
        menu(menuPini)
        interest(1)
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        interest(1)
        promptgroup("20 - Scan")
    }
    field(EVNT, DBF_STRING) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Event Name")
        size(40)
        special(SPC_SCAN)
    }
    field(TSE, DBF_SHORT) {
        prompt("Time Stamp Event")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSEL, DBF_INLINK) {
        prompt("Time Stamp Link")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        interest(1)
        promptgroup("10 - Common")
    }
    field(DISV, DBF_SHORT) {
        prompt("Disable Value")
        initial("1")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scanning Disable")
    }
    field(MLOK, DBF_NOACCESS) {
        interest(4)
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
    }
    field(MLIS, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor List")
        extra("ELLLIST             mlis")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
        extra("ELLLIST             bklnk")
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        interest(3)
        pp(TRUE)
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        initial("UDF")
        prompt("Alarm Status")
        special(SPC_NOMOD)
    }
    field(SEVR, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Severity")
        menu(menuAlarmSevr)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(NSTA, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Status")
        interest(2)
        menu(menuAlarmStat)
    }
    field(NSEV, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
        interest(2)
        menu(menuAlarmSevr)
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        special(SPC_NOMOD)
        size(40)
    }
    field(ACKS, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
        menu(menuAlarmSevr)
        interest(2)
    }
    field(ACKT, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuYesNo)
        interest(2)
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prompt("Disable Alarm Sevrty")
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        prompt("Lock Count")
        special(SPC_NOMOD)
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        prompt("Record active")
        special(SPC_NOMOD)
    }
    field(PUTF, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("dbPutField process")
        interest(1)
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        extra("struct asgMember    *asp")
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("pprocessNotify")
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("pprocessNotifyRecord")
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Scan Private")
        extra("struct scan_element *spvt")
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        extra("struct typed_rset   *rset")
        prompt("Address of RSET")
        special(SPC_NOMOD)
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        extra("unambiguous_dset    *dset")
        special(SPC_NOMOD)
        prompt("DSET address")
    }
    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) {
        menu(menuPriority)
        interest(1)
        promptgroup("20 - Scan")
        special(SPC_SCAN)
        prompt("Scheduling Priority")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Break Point")
        extra("epicsUInt8          bkpt")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        prompt("Undefined")
        initial("1")
        promptgroup("10 - Common")
        pp(TRUE)
        interest(1)
    }
    field(UDFS, DBF_MENU) {
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
    }
    field(TIME, DBF_NOACCESS) {
        prompt("Time")
        special(SPC_NOMOD)
        extra("epicsTimeStamp      time")
        interest(2)
    }
    field(UTAG, DBF_UINT64) {
        special(SPC_NOMOD)
        prompt("Time Tag")
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Forward Process Link")
    }
    field(VAL, DBF_LONG) {
        asl(ASL0)
        prompt("Current Value")
        pp(TRUE)
        promptgroup("40 - Input")
    }
    field(NOBT, DBF_SHORT) {
        prompt("Number of Bits")
        special(SPC_NOMOD)
        interest(1)
        promptgroup("40 - Input")
    }
    field(INP, DBF_INLINK) {
        prompt("Input Specification")
        promptgroup("40 - Input")
        interest(1)
    }
    field(RVAL, DBF_ULONG) {
        pp(TRUE)
        prompt("Raw Value")
    }
    field(ORAW, DBF_ULONG) {
        special(SPC_NOMOD)
        prompt("Prev Raw Value")
        interest(3)
    }
    field(MASK, DBF_ULONG) {
        interest(1)
        prompt("Hardware Mask")
        special(SPC_NOMOD)
    }
    field(MLST, DBF_LONG) {
        interest(3)
        special(SPC_NOMOD)
        prompt("Last Value Monitored")
    }
    field(SHFT, DBF_USHORT) {
        interest(1)
        promptgroup("40 - Input")
        prompt("Shift")
    }
    field(SIOL, DBF_INLINK) {
        interest(1)
        promptgroup("90 - Simulate")
        prompt("Simulation Input Link")
    }
    field(SVAL, DBF_LONG) {
        prompt("Simulation Value")
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(SIMM, DBF_MENU) {
        menu(menuSimm)
        interest(1)
        prompt("Simulation Mode")
        special(SPC_MOD)
    }
    field(SIMS, DBF_MENU) {
        prompt("Simulation Mode Severity")
        menu(menuAlarmSevr)
        interest(2)
        promptgroup("90 - Simulate")
    }
    field(OLDSIMM, DBF_MENU) {
        menu(menuSimm)
        interest(4)
        special(SPC_NOMOD)
        prompt("Prev. Simulation Mode")
    }
    field(SSCN, DBF_MENU) {
        prompt("Sim. Mode Scan")
        initial("65535")
        promptgroup("90 - Simulate")
        interest(1)
        menu(menuScan)
    }
    field(SDLY, DBF_DOUBLE) {
        promptgroup("90 - Simulate")
        interest(2)
        prompt("Sim. Mode Async Delay")
        initial("-1.0")
    }
    field(SIMPVT, DBF_NOACCESS) {
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        extra("epicsCallback            *simpvt")
        interest(4)
    }
    field(B0, DBF_UCHAR) {
        prompt("Bit 0")
        pp(TRUE)
        interest(1)
    }
    field(B1, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        prompt("Bit 1")
    }
    field(B2, DBF_UCHAR) {
        prompt("Bit 2")
        pp(TRUE)
        interest(1)
    }
    field(B3, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        prompt("Bit 3")
    }
    field(B4, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        prompt("Bit 4")
    }
    field(B5, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        prompt("Bit 5")
    }
    field(B6, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        prompt("Bit 6")
    }
    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) {
        interest(1)
        pp(TRUE)
        prompt("Bit 9")
    }
    field(BA, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        prompt("Bit 10")
    }
    field(BB, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        prompt("Bit 11")
    }
    field(BC, DBF_UCHAR) {
        prompt("Bit 12")
        interest(1)
        pp(TRUE)
    }
    field(BD, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        prompt("Bit 13")
    }
    field(BE, DBF_UCHAR) {
        prompt("Bit 14")
        pp(TRUE)
        interest(1)
    }
    field(BF, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        prompt("Bit 15")
    }
    field(B10, DBF_UCHAR) {
        prompt("Bit 16")
        interest(1)
        pp(TRUE)
    }
    field(B11, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        prompt("Bit 17")
    }
    field(B12, DBF_UCHAR) {
        prompt("Bit 18")
        interest(1)
        pp(TRUE)
    }
    field(B13, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        prompt("Bit 19")
    }
    field(B14, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        prompt("Bit 20")
    }
    field(B15, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        prompt("Bit 21")
    }
    field(B16, DBF_UCHAR) {
        prompt("Bit 22")
        pp(TRUE)
        interest(1)
    }
    field(B17, DBF_UCHAR) {
        prompt("Bit 23")
        pp(TRUE)
        interest(1)
    }
    field(B18, DBF_UCHAR) {
        prompt("Bit 24")
        interest(1)
        pp(TRUE)
    }
    field(B19, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        prompt("Bit 25")
    }
    field(B1A, DBF_UCHAR) {
        prompt("Bit 26")
        pp(TRUE)
        interest(1)
    }
    field(B1B, DBF_UCHAR) {
        prompt("Bit 27")
        interest(1)
        pp(TRUE)
    }
    field(B1C, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        prompt("Bit 28")
    }
    field(B1D, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        prompt("Bit 29")
    }
    field(B1E, DBF_UCHAR) {
        pp(TRUE)
        interest(1)
        prompt("Bit 30")
    }
    field(B1F, DBF_UCHAR) {
        prompt("Bit 31")
        pp(TRUE)
        interest(1)
    }
}
device(mbbiDirect, CONSTANT, devMbbiDirectSoft, "Soft Channel")
device(mbbiDirect, CONSTANT, devMbbiDirectSoftRaw, "Raw Soft Channel")
device(mbbiDirect, CONSTANT, devMbbiDirectSoftCallback, "Async Soft Channel")
recordtype(dfanout) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    field(NAME, DBF_STRING) {
        prompt("Record Name")
        special(SPC_NOMOD)
        size(61)
    }
    field(DESC, DBF_STRING) {
        prompt("Descriptor")
        size(41)
        promptgroup("10 - Common")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        size(29)
        special(SPC_AS)
    }
    field(SCAN, DBF_MENU) {
        menu(menuScan)
        interest(1)
        promptgroup("20 - Scan")
        prompt("Scan Mechanism")
        special(SPC_SCAN)
    }
    field(PINI, DBF_MENU) {
        interest(1)
        menu(menuPini)
        promptgroup("20 - Scan")
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        prompt("Scan Phase")
        special(SPC_SCAN)
        promptgroup("20 - Scan")
        interest(1)
    }
    field(EVNT, DBF_STRING) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
    }
    field(TSE, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        interest(1)
        promptgroup("10 - Common")
    }
    field(DISV, DBF_SHORT) {
        promptgroup("20 - Scan")
        prompt("Disable Value")
        initial("1")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        extra("epicsMutexId        mlok")
        prompt("Monitor lock")
        special(SPC_NOMOD)
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        prompt("Monitor List")
        special(SPC_NOMOD)
        extra("ELLLIST             mlis")
        interest(4)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             bklnk")
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        pp(TRUE)
        interest(3)
        prompt("Force Processing")
    }
    field(STAT, DBF_MENU) {
        menu(menuAlarmStat)
        prompt("Alarm Status")
        special(SPC_NOMOD)
        initial("UDF")
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        special(SPC_NOMOD)
        prompt("Alarm Severity")
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(NSTA, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Status")
        interest(2)
        menu(menuAlarmStat)
    }
    field(NSEV, DBF_MENU) {
        interest(2)
        menu(menuAlarmSevr)
        prompt("New Alarm Severity")
        special(SPC_NOMOD)
    }
    field(NAMSG, DBF_STRING) {
        prompt("New Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(ACKS, DBF_MENU) {
        prompt("Alarm Ack Severity")
        special(SPC_NOMOD)
        interest(2)
        menu(menuAlarmSevr)
    }
    field(ACKT, DBF_MENU) {
        menu(menuYesNo)
        interest(2)
        promptgroup("70 - Alarm")
        prompt("Alarm Ack Transient")
        special(SPC_NOMOD)
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Lock Count")
    }
    field(PACT, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Record active")
        interest(1)
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("dbPutField process")
    }
    field(RPRO, DBF_UCHAR) {
        interest(1)
        prompt("Reprocess ")
        special(SPC_NOMOD)
    }
    field(ASP, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Access Security Pvt")
        extra("struct asgMember    *asp")
        interest(4)
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotify")
        special(SPC_NOMOD)
        extra("struct processNotify *ppn")
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        extra("struct scan_element *spvt")
        prompt("Scan Private")
        special(SPC_NOMOD)
        interest(4)
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        special(SPC_NOMOD)
        prompt("Address of RSET")
        extra("struct typed_rset   *rset")
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        prompt("DSET address")
        special(SPC_NOMOD)
        extra("unambiguous_dset    *dset")
    }
    field(DPVT, DBF_NOACCESS) {
        interest(4)
        extra("void                *dpvt")
        prompt("Device Private")
        special(SPC_NOMOD)
    }
    field(RDES, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        extra("struct lockRecord   *lset")
        prompt("Lock Set")
        special(SPC_NOMOD)
        interest(4)
    }
    field(PRIO, DBF_MENU) {
        menu(menuPriority)
        interest(1)
        promptgroup("20 - Scan")
        special(SPC_SCAN)
        prompt("Scheduling Priority")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Break Point")
        extra("epicsUInt8          bkpt")
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        initial("1")
        prompt("Undefined")
        interest(1)
        pp(TRUE)
        promptgroup("10 - Common")
    }
    field(UDFS, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        extra("epicsTimeStamp      time")
        prompt("Time")
        special(SPC_NOMOD)
    }
    field(UTAG, DBF_UINT64) {
        interest(3)
        prompt("Time Tag")
        special(SPC_NOMOD)
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(VAL, DBF_DOUBLE) {
        promptgroup("40 - Input")
        pp(TRUE)
        prompt("Desired Output")
        asl(ASL0)
    }
    field(SELM, DBF_MENU) {
        promptgroup("30 - Action")
        interest(1)
        menu(dfanoutSELM)
        prompt("Select Mechanism")
    }
    field(SELN, DBF_USHORT) {
        prompt("Link Selection")
        initial("1")
        interest(1)
    }
    field(SELL, DBF_INLINK) {
        prompt("Link Selection Loc")
        interest(1)
        promptgroup("30 - Action")
    }
    field(OUTA, DBF_OUTLINK) {
        promptgroup("50 - Output")
        interest(1)
        prompt("Output Spec A")
    }
    field(OUTB, DBF_OUTLINK) {
        prompt("Output Spec B")
        promptgroup("50 - Output")
        interest(1)
    }
    field(OUTC, DBF_OUTLINK) {
        prompt("Output Spec C")
        promptgroup("50 - Output")
        interest(1)
    }
    field(OUTD, DBF_OUTLINK) {
        prompt("Output Spec D")
        promptgroup("50 - Output")
        interest(1)
    }
    field(OUTE, DBF_OUTLINK) {
        promptgroup("50 - Output")
        interest(1)
        prompt("Output Spec E")
    }
    field(OUTF, DBF_OUTLINK) {
        prompt("Output Spec F")
        interest(1)
        promptgroup("50 - Output")
    }
    field(OUTG, DBF_OUTLINK) {
        promptgroup("50 - Output")
        interest(1)
        prompt("Output Spec G")
    }
    field(OUTH, DBF_OUTLINK) {
        prompt("Output Spec H")
        interest(1)
        promptgroup("50 - Output")
    }
    field(DOL, DBF_INLINK) {
        prompt("Desired Output Link")
        promptgroup("40 - Input")
        interest(1)
    }
    field(OMSL, DBF_MENU) {
        prompt("Output Mode Select")
        promptgroup("50 - Output")
        menu(menuOmsl)
        interest(1)
    }
    field(EGU, DBF_STRING) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Engineering Units")
        size(16)
        prop(YES)
    }
    field(PREC, DBF_SHORT) {
        promptgroup("80 - Display")
        interest(1)
        prompt("Display Precision")
        prop(YES)
    }
    field(HOPR, DBF_DOUBLE) {
        prompt("High Operating Range")
        prop(YES)
        promptgroup("80 - Display")
        interest(1)
    }
    field(LOPR, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prop(YES)
        prompt("Low Operating Range")
    }
    field(HIHI, DBF_DOUBLE) {
        prop(YES)
        prompt("Hihi Alarm Limit")
        interest(1)
        pp(TRUE)
        promptgroup("70 - Alarm")
    }
    field(LOLO, DBF_DOUBLE) {
        prop(YES)
        prompt("Lolo Alarm Limit")
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(HIGH, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        prompt("High Alarm Limit")
        prop(YES)
    }
    field(LOW, DBF_DOUBLE) {
        promptgroup("70 - Alarm")
        pp(TRUE)
        interest(1)
        prompt("Low Alarm Limit")
        prop(YES)
    }
    field(HHSV, DBF_MENU) {
        promptgroup("70 - Alarm")
        interest(1)
        menu(menuAlarmSevr)
        pp(TRUE)
        prompt("Hihi Severity")
        prop(YES)
    }
    field(LLSV, DBF_MENU) {
        pp(TRUE)
        interest(1)
        menu(menuAlarmSevr)
        promptgroup("70 - Alarm")
        prop(YES)
        prompt("Lolo Severity")
    }
    field(HSV, DBF_MENU) {
        prompt("High Severity")
        prop(YES)
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
        pp(TRUE)
    }
    field(LSV, DBF_MENU) {
        prop(YES)
        prompt("Low Severity")
        menu(menuAlarmSevr)
        pp(TRUE)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(HYST, DBF_DOUBLE) {
        prompt("Alarm Deadband")
        promptgroup("70 - Alarm")
        interest(1)
    }
    field(ADEL, DBF_DOUBLE) {
        interest(1)
        promptgroup("80 - Display")
        prompt("Archive Deadband")
    }
    field(MDEL, DBF_DOUBLE) {
        prompt("Monitor Deadband")
        promptgroup("80 - 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) {
        special(SPC_NOMOD)
        prompt("Last Val Monitored")
        interest(3)
    }
}
recordtype(lsi) {
    %#include "epicsTypes.h"
    %#include "link.h"
    %#include "epicsMutex.h"
    %#include "ellLib.h"
    %#include "devSup.h"
    %#include "epicsTime.h"
    %
    %/* Declare Device Support Entry Table */
    %struct lsiRecord;
    %typedef struct lsidset {
    %    dset common;
    %    long (*read_string)(struct lsiRecord *prec);
    %} lsidset;
    %#define HAS_lsidset
    %
    %#include "callback.h"
    field(NAME, DBF_STRING) {
        special(SPC_NOMOD)
        size(61)
        prompt("Record Name")
    }
    field(DESC, DBF_STRING) {
        promptgroup("10 - Common")
        size(41)
        prompt("Descriptor")
    }
    field(ASG, DBF_STRING) {
        promptgroup("10 - Common")
        prompt("Access Security Group")
        special(SPC_AS)
        size(29)
    }
    field(SCAN, DBF_MENU) {
        special(SPC_SCAN)
        prompt("Scan Mechanism")
        interest(1)
        menu(menuScan)
        promptgroup("20 - Scan")
    }
    field(PINI, DBF_MENU) {
        interest(1)
        menu(menuPini)
        promptgroup("20 - Scan")
        prompt("Process at iocInit")
    }
    field(PHAS, DBF_SHORT) {
        special(SPC_SCAN)
        prompt("Scan Phase")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(EVNT, DBF_STRING) {
        prompt("Event Name")
        special(SPC_SCAN)
        size(40)
        promptgroup("20 - Scan")
        interest(1)
    }
    field(TSE, DBF_SHORT) {
        interest(1)
        promptgroup("20 - Scan")
        prompt("Time Stamp Event")
    }
    field(TSEL, DBF_INLINK) {
        promptgroup("20 - Scan")
        interest(1)
        prompt("Time Stamp Link")
    }
    field(DTYP, DBF_DEVICE) {
        prompt("Device Type")
        promptgroup("10 - Common")
        interest(1)
    }
    field(DISV, DBF_SHORT) {
        prompt("Disable Value")
        initial("1")
        promptgroup("20 - Scan")
    }
    field(DISA, DBF_SHORT) {
        prompt("Disable")
    }
    field(SDIS, DBF_INLINK) {
        prompt("Scanning Disable")
        interest(1)
        promptgroup("20 - Scan")
    }
    field(MLOK, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Monitor lock")
        extra("epicsMutexId        mlok")
        interest(4)
    }
    field(MLIS, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             mlis")
        prompt("Monitor List")
        special(SPC_NOMOD)
    }
    field(BKLNK, DBF_NOACCESS) {
        interest(4)
        extra("ELLLIST             bklnk")
        prompt("Backwards link tracking")
        special(SPC_NOMOD)
    }
    field(DISP, DBF_UCHAR) {
        prompt("Disable putField")
    }
    field(PROC, DBF_UCHAR) {
        prompt("Force Processing")
        interest(3)
        pp(TRUE)
    }
    field(STAT, DBF_MENU) {
        prompt("Alarm Status")
        special(SPC_NOMOD)
        initial("UDF")
        menu(menuAlarmStat)
    }
    field(SEVR, DBF_MENU) {
        menu(menuAlarmSevr)
        prompt("Alarm Severity")
        special(SPC_NOMOD)
    }
    field(AMSG, DBF_STRING) {
        prompt("Alarm Message")
        size(40)
        special(SPC_NOMOD)
    }
    field(NSTA, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Status")
        menu(menuAlarmStat)
        interest(2)
    }
    field(NSEV, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("New Alarm Severity")
        menu(menuAlarmSevr)
        interest(2)
    }
    field(NAMSG, DBF_STRING) {
        size(40)
        special(SPC_NOMOD)
        prompt("New Alarm Message")
    }
    field(ACKS, DBF_MENU) {
        special(SPC_NOMOD)
        prompt("Alarm Ack Severity")
        menu(menuAlarmSevr)
        interest(2)
    }
    field(ACKT, DBF_MENU) {
        promptgroup("70 - Alarm")
        menu(menuYesNo)
        interest(2)
        special(SPC_NOMOD)
        prompt("Alarm Ack Transient")
        initial("YES")
    }
    field(DISS, DBF_MENU) {
        prompt("Disable Alarm Sevrty")
        menu(menuAlarmSevr)
        interest(1)
        promptgroup("70 - Alarm")
    }
    field(LCNT, DBF_UCHAR) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Lock Count")
    }
    field(PACT, DBF_UCHAR) {
        interest(1)
        prompt("Record active")
        special(SPC_NOMOD)
    }
    field(PUTF, DBF_UCHAR) {
        interest(1)
        special(SPC_NOMOD)
        prompt("dbPutField process")
    }
    field(RPRO, DBF_UCHAR) {
        special(SPC_NOMOD)
        prompt("Reprocess ")
        interest(1)
    }
    field(ASP, DBF_NOACCESS) {
        interest(4)
        extra("struct asgMember    *asp")
        prompt("Access Security Pvt")
        special(SPC_NOMOD)
    }
    field(PPN, DBF_NOACCESS) {
        interest(4)
        extra("struct processNotify *ppn")
        prompt("pprocessNotify")
        special(SPC_NOMOD)
    }
    field(PPNR, DBF_NOACCESS) {
        interest(4)
        prompt("pprocessNotifyRecord")
        special(SPC_NOMOD)
        extra("struct processNotifyRecord *ppnr")
    }
    field(SPVT, DBF_NOACCESS) {
        interest(4)
        extra("struct scan_element *spvt")
        prompt("Scan Private")
        special(SPC_NOMOD)
    }
    field(RSET, DBF_NOACCESS) {
        interest(4)
        extra("struct typed_rset   *rset")
        special(SPC_NOMOD)
        prompt("Address of RSET")
    }
    field(DSET, DBF_NOACCESS) {
        interest(4)
        extra("unambiguous_dset    *dset")
        special(SPC_NOMOD)
        prompt("DSET address")
    }
    field(DPVT, DBF_NOACCESS) {
        extra("void                *dpvt")
        special(SPC_NOMOD)
        prompt("Device Private")
        interest(4)
    }
    field(RDES, DBF_NOACCESS) {
        special(SPC_NOMOD)
        prompt("Address of dbRecordType")
        extra("struct dbRecordType *rdes")
        interest(4)
    }
    field(LSET, DBF_NOACCESS) {
        interest(4)
        extra("struct lockRecord   *lset")
        special(SPC_NOMOD)
        prompt("Lock Set")
    }
    field(PRIO, DBF_MENU) {
        interest(1)
        menu(menuPriority)
        promptgroup("20 - Scan")
        special(SPC_SCAN)
        prompt("Scheduling Priority")
    }
    field(TPRO, DBF_UCHAR) {
        prompt("Trace Processing")
    }
    field(BKPT, DBF_NOACCESS) {
        extra("epicsUInt8          bkpt")
        prompt("Break Point")
        special(SPC_NOMOD)
        interest(1)
    }
    field(UDF, DBF_UCHAR) {
        interest(1)
        pp(TRUE)
        promptgroup("10 - Common")
        initial("1")
        prompt("Undefined")
    }
    field(UDFS, DBF_MENU) {
        prompt("Undefined Alarm Sevrty")
        initial("INVALID")
        promptgroup("70 - Alarm")
        menu(menuAlarmSevr)
        interest(1)
    }
    field(TIME, DBF_NOACCESS) {
        interest(2)
        special(SPC_NOMOD)
        prompt("Time")
        extra("epicsTimeStamp      time")
    }
    field(UTAG, DBF_UINT64) {
        special(SPC_NOMOD)
        prompt("Time Tag")
        interest(3)
    }
    field(FLNK, DBF_FWDLINK) {
        prompt("Forward Process Link")
        promptgroup("20 - Scan")
        interest(1)
    }
    field(VAL, DBF_NOACCESS) {
        pp(TRUE)
        asl(ASL0)
        extra("char *val")
        prompt("Current Value")
        special(SPC_DBADDR)
    }
    field(OVAL, DBF_NOACCESS) {
        extra("char *oval")
        special(SPC_DBADDR)
        prompt("Old Value")
        interest(3)
    }
    field(SIZV, DBF_USHORT) {
        promptgroup("40 - Input")
        interest(1)
        prompt("Size of buffers")
        special(SPC_NOMOD)
        initial("41")
    }
    field(LEN, DBF_ULONG) {
        prompt("Length of VAL")
        special(SPC_NOMOD)
    }
    field(OLEN, DBF_ULONG) {
        prompt("Length of OVAL")
        special(SPC_NOMOD)
    }
    field(INP, DBF_INLINK) {
        interest(1)
        promptgroup("40 - Input")
        prompt("Input Specification")
    }
    field(MPST, DBF_MENU) {
        promptgroup("80 - Display")
        menu(menuPost)
        interest(1)
        prompt("Post Value Monitors")
    }
    field(APST, DBF_MENU) {
        prompt("Post Archive Monitors")
        menu(menuPost)
        interest(1)
        promptgroup("80 - Display")
    }
    field(SIML, DBF_INLINK) {
        prompt("Simulation Mode Link")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(SIMM, DBF_MENU) {
        interest(1)
        menu(menuYesNo)
        prompt("Simulation Mode")
        special(SPC_MOD)
    }
    field(SIMS, DBF_MENU) {
        prompt("Simulation Mode Severity")
        menu(menuAlarmSevr)
        interest(2)
        promptgroup("90 - Simulate")
    }
    field(SIOL, DBF_INLINK) {
        prompt("Simulation Input Link")
        promptgroup("90 - Simulate")
        interest(1)
    }
    field(OLDSIMM, DBF_MENU) {
        interest(4)
        menu(menuSimm)
        prompt("Prev. Simulation Mode")
        special(SPC_NOMOD)
    }
    field(SSCN, DBF_MENU) {
        interest(1)
        menu(menuScan)
        promptgroup("90 - Simulate")
        initial("65535")
        prompt("Sim. Mode Scan")
    }
    field(SDLY, DBF_DOUBLE) {
        interest(2)
        promptgroup("90 - Simulate")
        initial("-1.0")
        prompt("Sim. Mode Async Delay")
    }
    field(SIMPVT, DBF_NOACCESS) {
        prompt("Sim. Mode Private")
        special(SPC_NOMOD)
        extra("epicsCallback            *simpvt")
        interest(4)
    }
}
device(lsi, CONSTANT, devLsiSoft, "Soft Channel")
device(lsi, INST_IO, devLsiEnviron, "getenv")
link(const, lnkConstIf)
link(trace, lnkTraceIf)
link(calc, lnkCalcIf)
link(debug, lnkDebugIf)
link(pva, lsetPVA)
link(state, lnkStateIf)
registrar(iocshSystemCommand)
registrar(tsInitialize)
registrar(asSub)
registrar(arrInitialize)
registrar(registerStartPVAServer)
registrar(installPVAAddLinkHook)
registrar(syncInitialize)
registrar(decInitialize)
registrar(refTrackRegistrar)
registrar(rsrvRegistrar)
registrar(utagInitialize)
registrar(QSRVRegistrar)
registrar(dlloadRegistar)
registrar(dbndInitialize)
function(QSRV_image_demo)
variable(atExitDebug, int)
variable(calcoutODLYprecision, int)
variable(CASDEBUG, int)
variable(histogramSDELprecision, int)
variable(dbQuietMacroWarnings, int)
variable(calcoutODLYlimit, double)
variable(dbAccessDebugPUTF, int)
variable(dbRecordsAbcSorted, int)
variable(PDBProviderDebug, int)
variable(dbConvertStrict, int)
variable(pvaLinkNWorkers, int)
variable(dbRecordsOnceOnly, int)
variable(dbTemplateMaxVars, int)
variable(seqDLYprecision, int)
variable(logClientDebug, int)
variable(boHIGHprecision, int)
variable(callbackParallelThreadsDefault, int)
variable(seqDLYlimit, double)
variable(boHIGHlimit, double)
variable(lnkDebug_debug, int)
variable(asCaDebug, int)
variable(dbJLinkDebug, int)
variable(dbBptNotMonotonic, int)
variable(dbThreadRealtimeLock, int)
