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