Experimental Physics and Industrial Control System
Hi Rozelle,
Please find attached, a version for 3.14.
Please note this is untested as we are not using 3.14
in anger yet!
Cheers,
Andy
On Thu, 18 Jul 2002, Rozelle Wright wrote:
> Has anyone modified genSubRecord.c so that it will build for EPICS 314?
> If so, could you share it with me please.
> Thanks,
> Rozelle Wright
> [email protected]
>
>
>
--------------------------------------------------------------------
Observatory Sciences Limited Email: [email protected]
William James House Tel: 44 - (0)1223 - 508259
Cowley Road Fax: 44 - (0)1223 - 508258
Cambridge, CB4 0WX, UK http://www.observatorysciences.co.uk
/* genSubRecord.c - Record Support Routines for
* General Subroutine Records
*
* Author: Andy Foster
*
* History
* -------
* Version 1.0 12/11/96 ajf Created.
* Version 1.1 18/04/97 ajf Fixed get_value, pvdes->pvalue, field.
* Version 1.2 18/06/97 ajf Changed number of fields from 10 to 21.
* Version 1.3 05/04/00 cjm Fixed bug where fldnames was defined as
* a static array. Cannot do this since there
* are many instances of the genSub record.
* Version 1.4 15/03/01 ajf Changes for 3.13.
* Set precision of VERS field to 1.
* Initialise "string" constants to 0.
* Replace "symFindbyName" by "symFindbyNameEPICS"
* for architectures which do not prepend an
* "_" (i.e. PPC).
*
*/
#define DEBUG 0
#define VERSION 1.4
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <alarm.h>
#include <dbDefs.h>
#include <registryFunction.h>
#include <dbEvent.h>
#include <dbAccess.h>
#include <dbFldTypes.h>
#include <errMdef.h>
#include <recSup.h>
#include <devSup.h>
#include <special.h>
#include <recGbl.h>
#define GEN_SIZE_OFFSET
#include <genSubRecord.h>
#undef GEN_SIZE_OFFSET
/* Create RSET - Record Support Entry Table*/
static long init_record();
static long process();
static long get_value();
static long get_precision();
static long cvt_dbaddr();
static long get_array_info();
static long put_array_info();
static long special();
#define report NULL
#define initialize NULL
#define get_units NULL
#define get_graphic_double NULL
#define get_control_double NULL
#define get_alarm_double NULL
#define get_enum_str NULL
#define get_enum_strs NULL
#define put_enum_str NULL
struct rset genSubRSET={
RSETNUMBER,
report,
initialize,
init_record,
process,
special,
get_value,
cvt_dbaddr,
get_array_info,
put_array_info,
get_units,
get_precision,
get_enum_str,
get_enum_strs,
put_enum_str,
get_graphic_double,
get_control_double,
get_alarm_double };
static void monitor( genSubRecord *, int );
static long do_sub( genSubRecord * );
static long findField( int, struct dbAddr *, long *, long );
#define ARG_MAX 21
#define MAX_ARRAY_SIZE 16383 /* 16kB Channel Access Limit for data communication */
typedef long (*SUBFUNCPTR)();
/* These are the names of the Input fields */
static char Ifldnames[ARG_MAX][FLDNAME_SZ+1] =
{ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
"L", "M", "N", "O", "P", "Q", "R", "S", "T", "U" };
/* These are the names of the Output fields */
static char Ofldnames[ARG_MAX][FLDNAME_SZ+1] =
{ "VALA", "VALB", "VALC", "VALD", "VALE", "VALF", "VALG",
"VALH", "VALI", "VALJ", "VALK", "VALL", "VALM", "VALN",
"VALO", "VALP", "VALQ", "VALR", "VALS", "VALT", "VALU" };
/* Sizes of field types */
static int sizeofTypes[] = {0, 1, 1, 2, 2, 4, 4, 4, 8, 2};
static long init_record( genSubRecord *pgsub, int pass )
{
SUBFUNCPTR psubroutine;
void *sub_addr;
long status;
long error;
int i;
int j;
char *ufunct;
unsigned short *typptr;
void **valptr;
void **ovlptr;
unsigned long *nelptr;
unsigned long *totptr;
unsigned long num;
struct link *plinkin;
struct link *plinkout;
char fldnames[ARG_MAX][FLDNAME_SZ+1];
status = 0;
if( pass == 0 )
{
pgsub->vers = VERSION;
for( j=0; j<2; j++ )
{
if( j == 0 ) /* Input fields */
{
ufunct = pgsub->ufa;
typptr = &pgsub->fta;
valptr = &pgsub->a;
ovlptr = NULL;
nelptr = &pgsub->noa;
memcpy( fldnames, Ifldnames, ARG_MAX*(FLDNAME_SZ+1) );
}
else /* Output fields */
{
ufunct = pgsub->ufva;
typptr = &pgsub->ftva;
valptr = &pgsub->vala;
ovlptr = &pgsub->ovla;
nelptr = &pgsub->nova;
memcpy( fldnames, Ofldnames, ARG_MAX*(FLDNAME_SZ+1) );
}
totptr = &pgsub->tova;
for( i=0; i<ARG_MAX; i++, ufunct+=40, typptr++, valptr++, nelptr++, totptr++ )
{
if( *nelptr <= 0 )
*nelptr = 1;
if( strlen(ufunct) != 0 )
{
/* convert the user function subroutine name */
sub_addr = (void *)registryFunctionFind(ufunct);
if( sub_addr == 0 )
{
recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(init_record)");
status = S_db_BadSub;
}
else
{
psubroutine = (SUBFUNCPTR)(sub_addr);
*totptr = psubroutine(pgsub);
if( *typptr != DBF_CHAR )
*typptr = DBF_CHAR;
num = (*nelptr)*(*totptr);
if( num > MAX_ARRAY_SIZE )
{
printf("Link %s - Array too large! %ld Bytes\n", fldnames[i], num);
status = S_db_errArg;
}
else
{
*valptr = (char *)calloc( *nelptr, *totptr );
if( j == 1 )
*ovlptr = (char *)calloc( *nelptr, *totptr );
*nelptr = num;
*totptr = num;
#if DEBUG
printf("Link(%s): Address = 0x%x, Bytes = %d\n", fldnames[i], (unsigned int)(*valptr), *totptr );
#endif
}
}
}
else
{
if( *typptr == DBF_STRING )
{
num = (*nelptr)*MAX_STRING_SIZE;
if( num > MAX_ARRAY_SIZE )
{
printf("Link %s - Array too large! %ld Bytes\n", fldnames[i], num);
status = S_db_errArg;
}
else
{
*valptr = (char *)calloc( *nelptr, MAX_STRING_SIZE );
if( j == 1 )
*ovlptr = (char *)calloc( *nelptr, MAX_STRING_SIZE );
*totptr = num;
#if DEBUG
printf("Link(%s): Address = 0x%x, Bytes = %d\n", fldnames[i], (unsigned int)(*valptr), *totptr);
#endif
}
}
else
{
if( *typptr > DBF_ENUM )
*typptr = 2;
num = (*nelptr)*sizeofTypes[*typptr];
if( num > MAX_ARRAY_SIZE )
{
printf("Link %s - Array too large! %ld Bytes\n", fldnames[i], num);
status = S_db_errArg;
}
else
{
*valptr = (char *)calloc( *nelptr, sizeofTypes[*typptr] );
if( j == 1 )
*ovlptr = (char *)calloc( *nelptr, sizeofTypes[*typptr] );
*totptr = num;
#if DEBUG
printf("Link(%s): Address = 0x%x, Bytes = %d\n", fldnames[i], (unsigned int)(*valptr), *totptr);
#endif
}
}
}
if( j == 1 )
ovlptr++;
}
if( status )
return(status);
}
return(status);
}
else if( pass == 1 )
{
/* Deal with the Subroutine Input Link */
switch( pgsub->subl.type )
{
case (CONSTANT):
if( pgsub->lflg == genSubLFLG_READ )
{
recGblInitConstantLink( &pgsub->subl, DBF_STRING, pgsub->snam );
if( !strncmp(pgsub->snam, "0.0", 3) )
strcpy(pgsub->snam, " ");
}
break;
case (PV_LINK):
case (DB_LINK):
case (CA_LINK):
break;
default:
recGblRecordError( S_db_badField, (void *)pgsub,
"genSubRecord(init_record) Illegal SUBROUTINE LINK" );
status = S_db_badField;
break;
}
if( !status )
{
/* Initialise Input Links */
plinkin = &pgsub->inpa;
typptr = &pgsub->fta;
valptr = &pgsub->a;
nelptr = &pgsub->noa;
for( i=0; i<ARG_MAX; i++, plinkin++, typptr++, valptr++, nelptr++ )
{
switch( (*plinkin).type )
{
case (CONSTANT):
#if DEBUG
printf("Input Link %s is a CONSTANT\n", Ifldnames[i] );
#endif
if( *nelptr < 2 )
{
if( recGblInitConstantLink(plinkin, *typptr, *valptr) )
{
if( (*typptr == DBF_STRING) && (!strncmp((char *)(*valptr), "0.0", 3)) )
strcpy((char *)(*valptr), " ");
pgsub->udf = FALSE;
}
else
pgsub->udf = TRUE;
}
break;
case (PV_LINK):
#if DEBUG
printf("Input Link %s is a PV_LINK\n", Ifldnames[i] );
#endif
break;
case (CA_LINK):
#if DEBUG
printf("Input Link %s is a CA_LINK\n", Ifldnames[i] );
#endif
break;
case (DB_LINK):
#if DEBUG
printf("Input Link %s is a DB_LINK\n", Ifldnames[i] );
#endif
break;
default:
recGblRecordError( S_db_badField, (void *)pgsub,
"genSubRecord(init_record) Illegal INPUT LINK" );
status = S_db_badField;
break;
}
}
if( status )
return(status);
/* Initialise Output Links */
plinkout = &pgsub->outa;
typptr = &pgsub->ftva;
valptr = &pgsub->vala;
for( i=0; i<ARG_MAX; i++, plinkout++, typptr++, valptr++ )
{
switch( (*plinkout).type )
{
case (CONSTANT):
#if DEBUG
printf("Output Link %s is a CONSTANT\n", Ofldnames[i] );
#endif
break;
case (PV_LINK):
#if DEBUG
printf("Output Link %s is a PV_LINK\n", Ofldnames[i] );
#endif
break;
case (CA_LINK):
#if DEBUG
printf("Output Link %s is a CA_LINK\n", Ofldnames[i] );
#endif
break;
case (DB_LINK):
#if DEBUG
printf("Output Link %s is a DB_LINK\n", Ofldnames[i] );
#endif
break;
default:
recGblRecordError( S_db_badField, (void *)pgsub,
"genSubRecord(init_record) Illegal OUTPUT LINK" );
status = S_db_badField;
break;
}
}
if( !status )
{
if(strlen(pgsub->inam)!=0)
{
/* convert the initialization subroutine name */
sub_addr = (void *)registryFunctionFind(pgsub->inam);
if( sub_addr == 0 )
{
recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(init_record)");
status = S_db_BadSub;
}
else
{
psubroutine = (SUBFUNCPTR)(sub_addr);
error = psubroutine(pgsub);
}
}
}
if( !status )
{
if( pgsub->lflg == genSubLFLG_IGNORE )
{
if(strlen(pgsub->snam)!=0)
{
/* convert the process subroutine name */
sub_addr = (void *)registryFunctionFind(pgsub->snam);
if( sub_addr == 0 )
{
recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(init_record)");
status = S_db_BadSub;
}
else
pgsub->sadr = (long)sub_addr;
}
}
}
}
}
return( status );
}
static long process( genSubRecord *pgsub )
{
int i;
void *sub_addr;
long status;
struct link *plinkin;
struct link *plinkout;
unsigned short *typptr;
unsigned long *nelptr;
long nRequest;
long options;
void **valptr;
pgsub->pact = TRUE;
status = 0;
options = 0;
if( pgsub->lflg == genSubLFLG_READ )
{
/* Get the Subroutine Name from the Link and look it up */
nRequest = 1;
status = dbGetLink( &(pgsub->subl), DBR_STRING, pgsub->snam, &options, &nRequest );
if( !status )
{
if( pgsub->snam[0] != '\0' )
{
if( strcmp(pgsub->snam, pgsub->onam) )
{
/* To save time, only look up the routine if it has a different name */
strcpy(pgsub->onam, pgsub->snam);
sub_addr = (void *)registryFunctionFind(pgsub->snam);
if( sub_addr == 0 )
{
recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(process) registryFunctionFind failed");
status = S_db_BadSub;
}
else
pgsub->sadr = (long)sub_addr;
}
}
}
}
/* Get the Values from the input links */
if( !status )
{
plinkin = &pgsub->inpa;
valptr = &pgsub->a;
nelptr = &pgsub->noa;
typptr = &pgsub->fta;
for( i=0; i<ARG_MAX; i++, plinkin++, valptr++, nelptr++, typptr++ )
{
nRequest = *nelptr;
status = dbGetLink( plinkin, *typptr, *valptr, &options, &nRequest );
if( status )
{
printf("Status %ld from dbGetLink (%s)\n", status, Ifldnames[i]);
break;
}
}
}
/* Call the user routine */
if( !status )
pgsub->val = do_sub(pgsub);
/* Put the values on the output links */
if( !status )
{
plinkout = &pgsub->outa;
valptr = &pgsub->vala;
nelptr = &pgsub->nova;
typptr = &pgsub->ftva;
for( i=0; i<ARG_MAX; i++, plinkout++, valptr++, nelptr++, typptr++ )
{
nRequest = *nelptr;
status = dbPutLink( plinkout, *typptr, *valptr, nRequest );
status = 0;
/*
Do not check this because dbPutLink returns -1 if channel not connected!
if( status )
{
printf("Status %d from recGblPutLinkValue (%s)\n", status, Ofldnames[i]);
break;
}
*/
}
}
if( !status )
{
recGblGetTimeStamp(pgsub);
monitor(pgsub, 1);
recGblFwdLink(pgsub);
}
pgsub->pact = FALSE;
return(status);
}
static long get_precision( struct dbAddr *paddr, long *precision )
{
genSubRecord *pgsub;
int fieldIndex;
fieldIndex = dbGetFieldIndex(paddr);
if( fieldIndex == genSubRecordVERS )
{
*precision = 1;
return 0;
}
pgsub = (genSubRecord *)paddr->precord;
*precision = pgsub->prec;
if( paddr->pfield == (void *)&pgsub->val )
return(0);
recGblGetPrec(paddr,precision);
return(0);
}
static long get_value( genSubRecord *pgsub, struct valueDes *pvdes )
{
#if DEBUG
printf("Calling get_value...\n");
#endif
pvdes->no_elements = 1;
pvdes->pvalue = (void *)(&pgsub->val);
pvdes->field_type = DBF_LONG;
return(0);
}
static void monitor( genSubRecord *pgsub, int reset )
{
int i;
unsigned short monitor_mask;
unsigned long *totptr;
void **valptr;
void **ovlptr;
if( reset )
monitor_mask = recGblResetAlarms(pgsub);
else
monitor_mask = 0;
monitor_mask |= DBE_VALUE | DBE_LOG;
/* Post events for SADR (subroutine address) whenever this routine is called */
if( monitor_mask )
{
if( pgsub->sadr != pgsub->osad )
{
db_post_events(pgsub, &pgsub->sadr, monitor_mask);
pgsub->osad = pgsub->sadr;
}
}
/* Post events for VAL and output fields when this routine called from process */
/* Event posting on output arrays depends on the setting of pgsub->eflg */
if( reset )
{
if( monitor_mask )
{
if( pgsub->val != pgsub->oval )
{
db_post_events(pgsub, &pgsub->val, monitor_mask);
pgsub->oval = pgsub->val;
}
}
if( pgsub->eflg == genSubEFLG_NEVER )
return;
else if( pgsub->eflg == genSubEFLG_ON_CHANGE )
{
if(monitor_mask)
{
valptr = &pgsub->vala;
ovlptr = &pgsub->ovla;
totptr = &pgsub->tova;
for( i=0; i<ARG_MAX; i++, valptr++, ovlptr++, totptr++ )
{
if( memcmp(*ovlptr, *valptr, *totptr) )
{
#if DEBUG
printf("Differences in field %s were found. Total Bytes = %d\n", Ofldnames[i], *totptr);
#endif
memcpy( *ovlptr, *valptr, *totptr );
db_post_events(pgsub, *valptr, monitor_mask);
}
}
}
}
else if( pgsub->eflg == genSubEFLG_ALWAYS )
{
if(monitor_mask)
{
valptr = &pgsub->vala;
for( i=0; i<ARG_MAX; i++, valptr++ )
db_post_events(pgsub, *valptr, monitor_mask);
}
}
}
return;
}
static long do_sub( genSubRecord *pgsub )
{
long status;
SUBFUNCPTR psubroutine;
/* If there is a routine, call it */
if( pgsub->snam[0] != '\0' )
{
psubroutine = (SUBFUNCPTR)((void *)pgsub->sadr);
if( psubroutine == NULL)
{
recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(process) NO SUBROUTINE");
status = S_db_BadSub;
}
else
{
status = psubroutine(pgsub);
if( status < 0 )
recGblSetSevr(pgsub, SOFT_ALARM, pgsub->brsv);
else
pgsub->udf = FALSE;
}
}
else
status = 0;
return( status );
}
static long cvt_dbaddr( struct dbAddr *paddr )
{
int error;
int flag;
long no_elements;
long nNew;
#if DEBUG
printf("Calling cvt_dbaddr...\n");
#endif
flag = 1;
nNew = 0;
error = findField( flag, paddr, &no_elements, nNew );
if( error )
printf("cvt_dbaddr: Could not find field\n");
return(0);
}
static long get_array_info( struct dbAddr *paddr, long *no_elements, long *offset )
{
int error;
int flag;
long nNew;
#if DEBUG
printf("Calling get_array_info...\n");
#endif
*offset = 0;
nNew = 0;
flag = 2;
error = findField( flag, paddr, no_elements, nNew );
if( error )
printf("get_array_info: Could not find field\n");
return(0);
}
static long put_array_info( struct dbAddr *paddr, long nNew )
{
int error;
int flag;
long no_elements;
#if DEBUG
printf("Calling put_array_info...\n");
#endif
flag = 3;
error = findField( flag, paddr, &no_elements, nNew );
if( error )
printf("put_array_info: Could not find field\n");
return(0);
}
static long special( struct dbAddr *paddr, int after )
{
genSubRecord *pgsub;
void *sub_addr;
pgsub = (genSubRecord *)paddr->precord;
if( after )
{
if( pgsub->lflg == genSubLFLG_IGNORE )
{
if( pgsub->snam[0] != '\0' )
{
sub_addr = (void *)registryFunctionFind(pgsub->snam);
if( sub_addr == 0 )
{
recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(special) registryFunctionFind failed");
return(S_db_BadSub);
}
else
{
pgsub->sadr = (long)sub_addr;
monitor(pgsub, 0);
}
}
}
}
return(0);
}
static long findField( int flag, struct dbAddr *paddr, long *no_elements, long nNew )
{
long error;
int fieldIndex;
genSubRecord *pgsub;
pgsub = (genSubRecord *)paddr->precord;
error = 0;
fieldIndex = dbGetFieldIndex(paddr);
switch( fieldIndex )
{
case genSubRecordA:
if( flag == 1 )
{
paddr->pfield = pgsub->a;
paddr->no_elements = pgsub->noa;
paddr->field_type = pgsub->fta;
}
else if( flag == 2 )
*no_elements = pgsub->noa;
else if( flag == 3 )
pgsub->noa = nNew;
break;
case genSubRecordB:
if( flag == 1 )
{
paddr->pfield = pgsub->b;
paddr->no_elements = pgsub->nob;
paddr->field_type = pgsub->ftb;
}
else if( flag == 2 )
*no_elements = pgsub->nob;
else if( flag == 3 )
pgsub->nob = nNew;
break;
case genSubRecordC:
if( flag == 1 )
{
paddr->pfield = pgsub->c;
paddr->no_elements = pgsub->noc;
paddr->field_type = pgsub->ftc;
}
else if( flag == 2 )
*no_elements = pgsub->noc;
else if( flag == 3 )
pgsub->noc = nNew;
break;
case genSubRecordD:
if( flag == 1 )
{
paddr->pfield = pgsub->d;
paddr->no_elements = pgsub->nod;
paddr->field_type = pgsub->ftd;
}
else if( flag == 2 )
*no_elements = pgsub->nod;
else if( flag == 3 )
pgsub->nod = nNew;
break;
case genSubRecordE:
if( flag == 1 )
{
paddr->pfield = pgsub->e;
paddr->no_elements = pgsub->noe;
paddr->field_type = pgsub->fte;
}
else if( flag == 2 )
*no_elements = pgsub->noe;
else if( flag == 3 )
pgsub->noe = nNew;
break;
case genSubRecordF:
if( flag == 1 )
{
paddr->pfield = pgsub->f;
paddr->no_elements = pgsub->nof;
paddr->field_type = pgsub->ftf;
}
else if( flag == 2 )
*no_elements = pgsub->nof;
else if( flag == 3 )
pgsub->nof = nNew;
break;
case genSubRecordG:
if( flag == 1 )
{
paddr->pfield = pgsub->g;
paddr->no_elements = pgsub->nog;
paddr->field_type = pgsub->ftg;
}
else if( flag == 2 )
*no_elements = pgsub->nog;
else if( flag == 3 )
pgsub->nog = nNew;
break;
case genSubRecordH:
if( flag == 1 )
{
paddr->pfield = pgsub->h;
paddr->no_elements = pgsub->noh;
paddr->field_type = pgsub->fth;
}
else if( flag == 2 )
*no_elements = pgsub->noh;
else if( flag == 3 )
pgsub->noh = nNew;
break;
case genSubRecordI:
if( flag == 1 )
{
paddr->pfield = pgsub->i;
paddr->no_elements = pgsub->noi;
paddr->field_type = pgsub->fti;
}
else if( flag == 2 )
*no_elements = pgsub->noi;
else if( flag == 3 )
pgsub->noi = nNew;
break;
case genSubRecordJ:
if( flag == 1 )
{
paddr->pfield = pgsub->j;
paddr->no_elements = pgsub->noj;
paddr->field_type = pgsub->ftj;
}
else if( flag == 2 )
*no_elements = pgsub->noj;
else if( flag == 3 )
pgsub->noj = nNew;
break;
case genSubRecordK:
if( flag == 1 )
{
paddr->pfield = pgsub->k;
paddr->no_elements = pgsub->nok;
paddr->field_type = pgsub->ftk;
}
else if( flag == 2 )
*no_elements = pgsub->nok;
else if( flag == 3 )
pgsub->nok = nNew;
break;
case genSubRecordL:
if( flag == 1 )
{
paddr->pfield = pgsub->l;
paddr->no_elements = pgsub->nol;
paddr->field_type = pgsub->ftl;
}
else if( flag == 2 )
*no_elements = pgsub->nol;
else if( flag == 3 )
pgsub->nol = nNew;
break;
case genSubRecordM:
if( flag == 1 )
{
paddr->pfield = pgsub->m;
paddr->no_elements = pgsub->nom;
paddr->field_type = pgsub->ftm;
}
else if( flag == 2 )
*no_elements = pgsub->nom;
else if( flag == 3 )
pgsub->nom = nNew;
break;
case genSubRecordN:
if( flag == 1 )
{
paddr->pfield = pgsub->n;
paddr->no_elements = pgsub->non;
paddr->field_type = pgsub->ftn;
}
else if( flag == 2 )
*no_elements = pgsub->non;
else if( flag == 3 )
pgsub->non = nNew;
break;
case genSubRecordO:
if( flag == 1 )
{
paddr->pfield = pgsub->o;
paddr->no_elements = pgsub->noo;
paddr->field_type = pgsub->fto;
}
else if( flag == 2 )
*no_elements = pgsub->noo;
else if( flag == 3 )
pgsub->noo = nNew;
break;
case genSubRecordP:
if( flag == 1 )
{
paddr->pfield = pgsub->p;
paddr->no_elements = pgsub->nop;
paddr->field_type = pgsub->ftp;
}
else if( flag == 2 )
*no_elements = pgsub->nop;
else if( flag == 3 )
pgsub->nop = nNew;
break;
case genSubRecordQ:
if( flag == 1 )
{
paddr->pfield = pgsub->q;
paddr->no_elements = pgsub->noq;
paddr->field_type = pgsub->ftq;
}
else if( flag == 2 )
*no_elements = pgsub->noq;
else if( flag == 3 )
pgsub->noq = nNew;
break;
case genSubRecordR:
if( flag == 1 )
{
paddr->pfield = pgsub->r;
paddr->no_elements = pgsub->nor;
paddr->field_type = pgsub->ftr;
}
else if( flag == 2 )
*no_elements = pgsub->nor;
else if( flag == 3 )
pgsub->nor = nNew;
break;
case genSubRecordS:
if( flag == 1 )
{
paddr->pfield = pgsub->s;
paddr->no_elements = pgsub->nos;
paddr->field_type = pgsub->fts;
}
else if( flag == 2 )
*no_elements = pgsub->nos;
else if( flag == 3 )
pgsub->nos = nNew;
break;
case genSubRecordT:
if( flag == 1 )
{
paddr->pfield = pgsub->t;
paddr->no_elements = pgsub->not;
paddr->field_type = pgsub->ftt;
}
else if( flag == 2 )
*no_elements = pgsub->not;
else if( flag == 3 )
pgsub->not = nNew;
break;
case genSubRecordU:
if( flag == 1 )
{
paddr->pfield = pgsub->u;
paddr->no_elements = pgsub->nou;
paddr->field_type = pgsub->ftu;
}
else if( flag == 2 )
*no_elements = pgsub->nou;
else if( flag == 3 )
pgsub->nou = nNew;
break;
case genSubRecordVALA:
if( flag == 1 )
{
paddr->pfield = pgsub->vala;
paddr->no_elements = pgsub->nova;
paddr->field_type = pgsub->ftva;
}
else if( flag == 2 )
*no_elements = pgsub->nova;
else if( flag == 3 )
pgsub->nova = nNew;
break;
case genSubRecordVALB:
if( flag == 1 )
{
paddr->pfield = pgsub->valb;
paddr->no_elements = pgsub->novb;
paddr->field_type = pgsub->ftvb;
}
else if( flag == 2 )
*no_elements = pgsub->novb;
else if( flag == 3 )
pgsub->novb = nNew;
break;
case genSubRecordVALC:
if( flag == 1 )
{
paddr->pfield = pgsub->valc;
paddr->no_elements = pgsub->novc;
paddr->field_type = pgsub->ftvc;
}
else if( flag == 2 )
*no_elements = pgsub->novc;
else if( flag == 3 )
pgsub->novc = nNew;
break;
case genSubRecordVALD:
if( flag == 1 )
{
paddr->pfield = pgsub->vald;
paddr->no_elements = pgsub->novd;
paddr->field_type = pgsub->ftvd;
}
else if( flag == 2 )
*no_elements = pgsub->novd;
else if( flag == 3 )
pgsub->novd = nNew;
break;
case genSubRecordVALE:
if( flag == 1 )
{
paddr->pfield = pgsub->vale;
paddr->no_elements = pgsub->nove;
paddr->field_type = pgsub->ftve;
}
else if( flag == 2 )
*no_elements = pgsub->nove;
else if( flag == 3 )
pgsub->nove = nNew;
break;
case genSubRecordVALF:
if( flag == 1 )
{
paddr->pfield = pgsub->valf;
paddr->no_elements = pgsub->novf;
paddr->field_type = pgsub->ftvf;
}
else if( flag == 2 )
*no_elements = pgsub->novf;
else if( flag == 3 )
pgsub->novf = nNew;
break;
case genSubRecordVALG:
if( flag == 1 )
{
paddr->pfield = pgsub->valg;
paddr->no_elements = pgsub->novg;
paddr->field_type = pgsub->ftvg;
}
else if( flag == 2 )
*no_elements = pgsub->novg;
else if( flag == 3 )
pgsub->novg = nNew;
break;
case genSubRecordVALH:
if( flag == 1 )
{
paddr->pfield = pgsub->valh;
paddr->no_elements = pgsub->novh;
paddr->field_type = pgsub->ftvh;
}
else if( flag == 2 )
*no_elements = pgsub->novh;
else if( flag == 3 )
pgsub->novh = nNew;
break;
case genSubRecordVALI:
if( flag == 1 )
{
paddr->pfield = pgsub->vali;
paddr->no_elements = pgsub->novi;
paddr->field_type = pgsub->ftvi;
}
else if( flag == 2 )
*no_elements = pgsub->novi;
else if( flag == 3 )
pgsub->novi = nNew;
break;
case genSubRecordVALJ:
if( flag == 1 )
{
paddr->pfield = pgsub->valj;
paddr->no_elements = pgsub->novj;
paddr->field_type = pgsub->ftvj;
}
else if( flag == 2 )
*no_elements = pgsub->novj;
else if( flag == 3 )
pgsub->novj = nNew;
break;
case genSubRecordVALK:
if( flag == 1 )
{
paddr->pfield = pgsub->valk;
paddr->no_elements = pgsub->novk;
paddr->field_type = pgsub->ftvk;
}
else if( flag == 2 )
*no_elements = pgsub->novk;
else if( flag == 3 )
pgsub->novk = nNew;
break;
case genSubRecordVALL:
if( flag == 1 )
{
paddr->pfield = pgsub->vall;
paddr->no_elements = pgsub->novl;
paddr->field_type = pgsub->ftvl;
}
else if( flag == 2 )
*no_elements = pgsub->novl;
else if( flag == 3 )
pgsub->novl = nNew;
break;
case genSubRecordVALM:
if( flag == 1 )
{
paddr->pfield = pgsub->valm;
paddr->no_elements = pgsub->novm;
paddr->field_type = pgsub->ftvm;
}
else if( flag == 2 )
*no_elements = pgsub->novm;
else if( flag == 3 )
pgsub->novm = nNew;
break;
case genSubRecordVALN:
if( flag == 1 )
{
paddr->pfield = pgsub->valn;
paddr->no_elements = pgsub->novn;
paddr->field_type = pgsub->ftvn;
}
else if( flag == 2 )
*no_elements = pgsub->novn;
else if( flag == 3 )
pgsub->novn = nNew;
break;
case genSubRecordVALO:
if( flag == 1 )
{
paddr->pfield = pgsub->valo;
paddr->no_elements = pgsub->novo;
paddr->field_type = pgsub->ftvo;
}
else if( flag == 2 )
*no_elements = pgsub->novo;
else if( flag == 3 )
pgsub->novo = nNew;
break;
case genSubRecordVALP:
if( flag == 1 )
{
paddr->pfield = pgsub->valp;
paddr->no_elements = pgsub->novp;
paddr->field_type = pgsub->ftvp;
}
else if( flag == 2 )
*no_elements = pgsub->novp;
else if( flag == 3 )
pgsub->novp = nNew;
break;
case genSubRecordVALQ:
if( flag == 1 )
{
paddr->pfield = pgsub->valq;
paddr->no_elements = pgsub->novq;
paddr->field_type = pgsub->ftvq;
}
else if( flag == 2 )
*no_elements = pgsub->novq;
else if( flag == 3 )
pgsub->novq = nNew;
break;
case genSubRecordVALR:
if( flag == 1 )
{
paddr->pfield = pgsub->valr;
paddr->no_elements = pgsub->novr;
paddr->field_type = pgsub->ftvr;
}
else if( flag == 2 )
*no_elements = pgsub->novr;
else if( flag == 3 )
pgsub->novr = nNew;
break;
case genSubRecordVALS:
if( flag == 1 )
{
paddr->pfield = pgsub->vals;
paddr->no_elements = pgsub->novs;
paddr->field_type = pgsub->ftvs;
}
else if( flag == 2 )
*no_elements = pgsub->novs;
else if( flag == 3 )
pgsub->novs = nNew;
break;
case genSubRecordVALT:
if( flag == 1 )
{
paddr->pfield = pgsub->valt;
paddr->no_elements = pgsub->novt;
paddr->field_type = pgsub->ftvt;
}
else if( flag == 2 )
*no_elements = pgsub->novt;
else if( flag == 3 )
pgsub->novt = nNew;
break;
case genSubRecordVALU:
if( flag == 1 )
{
paddr->pfield = pgsub->valu;
paddr->no_elements = pgsub->novu;
paddr->field_type = pgsub->ftvu;
}
else if( flag == 2 )
*no_elements = pgsub->novu;
else if( flag == 3 )
pgsub->novu = nNew;
break;
default:
error = 1;
break;
}
if( !error && flag == 1 )
{
paddr->dbr_field_type = paddr->field_type;
if( paddr->field_type == DBF_STRING )
paddr->field_size = MAX_STRING_SIZE;
else
paddr->field_size = sizeofTypes[paddr->field_type];
}
return(error);
}
include "menuGenSub.dbd"
recordtype(genSub) {
include "dbCommon.dbd"
field(VERS,DBF_DOUBLE) {
prompt("Version Number")
promptgroup(GUI_DISPLAY)
special(SPC_NOMOD)
interest(1)
}
field(VAL,DBF_LONG) {
prompt("Subr. return value")
asl(ASL0)
}
field(OVAL,DBF_LONG) {
prompt("Old return value")
special(SPC_NOMOD)
interest(1)
}
field(SADR,DBF_LONG) {
prompt("Subroutine Address")
special(SPC_NOMOD)
interest(1)
}
field(OSAD,DBF_LONG) {
prompt("Old Subr. Address")
special(SPC_NOMOD)
interest(1)
}
field(LFLG,DBF_MENU) {
prompt("Link Flag")
promptgroup(GUI_OUTPUT)
interest(1)
menu(genSubLFLG)
}
field(EFLG,DBF_MENU) {
prompt("Event Flag")
promptgroup(GUI_OUTPUT)
interest(1)
menu(genSubEFLG)
}
field(SUBL,DBF_INLINK) {
prompt("Subroutine Input Link")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INAM,DBF_STRING) {
prompt("Init Routine Name")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(SNAM,DBF_STRING) {
prompt("Process Subr. Name")
promptgroup(GUI_SUB)
special(SPC_MOD)
interest(1)
size(40)
}
field(ONAM,DBF_STRING) {
prompt("Old Subroutine Name")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(STYP,DBF_SHORT) {
prompt("Subr symbol type")
special(SPC_NOMOD)
interest(3)
}
field(BRSV,DBF_MENU) {
prompt("Bad Return Severity")
promptgroup(GUI_SUB)
pp(TRUE)
interest(1)
menu(menuAlarmSevr)
}
field(PREC,DBF_SHORT) {
prompt("Display Precision")
promptgroup(GUI_DISPLAY)
interest(1)
}
field(INPA,DBF_INLINK) {
prompt("Input Link A")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPB,DBF_INLINK) {
prompt("Input Link B")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPC,DBF_INLINK) {
prompt("Input Link C")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPD,DBF_INLINK) {
prompt("Input Link D")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPE,DBF_INLINK) {
prompt("Input Link E")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPF,DBF_INLINK) {
prompt("Input Link F")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPG,DBF_INLINK) {
prompt("Input Link G")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPH,DBF_INLINK) {
prompt("Input Link H")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPI,DBF_INLINK) {
prompt("Input Link I")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPJ,DBF_INLINK) {
prompt("Input Link J")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPK,DBF_INLINK) {
prompt("Input Link K")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPL,DBF_INLINK) {
prompt("Input Link L")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPM,DBF_INLINK) {
prompt("Input Link M")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPN,DBF_INLINK) {
prompt("Input Link N")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPO,DBF_INLINK) {
prompt("Input Link O")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPP,DBF_INLINK) {
prompt("Input Link P")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPQ,DBF_INLINK) {
prompt("Input Link Q")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPR,DBF_INLINK) {
prompt("Input Link R")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPS,DBF_INLINK) {
prompt("Input Link S")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPT,DBF_INLINK) {
prompt("Input Link T")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(INPU,DBF_INLINK) {
prompt("Input Link U")
promptgroup(GUI_INPUTS)
special(SPC_NOMOD)
interest(1)
}
field(UFA,DBF_STRING) {
prompt("Input Structure A")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFB,DBF_STRING) {
prompt("Input Structure B")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFC,DBF_STRING) {
prompt("Input Structure C")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFD,DBF_STRING) {
prompt("Input Structure D")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFE,DBF_STRING) {
prompt("Input Structure E")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFF,DBF_STRING) {
prompt("Input Structure F")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFG,DBF_STRING) {
prompt("Input Structure G")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFH,DBF_STRING) {
prompt("Input Structure H")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFI,DBF_STRING) {
prompt("Input Structure I")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFJ,DBF_STRING) {
prompt("Input Structure J")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFK,DBF_STRING) {
prompt("Input Structure K")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFL,DBF_STRING) {
prompt("Input Structure L")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFM,DBF_STRING) {
prompt("Input Structure M")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFN,DBF_STRING) {
prompt("Input Structure N")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFO,DBF_STRING) {
prompt("Input Structure O")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFP,DBF_STRING) {
prompt("Input Structure P")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFQ,DBF_STRING) {
prompt("Input Structure Q")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFR,DBF_STRING) {
prompt("Input Structure R")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFS,DBF_STRING) {
prompt("Input Structure S")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFT,DBF_STRING) {
prompt("Input Structure T")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFU,DBF_STRING) {
prompt("Input Structure U")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(A,DBF_NOACCESS) {
prompt("Value of Input A")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *a")
}
field(B,DBF_NOACCESS) {
prompt("Value of Input B")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *b")
}
field(C,DBF_NOACCESS) {
prompt("Value of Input C")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *c")
}
field(D,DBF_NOACCESS) {
prompt("Value of Input D")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *d")
}
field(E,DBF_NOACCESS) {
prompt("Value of Input E")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *e")
}
field(F,DBF_NOACCESS) {
prompt("Value of Input F")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *f")
}
field(G,DBF_NOACCESS) {
prompt("Value of Input G")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *g")
}
field(H,DBF_NOACCESS) {
prompt("Value of Input H")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *h")
}
field(I,DBF_NOACCESS) {
prompt("Value of Input I")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *i")
}
field(J,DBF_NOACCESS) {
prompt("Value of Input J")
asl(ASL0)
special(SPC_DBADDR)
pp(TRUE)
interest(1)
size(4)
extra("void *j")
}
field(K,DBF_NOACCESS) {
prompt("Value of Input K")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *k")
}
field(L,DBF_NOACCESS) {
prompt("Value of Input L")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *l")
}
field(M,DBF_NOACCESS) {
prompt("Value of Input M")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *m")
}
field(N,DBF_NOACCESS) {
prompt("Value of Input N")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *n")
}
field(O,DBF_NOACCESS) {
prompt("Value of Input O")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *o")
}
field(P,DBF_NOACCESS) {
prompt("Value of Input P")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *p")
}
field(Q,DBF_NOACCESS) {
prompt("Value of Input Q")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *q")
}
field(R,DBF_NOACCESS) {
prompt("Value of Input R")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *r")
}
field(S,DBF_NOACCESS) {
prompt("Value of Input S")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *s")
}
field(T,DBF_NOACCESS) {
prompt("Value of Input T")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *t")
}
field(U,DBF_NOACCESS) {
prompt("Value of Input U")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *u")
}
field(FTA,DBF_MENU) {
prompt("Type of A")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTB,DBF_MENU) {
prompt("Type of B")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTC,DBF_MENU) {
prompt("Type of C")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTD,DBF_MENU) {
prompt("Type of D")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTE,DBF_MENU) {
prompt("Type of E")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTF,DBF_MENU) {
prompt("Type of F")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTG,DBF_MENU) {
prompt("Type of G")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTH,DBF_MENU) {
prompt("Type of H")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTI,DBF_MENU) {
prompt("Type of I")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTJ,DBF_MENU) {
prompt("Type of J")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTK,DBF_MENU) {
prompt("Type of K")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTL,DBF_MENU) {
prompt("Type of L")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTM,DBF_MENU) {
prompt("Type of M")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTN,DBF_MENU) {
prompt("Type of N")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTO,DBF_MENU) {
prompt("Type of O")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTP,DBF_MENU) {
prompt("Type of P")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTQ,DBF_MENU) {
prompt("Type of Q")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTR,DBF_MENU) {
prompt("Type of R")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTS,DBF_MENU) {
prompt("Type of S")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTT,DBF_MENU) {
prompt("Type of T")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTU,DBF_MENU) {
prompt("Type of U")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(NOA,DBF_ULONG) {
prompt("No. in A")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOB,DBF_ULONG) {
prompt("No. in B")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOC,DBF_ULONG) {
prompt("No. in C")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOD,DBF_ULONG) {
prompt("No. in D")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOE,DBF_ULONG) {
prompt("No. in E")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOF,DBF_ULONG) {
prompt("No. in F")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOG,DBF_ULONG) {
prompt("No. in G")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOH,DBF_ULONG) {
prompt("No. in H")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOI,DBF_ULONG) {
prompt("No. in I")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOJ,DBF_ULONG) {
prompt("No. in J")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOK,DBF_ULONG) {
prompt("No. in K")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOL,DBF_ULONG) {
prompt("No. in L")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOM,DBF_ULONG) {
prompt("No. in M")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NON,DBF_ULONG) {
prompt("No. in N")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOO,DBF_ULONG) {
prompt("No. in O")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOP,DBF_ULONG) {
prompt("No. in P")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOQ,DBF_ULONG) {
prompt("No. in Q")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOR,DBF_ULONG) {
prompt("No. in R")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOS,DBF_ULONG) {
prompt("No. in S")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOT,DBF_ULONG) {
prompt("No. in T")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOU,DBF_ULONG) {
prompt("No. in U")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(OUTA,DBF_OUTLINK) {
prompt("Output Link A")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTB,DBF_OUTLINK) {
prompt("Output Link B")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTC,DBF_OUTLINK) {
prompt("Output Link C")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTD,DBF_OUTLINK) {
prompt("Output Link D")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTE,DBF_OUTLINK) {
prompt("Output Link E")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTF,DBF_OUTLINK) {
prompt("Output Link F")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTG,DBF_OUTLINK) {
prompt("Output Link G")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTH,DBF_OUTLINK) {
prompt("Output Link H")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTI,DBF_OUTLINK) {
prompt("Output Link I")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTJ,DBF_OUTLINK) {
prompt("Output Link J")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTK,DBF_OUTLINK) {
prompt("Output Link K")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTL,DBF_OUTLINK) {
prompt("Output Link L")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTM,DBF_OUTLINK) {
prompt("Output Link M")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTN,DBF_OUTLINK) {
prompt("Output Link N")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTO,DBF_OUTLINK) {
prompt("Output Link O")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTP,DBF_OUTLINK) {
prompt("Output Link P")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTQ,DBF_OUTLINK) {
prompt("Output Link Q")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTR,DBF_OUTLINK) {
prompt("Output Link R")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTS,DBF_OUTLINK) {
prompt("Output Link S")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTT,DBF_OUTLINK) {
prompt("Output Link T")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(OUTU,DBF_OUTLINK) {
prompt("Output Link U")
promptgroup(GUI_OUTPUT)
special(SPC_NOMOD)
interest(1)
}
field(UFVA,DBF_STRING) {
prompt("Output Structure A")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVB,DBF_STRING) {
prompt("Output Structure B")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVC,DBF_STRING) {
prompt("Output Structure C")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVD,DBF_STRING) {
prompt("Output Structure D")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVE,DBF_STRING) {
prompt("Output Structure E")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVF,DBF_STRING) {
prompt("Output Structure F")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVG,DBF_STRING) {
prompt("Output Structure G")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVH,DBF_STRING) {
prompt("Output Structure H")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVI,DBF_STRING) {
prompt("Output Structure I")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVJ,DBF_STRING) {
prompt("Output Structure J")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVK,DBF_STRING) {
prompt("Output Structure K")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVL,DBF_STRING) {
prompt("Output Structure L")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVM,DBF_STRING) {
prompt("Output Structure M")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVN,DBF_STRING) {
prompt("Output Structure N")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVO,DBF_STRING) {
prompt("Output Structure O")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVP,DBF_STRING) {
prompt("Output Structure P")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVQ,DBF_STRING) {
prompt("Output Structure Q")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVR,DBF_STRING) {
prompt("Output Structure R")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVS,DBF_STRING) {
prompt("Output Structure S")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVT,DBF_STRING) {
prompt("Output Structure T")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(UFVU,DBF_STRING) {
prompt("Output Structure U")
promptgroup(GUI_SUB)
special(SPC_NOMOD)
interest(1)
size(40)
}
field(VALA,DBF_NOACCESS) {
prompt("Value of Output A")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *vala")
}
field(VALB,DBF_NOACCESS) {
prompt("Value of Output B")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valb")
}
field(VALC,DBF_NOACCESS) {
prompt("Value of Output C")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valc")
}
field(VALD,DBF_NOACCESS) {
prompt("Value of Output D")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *vald")
}
field(VALE,DBF_NOACCESS) {
prompt("Value of Output E")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *vale")
}
field(VALF,DBF_NOACCESS) {
prompt("Value of Output F")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valf")
}
field(VALG,DBF_NOACCESS) {
prompt("Value of Output G")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valg")
}
field(VALH,DBF_NOACCESS) {
prompt("Value of Output H")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valh")
}
field(VALI,DBF_NOACCESS) {
prompt("Value of Output I")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *vali")
}
field(VALJ,DBF_NOACCESS) {
prompt("Value of Output J")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valj")
}
field(VALK,DBF_NOACCESS) {
prompt("Value of Output K")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valk")
}
field(VALL,DBF_NOACCESS) {
prompt("Value of Output L")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *vall")
}
field(VALM,DBF_NOACCESS) {
prompt("Value of Output M")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valm")
}
field(VALN,DBF_NOACCESS) {
prompt("Value of Output N")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valn")
}
field(VALO,DBF_NOACCESS) {
prompt("Value of Output O")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valo")
}
field(VALP,DBF_NOACCESS) {
prompt("Value of Output P")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valp")
}
field(VALQ,DBF_NOACCESS) {
prompt("Value of Output Q")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valq")
}
field(VALR,DBF_NOACCESS) {
prompt("Value of Output R")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valr")
}
field(VALS,DBF_NOACCESS) {
prompt("Value of Output S")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *vals")
}
field(VALT,DBF_NOACCESS) {
prompt("Value of Output T")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valt")
}
field(VALU,DBF_NOACCESS) {
prompt("Value of Output U")
asl(ASL0)
special(SPC_DBADDR)
interest(1)
size(4)
extra("void *valu")
}
field(OVLA,DBF_NOACCESS) {
prompt("Old Output A")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovla")
}
field(OVLB,DBF_NOACCESS) {
prompt("Old Output B")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlb")
}
field(OVLC,DBF_NOACCESS) {
prompt("Old Output C")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlc")
}
field(OVLD,DBF_NOACCESS) {
prompt("Old Output D")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovld")
}
field(OVLE,DBF_NOACCESS) {
prompt("Old Output E")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovle")
}
field(OVLF,DBF_NOACCESS) {
prompt("Old Output F")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlf")
}
field(OVLG,DBF_NOACCESS) {
prompt("Old Output G")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlg")
}
field(OVLH,DBF_NOACCESS) {
prompt("Old Output H")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlh")
}
field(OVLI,DBF_NOACCESS) {
prompt("Old Output I")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovli")
}
field(OVLJ,DBF_NOACCESS) {
prompt("Old Output J")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlj")
}
field(OVLK,DBF_NOACCESS) {
prompt("Old Output K")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlk")
}
field(OVLL,DBF_NOACCESS) {
prompt("Old Output L")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovll")
}
field(OVLM,DBF_NOACCESS) {
prompt("Old Output M")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlm")
}
field(OVLN,DBF_NOACCESS) {
prompt("Old Output N")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovln")
}
field(OVLO,DBF_NOACCESS) {
prompt("Old Output O")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlo")
}
field(OVLP,DBF_NOACCESS) {
prompt("Old Output P")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlp")
}
field(OVLQ,DBF_NOACCESS) {
prompt("Old Output Q")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlq")
}
field(OVLR,DBF_NOACCESS) {
prompt("Old Output R")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlr")
}
field(OVLS,DBF_NOACCESS) {
prompt("Old Output S")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovls")
}
field(OVLT,DBF_NOACCESS) {
prompt("Old Output T")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlt")
}
field(OVLU,DBF_NOACCESS) {
prompt("Old Output U")
asl(ASL0)
special(SPC_NOMOD)
interest(1)
size(4)
extra("void *ovlu")
}
field(FTVA,DBF_MENU) {
prompt("Type of VALA")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVB,DBF_MENU) {
prompt("Type of VALB")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVC,DBF_MENU) {
prompt("Type of VALC")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVD,DBF_MENU) {
prompt("Type of VALD")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVE,DBF_MENU) {
prompt("Type of VALE")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVF,DBF_MENU) {
prompt("Type of VALF")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVG,DBF_MENU) {
prompt("Type of VALG")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVH,DBF_MENU) {
prompt("Type of VALH")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVI,DBF_MENU) {
prompt("Type of VALI")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVJ,DBF_MENU) {
prompt("Type of VALJ")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVK,DBF_MENU) {
prompt("Type of VALK")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVL,DBF_MENU) {
prompt("Type of VALL")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVM,DBF_MENU) {
prompt("Type of VALM")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVN,DBF_MENU) {
prompt("Type of VALN")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVO,DBF_MENU) {
prompt("Type of VALO")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVP,DBF_MENU) {
prompt("Type of VALP")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVQ,DBF_MENU) {
prompt("Type of VALQ")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVR,DBF_MENU) {
prompt("Type of VALR")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVS,DBF_MENU) {
prompt("Type of VALS")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVT,DBF_MENU) {
prompt("Type of VALT")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(FTVU,DBF_MENU) {
prompt("Type of VALU")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
menu(menuFtype)
}
field(NOVA,DBF_ULONG) {
prompt("No. in VALA")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVB,DBF_ULONG) {
prompt("No. in VALB")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVC,DBF_ULONG) {
prompt("No. in VALC")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVD,DBF_ULONG) {
prompt("No. in VALD")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVE,DBF_ULONG) {
prompt("No. in VALE")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVF,DBF_ULONG) {
prompt("No. in VALF")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVG,DBF_ULONG) {
prompt("No. in VALG")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVH,DBF_ULONG) {
prompt("No. in VAlH")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVI,DBF_ULONG) {
prompt("No. in VALI")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVJ,DBF_ULONG) {
prompt("No. in VALJ")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVK,DBF_ULONG) {
prompt("No. in VALK")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVL,DBF_ULONG) {
prompt("No. in VALL")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVM,DBF_ULONG) {
prompt("No. in VALM")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVN,DBF_ULONG) {
prompt("No. in VALN")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVO,DBF_ULONG) {
prompt("No. in VALO")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVP,DBF_ULONG) {
prompt("No. in VALP")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVQ,DBF_ULONG) {
prompt("No. in VALQ")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVR,DBF_ULONG) {
prompt("No. in VALR")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVS,DBF_ULONG) {
prompt("No. in VALS")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVT,DBF_ULONG) {
prompt("No. in VALT")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(NOVU,DBF_ULONG) {
prompt("No. in VALU")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVA,DBF_ULONG) {
prompt("Total bytes for VALA")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVB,DBF_ULONG) {
prompt("Total bytes for VALB")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVC,DBF_ULONG) {
prompt("Total bytes for VALC")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVD,DBF_ULONG) {
prompt("Total bytes for VALD")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVE,DBF_ULONG) {
prompt("Total bytes for VALE")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVF,DBF_ULONG) {
prompt("Total bytes for VALF")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVG,DBF_ULONG) {
prompt("Total bytes for VALG")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVH,DBF_ULONG) {
prompt("Total bytes for VAlH")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVI,DBF_ULONG) {
prompt("Total bytes for VALI")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVJ,DBF_ULONG) {
prompt("Total bytes for VALJ")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVK,DBF_ULONG) {
prompt("Total bytes for VALK")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVL,DBF_ULONG) {
prompt("Total bytes for VALL")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVM,DBF_ULONG) {
prompt("Total bytes for VALM")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVN,DBF_ULONG) {
prompt("Total bytes for VALN")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVO,DBF_ULONG) {
prompt("Total bytes for VALO")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVP,DBF_ULONG) {
prompt("Total bytes for VALP")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVQ,DBF_ULONG) {
prompt("Total bytes for VALQ")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVR,DBF_ULONG) {
prompt("Total bytes for VALR")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVS,DBF_ULONG) {
prompt("Total bytes for VALS")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVT,DBF_ULONG) {
prompt("Total bytes for VALT")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
field(TOVU,DBF_ULONG) {
prompt("Total bytes for VALU")
promptgroup(GUI_WAVE)
special(SPC_NOMOD)
interest(1)
initial("1")
}
}
- References:
- genSub for EPICS 314? Rozelle Wright
- Navigate by Date:
- Prev:
CA Proxy Gateway (performance tweak release 1.3.3) Ralph . Lange
- Next:
How to set the correct IOC time Cheng Weixing@ssrc
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
<2002>
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
genSub for EPICS 314? Rozelle Wright
- Next:
seq-1.9.6-beta Laznovsky, Michael
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
<2002>
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024