From 8d8f5754a11e0e1444eff6f9f764faf0ccff95b7 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Wed, 29 Nov 1995 14:36:02 +0000 Subject: [PATCH] Changes for replacing default.dctsdt by all ascii files --- src/db/dbLink.c | 5858 --------------------------------------- src/db/dbls.c | 1199 -------- src/iocCore/Makefile.Vx | 4 +- 3 files changed, 3 insertions(+), 7058 deletions(-) delete mode 100644 src/db/dbLink.c delete mode 100644 src/db/dbls.c diff --git a/src/db/dbLink.c b/src/db/dbLink.c deleted file mode 100644 index cdb8e3953..000000000 --- a/src/db/dbLink.c +++ /dev/null @@ -1,5858 +0,0 @@ -/* dbLink.c */ -/* base/src/db $Id$ */ -/* - * Original Author: Bob Dalesio - * Current Author: Marty Kraimer - * Date: 11-7-90 - * - * Experimental Physics and Industrial Control System (EPICS) - * - * Copyright 1991, the Regents of the University of California, - * and the University of Chicago Board of Governors. - * - * This software was produced under U.S. Government contracts: - * (W-7405-ENG-36) at the Los Alamos National Laboratory, - * and (W-31-109-ENG-38) at Argonne National Laboratory. - * - * Initial development by: - * The Controls and Automation Group (AT-8) - * Ground Test Accelerator - * Accelerator Technology Division - * Los Alamos National Laboratory - * - * Co-developed with - * The Controls and Computing Group - * Accelerator Systems Division - * Advanced Photon Source - * Argonne National Laboratory - * - * Modification Log: - * ----------------- - * .01 07-26-91 mrk Allow choices to be retrieved as numeric - * .02 08-13-91 mrk Support db_field_log for dbGetField - * .03 09-30-91 mrk Support for TPRO and DISP - * .04 10-03-91 jba Bug fix in putStringUchar - * .05 11-06-91 jba Moved processing message before record process - * .06 11-26-91 jba Added return to dbGetLink - * Fixed bug in special processing of SPC_MOD (100) - * .07 12-02-91 jba Writing to PROC will always force record process - * .08 02-05-92 jba Changed function arguments from paddr to precord - * .09 03-02-92 jba Added function dbValueSize to replace db_value_size - * .10 04-17-92 rcz put in mrk's dbNameToAddr changes for dbBase - * .11 05-18-92 mrk Changes for database internal structures - * .12 07-16-92 jba Added disable alarm severity, ansi c changes - * .13 08-05-92 jba Removed all references to dbr_field_type - * .14 09-18-92 jba replaced get of disa code with recGblGetLinkValue call - * .15 07-15-93 mrk Changes for new dbStaticLib - * .16 02-02-94 mrk added dbPutNotify and caching - * .17 02-02-94 mrk added init code for tsel - */ - - -/* - * dbGetLink Get via a database link - * dbPutLink Put via a link - * dbGetField Get from outside database - * dbPutField Put from outside database - * dbGet Common get routine - * dbPut Common put routine - * - * dbBufferSize Compute buffer size - * dbValueSizeA Compute size for a field - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -extern struct dbBase *pdbBase; - -/* Added for Channel Access Links */ -long dbCaAddInlink(); -long dbCaGetLink(); -long dbCommonInit(); - - -long dbGetField( -struct dbAddr *paddr, -short dbrType, -void *pbuffer, -long *options, -long *nRequest, -void *pflin -) -{ - struct dbCommon *precord = (struct dbCommon *)(paddr->precord); - long status; - - dbScanLock(precord); - status = dbGet(paddr,dbrType,pbuffer,options,nRequest,pflin); - dbScanUnlock(precord); - return(status); -} - -long dbGetLink( - struct db_link *pdblink, - struct dbCommon *pdest, - short dbrType, - void *pbuffer, - long *options, - long *nRequest -) -{ - struct dbAddr *paddr=(struct dbAddr*)(pdblink->pdbAddr); - struct dbCommon *psource=paddr->precord; - long status; - - if(pdblink->process_passive && psource->scan==0) { - status=dbScanPassive(pdest,psource); - if(status) return(status); - } - if(pdblink->maximize_sevr) recGblSetSevr(pdest,LINK_ALARM,psource->sevr); - - status= dbGet(paddr,dbrType,pbuffer,options,nRequest,NULL); - if(status) recGblRecordError(status,(void *)pdest,"dbGetLink"); - return(status); -} - -long dbPutLink( - struct db_link *pdblink, - struct dbCommon *psource, - short dbrType, - void *pbuffer, - long nRequest -) -{ - struct dbAddr *paddr=(struct dbAddr*)(pdblink->pdbAddr); - struct dbCommon *pdest=paddr->precord; - long status; - - status=dbPut(paddr,dbrType,pbuffer,nRequest); - if(pdblink->maximize_sevr) recGblSetSevr(pdest,LINK_ALARM,psource->sevr); - if(status) return(status); - - if((paddr->pfield==(void *)&pdest->proc) - || (pdblink->process_passive && pdest->scan==0)) { - /*Note: If ppn then dbNotifyCancel will handle reprocessing*/ - /*if dbPutField caused asyn record to process ask for reprocessing*/ - if(!psource->ppn && pdest->putf) pdest->rpro = TRUE; - /* otherwise ask for the record to be processed*/ - else status=dbScanLink(psource,pdest); - } - return(status); -} - -long dbPutField( - struct dbAddr *paddr, - short dbrType, - void *pbuffer, - long nRequest -) -{ - long status; - struct fldDes *pfldDes=(struct fldDes *)(paddr->pfldDes); - struct dbCommon *precord = (struct dbCommon *)(paddr->precord); - - /*check for putField disabled*/ - if(precord->disp) { - if((void *)(&precord->disp) != paddr->pfield) return(0); - } - dbScanLock(precord); - status=dbPut(paddr,dbrType,pbuffer,nRequest); - if(status==0){ - if((paddr->pfield==(void *)&precord->proc) - ||(pfldDes->process_passive && precord->scan==0 && dbrTypepact) { - if(precord->tpro) printf("active: %s\n",precord->name); - precord->rpro = TRUE; - } else { - /*indicate that dbPutField called dbProcess*/ - precord->putf = TRUE; - status=dbProcess(precord); - } - } - } - dbScanUnlock(precord); - return(status); -} - -long dbValueSize( - short dbr_type -) -{ - /* sizes for value associated with each DBR request type */ - static long size[] = { - MAX_STRING_SIZE, /* STRING */ - sizeof(char), /* CHAR */ - sizeof(unsigned char), /* UCHAR */ - sizeof(short), /* SHORT */ - sizeof(unsigned short), /* USHORT */ - sizeof(long), /* LONG */ - sizeof(unsigned long), /* ULONG */ - sizeof(float), /* FLOAT */ - sizeof(double), /* DOUBLE */ - sizeof(unsigned short)}; /* ENUM */ - - return(size[dbr_type]); -} - -long dbBufferSize( - short dbr_type, - long options, - long no_elements -) -{ - long nbytes=0; - - nbytes += dbValueSize(dbr_type) * no_elements; - if(options & DBR_STATUS) nbytes += dbr_status_size; - if(options & DBR_UNITS) nbytes += dbr_units_size; - if(options & DBR_PRECISION) nbytes += dbr_precision_size; - if(options & DBR_TIME) nbytes += dbr_time_size; - if(options & DBR_ENUM_STRS) nbytes += dbr_enumStrs_size; - if(options & DBR_GR_LONG) nbytes += dbr_grLong_size; - if(options & DBR_GR_DOUBLE) nbytes += dbr_grDouble_size; - if(options & DBR_CTRL_LONG) nbytes += dbr_ctrlLong_size; - if(options & DBR_CTRL_DOUBLE)nbytes += dbr_ctrlDouble_size; - if(options & DBR_AL_LONG) nbytes += dbr_alLong_size; - if(options & DBR_AL_DOUBLE) nbytes += dbr_alDouble_size; - return(nbytes); -} - -/* DATABASE ACCESS GET CONVERSION SUPPORT */ - -static long getStringString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=paddr->pfield; - short size=paddr->field_size; - short sizeto; - - /* always force result string to be null terminated*/ - sizeto = size; - if(sizeto>=MAX_STRING_SIZE) sizeto = MAX_STRING_SIZE-1; - - if(nRequest==1 && offset==0) { - strncpy(pbuffer,psrc,sizeto); - *(pbuffer+sizeto) = 0; - return(0); - } - psrc+= (size*offset); - while (nRequest) { - strncpy(pbuffer,psrc,sizeto); - *(pbuffer+sizeto) = 0; - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - psrc=paddr->pfield; - else - psrc += size; - nRequest--; - } - return(0); -} - -static long getStringChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)paddr->pfield; - short value; - - if(nRequest==1 && offset==0) { - if(sscanf(psrc,"%hd",&value) == 1) { - *pbuffer = (char)value; - return(0); - } - else return(-1); - } - psrc += MAX_STRING_SIZE*offset; - while (nRequest) { - if(sscanf(psrc,"%hd",&value) == 1) { - *pbuffer = (char)value; - } else { - return(-1); - } - pbuffer++; - if(++offset==no_elements) - psrc=paddr->pfield; - else - psrc += MAX_STRING_SIZE; - nRequest--; - } - return(0); -} - -static long getStringUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)paddr->pfield; - unsigned short value; - - if(nRequest==1 && offset==0) { - if(sscanf(psrc,"%hu",&value) == 1) { - *pbuffer = (unsigned char)value; - return(0); - } - else return(-1); - } - psrc += MAX_STRING_SIZE*offset; - while (nRequest) { - if(sscanf(psrc,"%hu",&value) == 1) { - *pbuffer = (unsigned char)value; - } else { - return(-1); - } - pbuffer++; - if(++offset==no_elements) - psrc=paddr->pfield; - else - psrc += MAX_STRING_SIZE; - nRequest--; - } - return(0); -} - -static long getStringShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)paddr->pfield; - short value; - - if(nRequest==1 && offset==0) { - if(sscanf(psrc,"%hd",&value) == 1) { - *pbuffer = value; - return(0); - } - else return(-1); - } - psrc += MAX_STRING_SIZE*offset; - while (nRequest) { - if(sscanf(psrc,"%hd",&value) == 1) { - *pbuffer = value; - } else { - return(-1); - } - pbuffer++; - if(++offset==no_elements) - psrc=paddr->pfield; - else - psrc += MAX_STRING_SIZE; - nRequest--; - } - return(0); -} - -static long getStringUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)paddr->pfield; - unsigned short value; - - if(nRequest==1 && offset==0) { - if(sscanf(psrc,"%hu",&value) == 1) { - *pbuffer = value; - return(0); - } - else return(-1); - } - psrc += MAX_STRING_SIZE*offset; - while (nRequest) { - if(sscanf(psrc,"%hu",&value) == 1) { - *pbuffer = value; - } else { - return(-1); - } - pbuffer++; - if(++offset==no_elements) - psrc=paddr->pfield; - else - psrc += MAX_STRING_SIZE; - nRequest--; - } - return(0); -} - -static long getStringLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)paddr->pfield; - long value; - - if(nRequest==1 && offset==0) { - if(sscanf(psrc,"%ld",&value) == 1) { - *pbuffer = value; - return(0); - } - else return(-1); - } - psrc += MAX_STRING_SIZE*offset; - while (nRequest) { - if(sscanf(psrc,"%ld",&value) == 1) { - *pbuffer = value; - } else { - return(-1); - } - pbuffer++; - if(++offset==no_elements) - psrc=paddr->pfield; - else - psrc += MAX_STRING_SIZE; - nRequest--; - } - return(0); -} - -static long getStringUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)paddr->pfield; - unsigned long value; - - if(nRequest==1 && offset==0) { - if(sscanf(psrc,"%lu",&value) == 1) { - *pbuffer = value; - return(0); - } - else return(-1); - } - psrc += MAX_STRING_SIZE*offset; - while (nRequest) { - if(sscanf(psrc,"%lu",&value) == 1) { - *pbuffer = value; - } else { - return(-1); - } - pbuffer++; - if(++offset==no_elements) - psrc=paddr->pfield; - else - psrc += MAX_STRING_SIZE; - nRequest--; - } - return(0); -} - -static long getStringFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)paddr->pfield; - float value; - - if(nRequest==1 && offset==0) { - if(sscanf(psrc,"%f",&value) == 1) { - *pbuffer = value; - return(0); - } else { - return(-1); - } - } - psrc += MAX_STRING_SIZE*offset; - while (nRequest) { - if(sscanf(psrc,"%f",&value) == 1) { - *pbuffer = value; - } else { - return(-1); - } - pbuffer++; - if(++offset==no_elements) - psrc=paddr->pfield; - else - psrc += MAX_STRING_SIZE; - nRequest--; - } - return(0); -} - -static long getStringDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)paddr->pfield; - double value; - - if(nRequest==1 && offset==0) { - if(sscanf(psrc,"%lf",&value) == 1) { - *pbuffer = value; - return(0); - } else { - return(-1); - } - } - psrc += MAX_STRING_SIZE*offset; - while (nRequest) { - if(sscanf(psrc,"%lf",&value) == 1) { - *pbuffer = value; - } else { - return(-1); - } - pbuffer++; - if(++offset==no_elements) - psrc=paddr->pfield; - else - psrc += MAX_STRING_SIZE; - nRequest--; - } - return(0); -} - -static long getStringEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - return(getStringUshort(paddr,pbuffer,nRequest,no_elements,offset)); -} - -static long getCharString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - cvtCharToString(*psrc,pbuffer); - return(0); - } - psrc += offset; - while (nRequest) { - cvtCharToString(*psrc,pbuffer); - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - psrc=(char *)paddr->pfield; - else - psrc++; - nRequest--; - } - return(0); -} - -static long getCharChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getCharUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getCharShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getCharUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getCharLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getCharUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getCharFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getCharDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getCharEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *psrc=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUcharString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *psrc=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - cvtUcharToString(*psrc,pbuffer); - return(0); - } - psrc += offset; - while (nRequest) { - cvtUcharToString(*psrc,pbuffer); - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - psrc=(unsigned char *)paddr->pfield; - else - psrc++; - nRequest--; - } - return(0); -} - -static long getUcharChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *psrc=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUcharUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *psrc=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUcharShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *psrc=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUcharUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *psrc=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUcharLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *psrc=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUcharUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *psrc=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUcharFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *psrc=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUcharDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *psrc=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUcharEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *psrc=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getShortString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *psrc=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - cvtShortToString(*psrc,pbuffer); - return(0); - } - psrc += offset; - while (nRequest) { - cvtShortToString(*psrc,pbuffer); - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - psrc=(short *)paddr->pfield; - else - psrc++; - nRequest--; - } - return(0); -} - -static long getShortChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *psrc=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getShortUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *psrc=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(short *)paddr->pfield; - nRequest--; - } - return(0); -} -static long getShortShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *psrc=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getShortUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *psrc=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getShortLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *psrc=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getShortUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *psrc=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getShortFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *psrc=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getShortDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *psrc=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getShortEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *psrc=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUshortString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - cvtUshortToString(*psrc,pbuffer); - return(0); - } - psrc += offset; - while (nRequest) { - cvtUshortToString(*psrc,pbuffer); - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - psrc=(unsigned short *)paddr->pfield; - else - psrc++; - nRequest--; - } - return(0); -} - -static long getUshortChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUshortUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} -static long getUshortShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUshortUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUshortLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUshortUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUshortFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUshortDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUshortEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getLongString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *psrc=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - cvtLongToString(*psrc,pbuffer); - return(0); - } - psrc += offset; - while (nRequest) { - cvtLongToString(*psrc,pbuffer); - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - psrc=(long *)paddr->pfield; - else - psrc++; - nRequest--; - } - return(0); -} - -static long getLongChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *psrc=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getLongUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *psrc=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getLongShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *psrc=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getLongUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *psrc=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getLongLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *psrc=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getLongUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *psrc=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getLongFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *psrc=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getLongDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *psrc=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getLongEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *psrc=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUlongString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *psrc=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - cvtUlongToString(*psrc,pbuffer); - return(0); - } - psrc += offset; - while (nRequest) { - cvtUlongToString(*psrc,pbuffer); - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - psrc=(unsigned long *)paddr->pfield; - else - psrc++; - nRequest--; - } - return(0); -} - -static long getUlongChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *psrc=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUlongUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *psrc=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUlongShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *psrc=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUlongUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *psrc=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUlongLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *psrc=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUlongUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *psrc=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUlongFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *psrc=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUlongDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *psrc=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getUlongEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *psrc=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getFloatString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *psrc=(float *)(paddr->pfield); - long status; - int precision; - short record_type=paddr->record_type; - struct rset *prset; - - if((prset=GET_PRSET(pdbBase->precSup,record_type)) && (prset->get_precision)) - status = (*prset->get_precision)(paddr,&precision); - else - status=S_db_precision; - if(status) { - recGblRecSupError(status,paddr,"dbGet","get_precision"); - return(status); - } - - if(nRequest==1 && offset==0) { - cvtFloatToString(*psrc,pbuffer,precision); - return(0); - } - psrc += offset; - while (nRequest) { - cvtFloatToString(*psrc,pbuffer,precision); - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - psrc=(float *)paddr->pfield; - else - psrc++; - nRequest--; - } - return(0); -} - -static long getFloatChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *psrc=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getFloatUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *psrc=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getFloatShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *psrc=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getFloatUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *psrc=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getFloatLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *psrc=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getFloatUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *psrc=(float *)(paddr->pfield); - long ltemp; /*vxWorks does not support float to unsigned long*/ - - if(nRequest==1 && offset==0) { - ltemp = *psrc; - *pbuffer = ltemp; - return(0); - } - psrc += offset; - while (nRequest) { - ltemp = *psrc++; - *pbuffer++ = ltemp; - if(++offset==no_elements) psrc=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getFloatFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *psrc=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getFloatDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *psrc=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getFloatEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *psrc=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getDoubleString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *psrc=(double *)(paddr->pfield); - long status; - int precision; - short record_type=paddr->record_type; - struct rset *prset; - - if((prset=GET_PRSET(pdbBase->precSup,record_type)) && (prset->get_precision)) - status = (*prset->get_precision)(paddr,&precision); - else - status=S_db_precision; - if(status) { - recGblRecSupError(status,paddr,"dbGet","get_precision"); - return(status); - } - - if(nRequest==1 && offset==0) { - cvtDoubleToString(*psrc,pbuffer,precision); - return(0); - } - psrc += offset; - while (nRequest) { - cvtDoubleToString(*psrc,pbuffer,precision); - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - psrc=(double *)paddr->pfield; - else - psrc++; - nRequest--; - } - return(0); -} - -static long getDoubleChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *psrc=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getDoubleUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *psrc=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getDoubleShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *psrc=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getDoubleUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *psrc=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getDoubleLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *psrc=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getDoubleUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *psrc=(double *)(paddr->pfield); - long ltemp; /*vxWorks does not support double to unsigned long*/ - - if(nRequest==1 && offset==0) { - ltemp = *psrc; - *pbuffer = ltemp; - return(0); - } - psrc += offset; - while (nRequest) { - ltemp = *psrc++; - *pbuffer++ = ltemp; - if(++offset==no_elements) psrc=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getDoubleFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *psrc=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getDoubleDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *psrc=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getDoubleEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *psrc=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getEnumString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - struct rset *prset; - short record_type=(paddr->record_type); - long status; - - if((prset=GET_PRSET(pdbBase->precSup,record_type)) && (prset->get_enum_str)) - return( (*prset->get_enum_str)(paddr,pbuffer) ); - status=S_db_noRSET; - recGblRecSupError(status,paddr,"dbGet","get_enum_str"); - return(S_db_badDbrtype); -} - -static long getEnumChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getEnumUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getEnumShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getEnumUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getEnumLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getEnumUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getEnumFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getEnumDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getEnumEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *psrc=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pbuffer = *psrc; - return(0); - } - psrc += offset; - while (nRequest) { - *pbuffer++ = *psrc++; - if(++offset==no_elements) psrc=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long getGchoiceString(paddr,pbuffer,nRequest,no_elements,offset) - struct dbAddr *paddr; - char *pbuffer; - long nRequest; - long no_elements; - long offset; -{ - short choice_set=paddr->choice_set; - short choice_ind= *((short*)paddr->pfield); - char *pchoice; - struct choiceSet *pchoiceSet; - - if(no_elements!=1){ - recGblDbaddrError(S_db_onlyOne,paddr,"dbGet(getGchoiceString)"); - return(S_db_onlyOne); - } - if((!(pchoiceSet=GET_PCHOICE_SET(pdbBase->pchoiceGbl,choice_set))) - || (!(pchoice=GET_CHOICE(pchoiceSet,choice_ind))) ) { - recGblDbaddrError(S_db_badChoice,paddr,"dbGet(getGchoiceString)"); - return(S_db_badChoice); - } - strncpy(pbuffer,pchoice,MAX_STRING_SIZE); - return(0); -} - -static long getCchoiceString(paddr,pbuffer,nRequest,no_elements,offset) - struct dbAddr *paddr; - char *pbuffer; - long nRequest; - long no_elements; - long offset; -{ - short choice_ind= *((short*)paddr->pfield); - char *pchoice; - - if(no_elements!=1){ - recGblDbaddrError(S_db_onlyOne,paddr,"dbGet(getCchoiceString)"); - return(S_db_onlyOne); - } - if (!(pchoice=GET_CHOICE(pdbBase->pchoiceCvt,choice_ind))) { - recGblDbaddrError(S_db_badChoice,paddr,"dbGet(getCchoiceString)"); - return(S_db_badChoice); - } - strncpy(pbuffer,pchoice,MAX_STRING_SIZE); - return(0); -} - - -static long getRchoiceString(paddr,pbuffer,nRequest,no_elements,offset) - struct dbAddr *paddr; - char *pbuffer; - long nRequest; - long no_elements; - long offset; -{ - short choice_set=paddr->choice_set; - short choice_ind= *((short*)paddr->pfield); - struct choiceSet *pchoiceSet; - struct arrChoiceSet *parrChoiceSet; - char *pchoice; - - if(no_elements!=1){ - recGblDbaddrError(S_db_onlyOne,paddr,"dbGet(getRchoiceString)"); - return(S_db_onlyOne); - } - if((!(parrChoiceSet=GET_PARR_CHOICE_SET(pdbBase->pchoiceRec,(paddr->record_type)))) - || (!(pchoiceSet=GET_PCHOICE_SET(parrChoiceSet,choice_set))) - || (!(pchoice=GET_CHOICE(pchoiceSet,choice_ind))) ) { - recGblDbaddrError(S_db_badChoice,paddr,"dbGet(getRchoiceString)"); - return(S_db_badChoice); - } - strncpy(pbuffer,pchoice,MAX_STRING_SIZE); - return(0); -} - - -static long getDchoiceString(paddr,pbuffer,nRequest,no_elements,offset) - struct dbAddr *paddr; - char *pbuffer; - long nRequest; - long no_elements; - long offset; -{ - short choice_ind= *((short*)paddr->pfield); - struct devChoiceSet *pdevChoiceSet; - struct devChoice *pdevChoice; - - if(no_elements!=1){ - recGblDbaddrError(S_db_onlyOne,paddr,"dbGet(getDchoiceString)"); - return(S_db_onlyOne); - } - if((!(pdevChoiceSet=GET_PDEV_CHOICE_SET(pdbBase->pchoiceDev,paddr->record_type))) - || (!(pdevChoice=GET_DEV_CHOICE(pdevChoiceSet,choice_ind))) ) { - recGblDbaddrError(S_db_badChoice,paddr,"dbGet(getRchoiceString)"); - return(S_db_badChoice); - } - strncpy(pbuffer,pdevChoice->pchoice,MAX_STRING_SIZE); - return(0); -} - -/* This is the table of routines for converting database fields */ -/* the rows represent the field type of the database field */ -/* the columns represent the types of the buffer in which they are placed */ - -/* buffer types are******************************************************** - DBR_STRING, DBR_CHR, DBR_UCHAR, DBR_SHORT, DBR_USHORT, - DBR_LONG, DBR_ULONG, DBR_FLOAT, DBR_DOUBLE, DBR_ENUM - ***************************************************************************/ - -long (*get_convert_table[DBF_DEVCHOICE+1][DBR_ENUM+1])() = { - -/* source is a DBF_STRING */ -{getStringString, getStringChar, getStringUchar, getStringShort, getStringUshort, - getStringLong, getStringUlong, getStringFloat, getStringDouble, getStringEnum}, -/* source is a DBF_CHAR */ -{getCharString, getCharChar, getCharUchar, getCharShort, getCharUshort, - getCharLong, getCharUlong, getCharFloat, getCharDouble, getCharEnum}, -/* source is a DBF_UCHAR */ -{getUcharString, getUcharChar, getUcharUchar, getUcharShort, getUcharUshort, - getUcharLong, getUcharUlong, getUcharFloat, getUcharDouble, getUcharEnum}, -/* source is a DBF_SHORT */ -{getShortString, getShortChar, getShortUchar, getShortShort, getShortUshort, - getShortLong, getShortUlong, getShortFloat, getShortDouble, getShortEnum}, -/* source is a DBF_USHORT */ -{getUshortString, getUshortChar, getUshortUchar, getUshortShort, getUshortUshort, - getUshortLong, getUshortUlong, getUshortFloat, getUshortDouble, getUshortEnum}, -/* source is a DBF_LONG */ -{getLongString, getLongChar, getLongUchar, getLongShort, getLongUshort, - getLongLong, getLongUlong, getLongFloat, getLongDouble, getLongEnum}, -/* source is a DBF_ULONG */ -{getUlongString, getUlongChar, getUlongUchar, getUlongShort, getUlongUshort, - getUlongLong, getUlongUlong, getUlongFloat, getUlongDouble, getUlongEnum}, -/* source is a DBF_FLOAT */ -{getFloatString, getFloatChar, getFloatUchar, getFloatShort, getFloatUshort, - getFloatLong, getFloatUlong, getFloatFloat, getFloatDouble, getFloatEnum}, -/* source is a DBF_DOUBLE */ -{getDoubleString, getDoubleChar, getDoubleUchar, getDoubleShort, getDoubleUshort, - getDoubleLong, getDoubleUlong, getDoubleFloat, getDoubleDouble, getDoubleEnum}, -/* source is a DBF_ENUM */ -{getEnumString, getEnumChar, getEnumUchar, getEnumShort, getEnumUshort, - getEnumLong, getEnumUlong, getEnumFloat, getEnumDouble, getEnumEnum}, -/* source is a DBF_GBLCHOICE */ -{getGchoiceString,getEnumChar, getEnumUchar, getEnumShort, getEnumUshort, - getEnumLong, getEnumUlong, getEnumFloat, getEnumDouble, getEnumEnum}, -/* source is a DBF_CVTCHOICE */ -{getCchoiceString,getEnumChar, getEnumUchar, getEnumShort, getEnumUshort, - getEnumLong, getEnumUlong, getEnumFloat, getEnumDouble, getEnumEnum}, -/* source is a DBF_RECCHOICE */ -{getRchoiceString,getEnumChar, getEnumUchar, getEnumShort, getEnumUshort, - getEnumLong, getEnumUlong, getEnumFloat, getEnumDouble, getEnumEnum}, -/* source is a DBF_DEVCHOICE */ -{getDchoiceString,getEnumChar, getEnumUchar, getEnumShort, getEnumUshort, - getEnumLong, getEnumUlong, getEnumFloat, getEnumDouble, getEnumEnum} -}; - - -/* forward references for private routines used by dbGet */ -static void get_enum_strs(struct dbAddr *paddr,void **ppbuffer, - struct rset *prset,long *options); -static void get_graphics(struct dbAddr *paddr,void **ppbuffer, - struct rset *prset,long *options); -static void get_control(struct dbAddr *paddr,void **ppbuffer, - struct rset *prset,long *options); -static void get_alarm(struct dbAddr *paddr,void **ppbuffer, - struct rset *prset,long *options); - -long dbGet( -struct dbAddr *paddr, -short dbrType, -void *pbuffer, -long *options, -long *nRequest, -void *pflin -) -{ - db_field_log *pfl= (db_field_log *)pflin; - long no_elements=paddr->no_elements; - long offset; - struct rset *prset; - short field_type=paddr->field_type; - long (*pconvert_routine)(); - struct dbCommon *pcommon; - long status; - - - prset=GET_PRSET(pdbBase->precSup,paddr->record_type); - - if(!(*options)) goto GET_DATA; - - /* Process options */ - pcommon = (struct dbCommon *)(paddr->precord); - if( (*options) & DBR_STATUS ) { - if(pfl!=NULL) { - *((unsigned short *)pbuffer)++ = pfl->stat; - *((unsigned short *)pbuffer)++ = pfl->sevr; - } else { - *((unsigned short *)pbuffer)++ = pcommon->stat; - *((unsigned short *)pbuffer)++ = pcommon->sevr; - } - *((unsigned short *)pbuffer)++ = pcommon->acks; - *((unsigned short *)pbuffer)++ = pcommon->ackt; - } - if( (*options) & DBR_UNITS ) { - if( prset && prset->get_units ){ - char * pchr = (char *)pbuffer; - - (*prset->get_units)(paddr,pchr); - pchr[DB_UNITS_SIZE-1] = '\0'; - } else { - memset(pbuffer,'\0',dbr_units_size); - *options = (*options) ^ DBR_UNITS; /*Turn off DBR_UNITS*/ - } - pbuffer = (char *)pbuffer + dbr_units_size; - } - if( (*options) & DBR_PRECISION ) { - struct dbr_precision *pdbr_precision=( struct dbr_precision *)pbuffer; - - if((field_type==DBF_FLOAT || field_type==DBF_DOUBLE) && prset && prset->get_precision ){ - (*prset->get_precision)(paddr,pbuffer); - if(pdbr_precision->field_width<=0) - pdbr_precision->field_width = pdbr_precision->precision + 5; - } else { - memset(pbuffer,'\0',dbr_precision_size); - *options = (*options) ^ DBR_PRECISION; /*Turn off DBR_PRECISION*/ - } - pbuffer = (char *)pbuffer + dbr_precision_size; - } - if( (*options) & DBR_TIME ) { - if(pfl!=NULL) { - *((unsigned long *)pbuffer)++ = pfl->time.secPastEpoch; - *((unsigned long *)pbuffer)++ = pfl->time.nsec; - } else { - *((unsigned long *)pbuffer)++ = pcommon->time.secPastEpoch; - *((unsigned long *)pbuffer)++ = pcommon->time.nsec; - } - } - if( (*options) & DBR_ENUM_STRS ) get_enum_strs(paddr,&pbuffer,prset,options); - if( (*options) & (DBR_GR_LONG|DBR_GR_DOUBLE )) - get_graphics(paddr,&pbuffer,prset,options); - if((*options) & (DBR_CTRL_LONG | DBR_CTRL_DOUBLE )) - get_control(paddr,&pbuffer,prset,options); - if((*options) & (DBR_AL_LONG | DBR_AL_DOUBLE )) - get_alarm(paddr,&pbuffer,prset,options); - - -GET_DATA: - - if(*nRequest==0) return(0); - /* Check for valid request */ - if( INVALID_DB_REQ(dbrType) || (field_type>DBF_DEVCHOICE) ){ - char message[80]; - - sprintf(message,"dbGet - database request type is %d",dbrType); - recGblDbaddrError(S_db_badDbrtype,paddr,message); - return(S_db_badDbrtype); - } - - /* check for array */ - if( no_elements>1 && prset && (prset->get_array_info) ) { - status = (*prset->get_array_info)(paddr,&no_elements,&offset); - } - else offset=0; - if(no_elements<(*nRequest)) *nRequest = no_elements; - if(!(pconvert_routine=get_convert_table[field_type][dbrType])) { - char message[80]; - - sprintf(message,"dbGet - database request type is %d",dbrType); - recGblDbaddrError(S_db_badDbrtype,paddr,message); - return(S_db_badDbrtype); - } - /* convert database field to buffer type and place it in the buffer */ - if(pfl!=NULL) { - struct dbAddr localAddr; - - memcpy(&localAddr,paddr,sizeof(localAddr)); - /*Use longest field size*/ - localAddr.pfield = (char *)&pfl->field; - status=(*pconvert_routine)(&localAddr,pbuffer,*nRequest, - no_elements,offset); - } else { - status=(*pconvert_routine)(paddr,pbuffer,*nRequest, - no_elements,offset); - } - return(status); -} - -static void get_enum_strs(struct dbAddr *paddr,void **ppbuffer, - struct rset *prset,long *options) -{ - short field_type=paddr->field_type; - struct choiceSet *pchoiceSet; - struct arrChoiceSet *parrChoiceSet; - struct devChoice *pdevChoice; - struct devChoiceSet *pdevChoiceSet; - unsigned long no_str; - char *ptemp; - struct dbr_enumStrs *pdbr_enumStrs=(struct dbr_enumStrs*)(*ppbuffer); - int i; - - memset(pdbr_enumStrs,'\0',dbr_enumStrs_size); - switch(field_type) { case DBF_ENUM: if( prset && prset->get_enum_strs ) { - (*prset->get_enum_strs)(paddr,pdbr_enumStrs); - } else { - *options = (*options)^DBR_ENUM_STRS;/*Turn off option*/ - } - break; - case DBF_GBLCHOICE: - pchoiceSet=GET_PCHOICE_SET(pdbBase->pchoiceGbl,paddr->choice_set); - goto choice_common; - case DBF_CVTCHOICE: - pchoiceSet=pdbBase->pchoiceCvt; - goto choice_common; - case DBF_RECCHOICE: - parrChoiceSet=GET_PARR_CHOICE_SET(pdbBase->pchoiceRec, - paddr->record_type); - pchoiceSet=GET_PCHOICE_SET(parrChoiceSet,paddr->choice_set); -choice_common: - if(pchoiceSet==NULL) { - *options = (*options)^DBR_ENUM_STRS;/*Turn off option*/ - break; - } - i = sizeof(pdbr_enumStrs->strs)/sizeof(pdbr_enumStrs->strs[0]); - no_str=min(pchoiceSet->number,i); - pdbr_enumStrs->no_str = no_str; - ptemp = &(pdbr_enumStrs->strs[0][0]); - for (i=0; ipapChoice[i]==NULL) *ptemp=0; - else { - strncpy(ptemp,pchoiceSet->papChoice[i],sizeof(pdbr_enumStrs->strs[0])); - *(ptemp+sizeof(pdbr_enumStrs->strs[0])-1) = 0; - } - ptemp += sizeof(pdbr_enumStrs->strs[0]); - } - break; - case DBF_DEVCHOICE: - pdevChoiceSet=GET_PDEV_CHOICE_SET(pdbBase->pchoiceDev, - paddr->record_type); - if(pdevChoiceSet==NULL) { - *options = (*options)^DBR_ENUM_STRS;/*Turn off option*/ - break; - } - i = sizeof(pdbr_enumStrs->strs)/sizeof(pdbr_enumStrs->strs[0]); - no_str=min(pdevChoiceSet->number,i); - pdbr_enumStrs->no_str = no_str; - ptemp = &(pdbr_enumStrs->strs[0][0]); - for (i=0; ipchoice==NULL) - *ptemp=0; - else { - strncpy(ptemp,pdevChoice->pchoice,sizeof(pdbr_enumStrs->strs[0])); - *(ptemp+sizeof(pdbr_enumStrs->strs[0])-1) = 0; - } - ptemp += sizeof(pdbr_enumStrs->strs[0]); - } - break; - default: - *options = (*options)^DBR_ENUM_STRS;/*Turn off option*/ - break; - } - *ppbuffer = ((char *)*ppbuffer) + dbr_enumStrs_size; - return; -} - -static void get_graphics(struct dbAddr *paddr,void **ppbuffer, - struct rset *prset,long *options) -{ - struct dbr_grDouble grd; - int got_data=FALSE; - - if( prset && prset->get_graphic_double ) { - (*prset->get_graphic_double)(paddr,&grd); - got_data=TRUE; - } - if( (*options) & (DBR_GR_LONG) ) { - char *pbuffer=*ppbuffer; - - if(got_data) { - struct dbr_grLong *pgr=(struct dbr_grLong*)pbuffer; - pgr->upper_disp_limit = grd.upper_disp_limit; - pgr->lower_disp_limit = grd.lower_disp_limit; - } else { - memset(pbuffer,'\0',dbr_grLong_size); - *options = (*options) ^ DBR_GR_LONG; /*Turn off option*/ - } - *ppbuffer = ((char *)*ppbuffer) + dbr_grLong_size; - } - if( (*options) & (DBR_GR_DOUBLE) ) { - char *pbuffer=*ppbuffer; - - if(got_data) { - struct dbr_grDouble *pgr=(struct dbr_grDouble*)pbuffer; - pgr->upper_disp_limit = grd.upper_disp_limit; - pgr->lower_disp_limit = grd.lower_disp_limit; - } else { - memset(pbuffer,'\0',dbr_grDouble_size); - *options = (*options) ^ DBR_GR_DOUBLE; /*Turn off option*/ - } - *ppbuffer = ((char *)*ppbuffer) + dbr_grDouble_size; - } - return; -} - -static void get_control(struct dbAddr *paddr,void **ppbuffer, - struct rset *prset,long *options) -{ - struct dbr_ctrlDouble ctrld; - int got_data=FALSE; - - if( prset && prset->get_control_double ) { - (*prset->get_control_double)(paddr,&ctrld); - got_data=TRUE; - } - if( (*options) & (DBR_CTRL_LONG) ) { - char *pbuffer=*ppbuffer; - - if(got_data) { - struct dbr_ctrlLong *pctrl=(struct dbr_ctrlLong*)pbuffer; - pctrl->upper_ctrl_limit = ctrld.upper_ctrl_limit; - pctrl->lower_ctrl_limit = ctrld.lower_ctrl_limit; - } else { - memset(pbuffer,'\0',dbr_ctrlLong_size); - *options = (*options) ^ DBR_CTRL_LONG; /*Turn off option*/ - } - *ppbuffer = ((char *)*ppbuffer) + dbr_ctrlLong_size; - } - if( (*options) & (DBR_CTRL_DOUBLE) ) { - char *pbuffer=*ppbuffer; - - if(got_data) { - struct dbr_ctrlDouble *pctrl=(struct dbr_ctrlDouble*)pbuffer; - pctrl->upper_ctrl_limit = ctrld.upper_ctrl_limit; - pctrl->lower_ctrl_limit = ctrld.lower_ctrl_limit; - } else { - memset(pbuffer,'\0',dbr_ctrlDouble_size); - *options = (*options) ^ DBR_CTRL_DOUBLE; /*Turn off option*/ - } - *ppbuffer = ((char *)*ppbuffer) + dbr_ctrlDouble_size; - } - return; -} - -static void get_alarm(struct dbAddr *paddr,void **ppbuffer, - struct rset *prset,long *options) -{ - struct dbr_alDouble ald; - int got_data=FALSE; - - if( prset && prset->get_alarm_double ) { - (*prset->get_alarm_double)(paddr,&ald); - got_data=TRUE; - } - if( (*options) & (DBR_AL_LONG) ) { - char *pbuffer=*ppbuffer; - - if(got_data) { - struct dbr_alLong *pal=(struct dbr_alLong*)pbuffer; - pal->upper_alarm_limit = ald.upper_alarm_limit; - pal->upper_warning_limit = ald.upper_warning_limit; - pal->lower_warning_limit = ald.lower_warning_limit; - pal->lower_alarm_limit = ald.lower_alarm_limit; - } else { - memset(pbuffer,'\0',dbr_alLong_size); - *options = (*options) ^ DBR_AL_LONG; /*Turn off option*/ - } - *ppbuffer = ((char *)*ppbuffer) + dbr_alLong_size; - } - if( (*options) & (DBR_AL_DOUBLE) ) { - char *pbuffer=*ppbuffer; - - if(got_data) { - struct dbr_alDouble *pal=(struct dbr_alDouble*)pbuffer; - pal->upper_alarm_limit = ald.upper_alarm_limit; - pal->upper_warning_limit = ald.upper_warning_limit; - pal->lower_warning_limit = ald.lower_warning_limit; - pal->lower_alarm_limit = ald.lower_alarm_limit; - } else { - memset(pbuffer,'\0',dbr_alDouble_size); - *options = (*options) ^ DBR_AL_DOUBLE; /*Turn off option*/ - } - *ppbuffer = ((char *)*ppbuffer) + dbr_alDouble_size; - } - return; -} - -/* DATABASE ACCESS PUT CONVERSION SUPPORT */ - -static long putStringString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=paddr->pfield; - short size=paddr->field_size; - - if(nRequest==1 && offset==0) { - strncpy(pdest,pbuffer,size); - *(pdest+size-1) = 0; - return(0); - } - pdest+= (size*offset); - while (nRequest) { - strncpy(pdest,pbuffer,size); - *(pdest+size-1) = 0; - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - pdest=paddr->pfield; - else - pdest += size; - nRequest--; - } - return(0); -} - -static long putStringChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)paddr->pfield; - short value; - - if(nRequest==1 && offset==0) { - if(sscanf(pbuffer,"%hd",&value) == 1) { - *pdest = (char)value; - return(0); - } - else return(-1); - } - pdest += offset; - while (nRequest) { - if(sscanf(pbuffer,"%hd",&value) == 1) { - *pdest = (char)value; - } else { - return(-1); - } - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - pdest=paddr->pfield; - else - pdest++; - nRequest--; - } - return(0); -} - -static long putStringUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *pdest=(unsigned char *)paddr->pfield; - unsigned short value; - - if(nRequest==1 && offset==0) { - if(sscanf(pbuffer,"%hu",&value) == 1) { - *pdest = (unsigned char)value; - return(0); - } - else return(-1); - } - pdest += offset; - while (nRequest) { - if(sscanf(pbuffer,"%hu",&value) == 1) { - *pdest = (unsigned char)value; - } else { - return(-1); - } - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - pdest=paddr->pfield; - else - pdest++; - nRequest--; - } - return(0); -} - -static long putStringShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *pdest=(short *)paddr->pfield; - short value; - - if(nRequest==1 && offset==0) { - if(sscanf(pbuffer,"%hd",&value) == 1) { - *pdest = value; - return(0); - } - else return(-1); - } - pdest += offset; - while (nRequest) { - if(sscanf(pbuffer,"%hd",&value) == 1) { - *pdest = value; - } else { - return(-1); - } - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - pdest=paddr->pfield; - else - pdest++; - nRequest--; - } - return(0); -} - -static long putStringUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)paddr->pfield; - float value; - - /*Convert to float first so that numbers like 1.0e3 convert properly*/ - /*Problem was old database access said to get unsigned short as float*/ - if(nRequest==1 && offset==0) { - if(sscanf(pbuffer,"%f",&value) == 1) { - *pdest = (unsigned short)value; - return(0); - } - else return(-1); - } - pdest += offset; - while (nRequest) { - if(sscanf(pbuffer,"%f",&value) == 1) { - *pdest = (unsigned short)value; - } else { - return(-1); - } - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - pdest=paddr->pfield; - else - pdest++; - nRequest--; - } - return(0); -} - -static long putStringLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *pdest=(long *)paddr->pfield; - long value; - - if(nRequest==1 && offset==0) { - if(sscanf(pbuffer,"%ld",&value) == 1) { - *pdest = value; - return(0); - } - else return(-1); - } - pdest += offset; - while (nRequest) { - if(sscanf(pbuffer,"%ld",&value) == 1) { - *pdest = value; - } else { - return(-1); - } - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - pdest=paddr->pfield; - else - pdest++; - nRequest--; - } - return(0); -} - -static long putStringUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *pdest=(unsigned long *)paddr->pfield; - double value; - - /*Convert to double first so that numbers like 1.0e3 convert properly*/ - /*Problem was old database access said to get unsigned long as double*/ - if(nRequest==1 && offset==0) { - if(sscanf(pbuffer,"%lf",&value) == 1) { - *pdest = (unsigned long)value; - return(0); - } - else return(-1); - } - pdest += offset; - while (nRequest) { - if(sscanf(pbuffer,"%lf",&value) == 1) { - *pdest = (unsigned long)value; - } else { - return(-1); - } - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - pdest=paddr->pfield; - else - pdest++; - nRequest--; - } - return(0); -} - -static long putStringFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *pdest=(float *)paddr->pfield; - float value; - - if(nRequest==1 && offset==0) { - if(sscanf(pbuffer,"%f",&value) == 1) { - *pdest = value; - return(0); - } else { - return(-1); - } - } - pdest += offset; - while (nRequest) { - if(sscanf(pbuffer,"%f",&value) == 1) { - *pdest = value; - } else { - return(-1); - } - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - pdest=paddr->pfield; - else - pdest++; - nRequest--; - } - return(0); -} - -static long putStringDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *pdest=(double *)paddr->pfield; - double value; - - if(nRequest==1 && offset==0) { - if(sscanf(pbuffer,"%lf",&value) == 1) { - *pdest = value; - return(0); - } else { - return(-1); - } - } - pdest += offset; - while (nRequest) { - if(sscanf(pbuffer,"%lf",&value) == 1) { - *pdest = value; - } else { - return(-1); - } - pbuffer += MAX_STRING_SIZE; - if(++offset==no_elements) - pdest=paddr->pfield; - else - pdest++; - nRequest--; - } - return(0); -} - -static long putStringEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - struct rset *prset; - short record_type=(paddr->record_type); - unsigned short *pfield= (unsigned short*)(paddr->pfield); - long status; - unsigned int nchoices,ind; - int nargs,nchars; - struct dbr_enumStrs enumStrs; - - if((prset=GET_PRSET(pdbBase->precSup,record_type)) - && (prset->put_enum_str)) { - status = (*prset->put_enum_str)(paddr,pbuffer); - if(!status) return(0); - if(prset->get_enum_strs) { - status = (*prset->get_enum_strs)(paddr,&enumStrs); - if(!status) { - nchoices = enumStrs.no_str; - nargs = sscanf(pbuffer," %u %n",&ind,&nchars); - if(nargs==1 && nchars==strlen(pbuffer) && indchoice_set; - unsigned short *pfield= (unsigned short*)(paddr->pfield); - char *pchoice; - struct choiceSet *pchoiceSet; - unsigned int nchoices,ind; - int nargs,nchars; - - if(no_elements!=1){ - recGblDbaddrError(S_db_onlyOne,paddr,"dbPut(putStringGchoice)"); - return(S_db_onlyOne); - } - if(pchoiceSet=GET_PCHOICE_SET(pdbBase->pchoiceGbl,choice_set)) { - nchoices = pchoiceSet->number; - for(ind=0; indpapChoice[ind])) continue; - if(strcmp(pchoice,pbuffer)==0) { - *pfield = ind; - return(0); - } - } - nargs = sscanf(pbuffer," %u %n",&ind,&nchars); - if(nargs==1 && nchars==strlen(pbuffer) && indpfield); - char *pchoice; - struct choiceSet *pchoiceSet; - unsigned int nchoices,ind; - int nargs,nchars; - - if(no_elements!=1){ - recGblDbaddrError(S_db_onlyOne,paddr,"dbPut(putStringCchoice)"); - return(S_db_onlyOne); - } - if(pchoiceSet=pdbBase->pchoiceCvt) { - nchoices = pchoiceSet->number; - for(ind=0; indpapChoice[ind])) continue; - if(strcmp(pchoice,pbuffer)==0) { - *pfield=ind; - return(0); - } - } - nargs = sscanf(pbuffer," %u %n",&ind,&nchars); - if(nargs==1 && nchars==strlen(pbuffer) && indchoice_set; - unsigned short *pfield= (unsigned short*)(paddr->pfield); - char *pchoice; - struct choiceSet *pchoiceSet; - struct arrChoiceSet *parrChoiceSet; - unsigned int nchoices,ind; - int nargs,nchars; - - if(no_elements!=1){ - recGblDbaddrError(S_db_onlyOne,paddr,"dbPut(putStringRchoice)"); - return(S_db_onlyOne); - } - if((parrChoiceSet=GET_PARR_CHOICE_SET(pdbBase->pchoiceRec,(paddr->record_type))) - && (pchoiceSet=GET_PCHOICE_SET(parrChoiceSet,choice_set))) { - nchoices = pchoiceSet->number; - for(ind=0; indpapChoice[ind])) continue; - if(strcmp(pchoice,pbuffer)==0) { - *pfield=ind; - return(0); - } - } - nargs = sscanf(pbuffer," %u %n",&ind,&nchars); - if(nargs==1 && nchars==strlen(pbuffer) && indpfield); - struct devChoiceSet *pdevChoiceSet; - char *pchoice; - unsigned int nchoices,ind; - int nargs,nchars; - - if(no_elements!=1){ - recGblDbaddrError(S_db_onlyOne,paddr,"dbPut(putStringDchoice)"); - return(S_db_onlyOne); - } - if(pdevChoiceSet=GET_PDEV_CHOICE_SET(pdbBase->pchoiceDev,paddr->record_type)) { - nchoices = pdevChoiceSet->number; - for(ind=0; indpapDevChoice[ind]->pchoice)) continue; - if(strcmp(pchoice,pbuffer)==0) { - *pfield=ind; - return(0); - } - } - nargs = sscanf(pbuffer," %u %n",&ind,&nchars); - if(nargs==1 && nchars==strlen(pbuffer) && indpfield); - short size=paddr->field_size; - - - if(nRequest==1 && offset==0) { - cvtCharToString(*pbuffer,pdest); - return(0); - } - pdest += (size*offset); - while (nRequest) { - cvtCharToString(*pbuffer,pdest); - pbuffer++; - if(++offset==no_elements) - pdest=paddr->pfield; - else - pdest += size; - nRequest--; - } - return(0); -} - -static long putCharChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putCharUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *pdest=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putCharShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *pdest=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putCharUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putCharLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *pdest=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putCharUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *pdest=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putCharFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *pdest=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putCharDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *pdest=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putCharEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUcharString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - short size=paddr->field_size; - - - if(nRequest==1 && offset==0) { - cvtUcharToString(*pbuffer,pdest); - return(0); - } - pdest += (size*offset); - while (nRequest) { - cvtUcharToString(*pbuffer,pdest); - pbuffer++; - if(++offset==no_elements) - pdest=paddr->pfield; - else - pdest += size; - nRequest--; - } - return(0); -} - -static long putUcharChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUcharUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *pdest=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUcharShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *pdest=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUcharUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUcharLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *pdest=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUcharUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *pdest=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUcharFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *pdest=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUcharDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *pdest=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUcharEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned char *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putShortString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - short size=paddr->field_size; - - - if(nRequest==1 && offset==0) { - cvtShortToString(*pbuffer,pdest); - return(0); - } - pdest += (size*offset); - while (nRequest) { - cvtShortToString(*pbuffer,pdest); - pbuffer++; - if(++offset==no_elements) - pdest=(char *)paddr->pfield; - else - pdest += size; - nRequest--; - } - return(0); -} - -static long putShortChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putShortUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *pdest=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putShortShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *pdest=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putShortUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putShortLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *pdest=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putShortUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *pdest=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putShortFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *pdest=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putShortDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *pdest=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putShortEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUshortString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - short size=paddr->field_size; - - - if(nRequest==1 && offset==0) { - cvtUshortToString(*pbuffer,pdest); - return(0); - } - pdest += (size*offset); - while (nRequest) { - cvtUshortToString(*pbuffer,pdest); - pbuffer++; - if(++offset==no_elements) - pdest=(char *)paddr->pfield; - else - pdest += size; - nRequest--; - } - return(0); -} - -static long putUshortChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUshortUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *pdest=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUshortShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *pdest=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUshortUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUshortLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *pdest=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUshortUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *pdest=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUshortFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *pdest=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUshortDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *pdest=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUshortEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putLongString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - short size=paddr->field_size; - - - if(nRequest==1 && offset==0) { - cvtLongToString(*pbuffer,pdest); - return(0); - } - pdest += (size*offset); - while (nRequest) { - cvtLongToString(*pbuffer,pdest); - pbuffer++; - if(++offset==no_elements) - pdest=(char *)paddr->pfield; - else - pdest += size; - nRequest--; - } - return(0); -} - -static long putLongChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putLongUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *pdest=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putLongShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *pdest=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putLongUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putLongLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *pdest=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putLongUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *pdest=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putLongFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *pdest=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putLongDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *pdest=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putLongEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUlongString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - short size=paddr->field_size; - - - if(nRequest==1 && offset==0) { - cvtUlongToString(*pbuffer,pdest); - return(0); - } - pdest += (size*offset); - while (nRequest) { - cvtUlongToString(*pbuffer,pdest); - pbuffer++; - if(++offset==no_elements) - pdest=(char *)paddr->pfield; - else - pdest += size; - nRequest--; - } - return(0); -} - -static long putUlongChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUlongUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *pdest=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUlongShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *pdest=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUlongUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUlongLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *pdest=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUlongUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *pdest=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUlongFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *pdest=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUlongDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *pdest=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putUlongEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned long *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putFloatString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - long status; - int precision; - short record_type=paddr->record_type; - struct rset *prset; - short size=paddr->field_size; - - if((prset=GET_PRSET(pdbBase->precSup,record_type)) && (prset->get_precision)) - status = (*prset->get_precision)(paddr,&precision); - else - status=S_db_precision; - if(status) { - recGblRecSupError(status,paddr,"dbPutField","get_precision"); - return(status); - } - - if(nRequest==1 && offset==0) { - cvtFloatToString(*pbuffer,pdest,precision); - return(0); - } - pdest += (size*offset); - while (nRequest) { - cvtFloatToString(*pbuffer,pdest,precision); - pbuffer++; - if(++offset==no_elements) - pdest=(char *)paddr->pfield; - else - pdest += size; - nRequest--; - } - return(0); -} - -static long putFloatChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putFloatUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *pdest=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putFloatShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *pdest=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putFloatUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putFloatLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *pdest=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putFloatUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *pdest=(unsigned long *)(paddr->pfield); - long ltemp;/*vxWorks does not support float to unsigned long*/ - - if(nRequest==1 && offset==0) { - ltemp = *pbuffer; - *pdest = ltemp; - return(0); - } - pdest += offset; - while (nRequest) { - ltemp = *pbuffer++; - *pdest++ = ltemp; - if(++offset==no_elements) pdest=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putFloatFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *pdest=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putFloatDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *pdest=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putFloatEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -float *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putDoubleString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - long status; - int precision; - short record_type=paddr->record_type; - struct rset *prset; - short size=paddr->field_size; - - if((prset=GET_PRSET(pdbBase->precSup,record_type)) && (prset->get_precision)) - status = (*prset->get_precision)(paddr,&precision); - else - status=S_db_precision; - if(status) { - recGblRecSupError(status,paddr,"dbPutField","get_precision"); - return(status); - } - - if(nRequest==1 && offset==0) { - cvtDoubleToString(*pbuffer,pdest,precision); - return(0); - } - pdest += (size*offset); - while (nRequest) { - cvtDoubleToString(*pbuffer,pdest,precision); - pbuffer++; - if(++offset==no_elements) - pdest=(char *)paddr->pfield; - else - pdest += size; - nRequest--; - } - return(0); -} - -static long putDoubleChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putDoubleUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *pdest=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putDoubleShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *pdest=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putDoubleUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putDoubleLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *pdest=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putDoubleUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *pdest=(unsigned long *)(paddr->pfield); - long ltemp;/*vxWorks does not support double to unsigned long*/ - - if(nRequest==1 && offset==0) { - ltemp = *pbuffer; - *pdest = ltemp; - return(0); - } - pdest += offset; - while (nRequest) { - ltemp = *pbuffer++; - *pdest++ = ltemp; - if(++offset==no_elements) pdest=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putDoubleFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *pdest=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putDoubleDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *pdest=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putDoubleEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -double *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putEnumString(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - short size=paddr->field_size; - - - if(nRequest==1 && offset==0) { - cvtUshortToString(*pbuffer,pdest); - return(0); - } - pdest += (size*offset); - while (nRequest) { - cvtUshortToString(*pbuffer,pdest); - pbuffer++; - if(++offset==no_elements) - pdest=(char *)paddr->pfield; - else - pdest += size; - nRequest--; - } - return(0); -} - -static long putEnumChar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - char *pdest=(char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putEnumUchar(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned char *pdest=(unsigned char *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned char *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putEnumShort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - short *pdest=(short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putEnumUshort(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putEnumLong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - long *pdest=(long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putEnumUlong(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned long *pdest=(unsigned long *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned long *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putEnumFloat(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - float *pdest=(float *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(float *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putEnumDouble(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - double *pdest=(double *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(double *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putEnumEnum(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - unsigned short *pdest=(unsigned short *)(paddr->pfield); - - if(nRequest==1 && offset==0) { - *pdest = *pbuffer; - return(0); - } - pdest += offset; - while (nRequest) { - *pdest++ = *pbuffer++; - if(++offset==no_elements) pdest=(unsigned short *)paddr->pfield; - nRequest--; - } - return(0); -} - -static long putAckt(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - struct dbCommon *precord=(struct dbCommon *)(paddr->precord); - - if(*pbuffer == precord->ackt) return(0); - precord->ackt = *pbuffer; - db_post_events(precord,&precord->ackt,DBE_VALUE|DBE_ALARM); - if(!precord->ackt && precord->acks>precord->sevr) { - precord->acks = precord->sevr; - db_post_events(precord,&precord->acks,DBE_VALUE|DBE_ALARM); - } - db_post_events(precord,NULL,DBE_ALARM); - return(0); -} - -static long putAcks(paddr,pbuffer,nRequest,no_elements,offset) -struct dbAddr *paddr; -unsigned short *pbuffer; -long nRequest; -long no_elements; -long offset; -{ - struct dbCommon *precord=(struct dbCommon *)(paddr->precord); - - if(*pbuffer >= precord->acks) { - precord->acks = 0; - db_post_events(precord,NULL,DBE_ALARM); - db_post_events(precord,&precord->acks,DBE_VALUE|DBE_ALARM); - } - return(0); -} - -/* This is the table of routines for converting database fields */ -/* the rows represent the buffer types */ -/* the columns represent the field types */ - -/* field types are******************************************************** - DBF_STRING, DBF_CHAR, DBF_UCHAR, DBF_SHORT, DBF_USHORT, - DBF_LONG, DBF_ULONG, DBF_FLOAT, DBF_DOUBLE, DBF_ENUM - DBF_GBLCHOICE, DBF_CVTCHOICE, DBF_RECCHOICE, DBF_DEVCHOICE - ***************************************************************************/ - -long (*put_convert_table[DBR_PUT_ACKS+1][DBF_DEVCHOICE+1])() = { -/* source is a DBR_STRING */ -{putStringString, putStringChar, putStringUchar, putStringShort, putStringUshort, - putStringLong, putStringUlong, putStringFloat, putStringDouble, putStringEnum, - putStringGchoice,putStringCchoice,putStringRchoice,putStringDchoice}, -/* source is a DBR_CHAR */ -{putCharString, putCharChar, putCharUchar, putCharShort, putCharUshort, - putCharLong, putCharUlong, putCharFloat, putCharDouble, putCharEnum, - putCharEnum, putCharEnum, putCharEnum, putCharEnum}, -/* source is a DBR_UCHAR */ -{putUcharString, putUcharChar, putUcharUchar, putUcharShort, putUcharUshort, - putUcharLong, putUcharUlong, putUcharFloat, putUcharDouble, putUcharEnum, - putUcharEnum, putUcharEnum, putUcharEnum, putUcharEnum}, -/* source is a DBR_SHORT */ -{putShortString, putShortChar, putShortUchar, putShortShort, putShortUshort, - putShortLong, putShortUlong, putShortFloat, putShortDouble, putShortEnum, - putShortEnum, putShortEnum, putShortEnum, putShortEnum}, -/* source is a DBR_USHORT */ -{putUshortString, putUshortChar, putUshortUchar, putUshortShort, putUshortUshort, - putUshortLong, putUshortUlong, putUshortFloat, putUshortDouble, putUshortEnum, - putUshortEnum, putUshortEnum, putUshortEnum, putUshortEnum}, -/* source is a DBR_LONG */ -{putLongString, putLongChar, putLongUchar, putLongShort, putLongUshort, - putLongLong, putLongUlong, putLongFloat, putLongDouble, putLongEnum, - putLongEnum, putLongEnum, putLongEnum, putLongEnum}, -/* source is a DBR_ULONG */ -{putUlongString, putUlongChar, putUlongUchar, putUlongShort, putUlongUshort, - putUlongLong, putUlongUlong, putUlongFloat, putUlongDouble, putUlongEnum, - putUlongEnum, putUlongEnum, putUlongEnum, putUlongEnum}, -/* source is a DBR_FLOAT */ -{putFloatString, putFloatChar, putFloatUchar, putFloatShort, putFloatUshort, - putFloatLong, putFloatUlong, putFloatFloat, putFloatDouble, putFloatEnum, - putFloatEnum, putFloatEnum, putFloatEnum, putFloatEnum}, -/* source is a DBR_DOUBLE */ -{putDoubleString, putDoubleChar, putDoubleUchar, putDoubleShort, putDoubleUshort, - putDoubleLong, putDoubleUlong, putDoubleFloat, putDoubleDouble, putDoubleEnum, - putDoubleEnum, putDoubleEnum, putDoubleEnum, putDoubleEnum}, -/* source is a DBR_ENUM */ -{putEnumString, putEnumChar, putEnumUchar, putEnumShort, putEnumUshort, - putEnumLong, putEnumUlong, putEnumFloat, putEnumDouble, putEnumEnum, - putEnumEnum, putEnumEnum, putEnumEnum, putEnumEnum}, -/* source is a DBR_PUT_ACKT */ -{putAckt, putAckt, putAckt, putAckt, putAckt, - putAckt, putAckt, putAckt, putAckt, putAckt, - putAckt, putAckt, putAckt, putAckt}, -/* source is a DBR_PUT_ACKS */ -{putAcks, putAcks, putAcks, putAcks, putAcks, - putAcks, putAcks, putAcks, putAcks, putAcks, - putAcks, putAcks, putAcks, putAcks} -}; - -long dbPut( - struct dbAddr *paddr, - short dbrType, - void *pbuffer, - long nRequest -) -{ - long no_elements=paddr->no_elements; - long dummy; - long offset; - long (*pconvert_routine)(); - long int (*pspecial)()=NULL; - struct rset *prset; - struct dbCommon *precord=(struct dbCommon *)(paddr->precord); - long status=0; - static char val[4]={'V','A','L',' '}; - long *pval=(long *)&val[0]; - struct fldDes *pfldDes; - long *pfield_name; - long special=paddr->special; - short field_type=paddr->field_type; - - /* Check for valid request */ - if( INVALID_DB_REQ(dbrType) || (field_type>DBF_DEVCHOICE) - || (!(pconvert_routine=put_convert_table[dbrType][field_type])) ) - { - char message[80]; - - sprintf(message,"dbPut - database request type is %d",dbrType); - recGblDbaddrError(S_db_badDbrtype,paddr,message); - return(S_db_badDbrtype); - } - if(dbrType>=DBR_PUT_ACKT) { - status=(*pconvert_routine)(paddr,pbuffer,(long)1,(long)1,(long)0); - return(status); - } - - prset=GET_PRSET(pdbBase->precSup,paddr->record_type); - - /* check for special processing is required */ - if(special) { - if(special<100) { /*global processing*/ - if(special==SPC_NOMOD) { - status = S_db_noMod; - recGblDbaddrError(status,paddr,"dbPut"); - return(status); - }else if(special==SPC_SCAN){ - scanDelete(precord); - } - } - else { - if( prset && (pspecial = (prset->special))) { - status=(*pspecial)(paddr,0); - if(status) return(status); - } else { - recGblRecSupError(S_db_noSupport,paddr,"dbPut", - "special"); - return(S_db_noSupport); - } - } - } - - /* check for array */ - if( no_elements>1 && prset && (prset->get_array_info) ) { - status= (*prset->get_array_info)(paddr,&dummy,&offset); - } - else offset=0; - if(no_elements<(nRequest)) nRequest = no_elements; - - /* convert database field to buffer type and place it in the buffer */ - status=(*pconvert_routine)(paddr,pbuffer,nRequest,no_elements,offset); - - /* update array info */ - if( no_elements>1 && prset && (prset->put_array_info) ) { - status= (*prset->put_array_info)(paddr,nRequest); - } - - if(status) return(status); - - /* check for special processing is required */ - if(special) { - if(special<100) { /*global processing*/ - if(special==SPC_SCAN) { - scanAdd(precord); - } else if(special==SPC_AS) { - asChangeGroup((ASMEMBERPVT *)&precord->asp,precord->asg); - } - } - else { - status=(*pspecial)(paddr,1); - if(status) return(status); - } - } - - /* propagate events for this field */ - /* if the field is VAL and process_passive is true dont propagate*/ - pfldDes = (struct fldDes *)(paddr->pfldDes); - pfield_name = (long *)&(pfldDes->fldname[0]); - /* if field is val set udf FALSE */ - if (*pval == *pfield_name) precord->udf=FALSE; - if(precord->mlis.count && - ((*pval != *pfield_name) || (!pfldDes->process_passive))) - db_post_events(precord,paddr->pfield,DBE_VALUE); - - return(status); -} diff --git a/src/db/dbls.c b/src/db/dbls.c deleted file mode 100644 index 0e19f02e7..000000000 --- a/src/db/dbls.c +++ /dev/null @@ -1,1199 +0,0 @@ -/* dbls.c - structure listing program */ -/* share/src/db @(#)dbls.c 1.21 2/17/94 */ - -/* - * Author: Bob Zieman - * Date: 11-7-90 - * - * Experimental Physics and Industrial Control System (EPICS) - * - * Copyright 1991, the Regents of the University of California, - * and the University of Chicago Board of Governors. - * - * This software was produced under U.S. Government contracts: - * (W-7405-ENG-36) at the Los Alamos National Laboratory, - * and (W-31-109-ENG-38) at Argonne National Laboratory. - * - * Initial development by: - * The Controls and Automation Group (AT-8) - * Ground Test Accelerator - * Accelerator Technology Division - * Los Alamos National Laboratory - * - * Co-developed with - * The Controls and Computing Group - * Accelerator Systems Division - * Advanced Photon Source - * Argonne National Laboratory - * - * Modification Log: - * ----------------- - * .01 11-26-91 jba Initialized fp to null - * .02 02-28-92 jba ANSI C changes - * .03 05-19-92 mrk Mods for internal database structure changes - * .04 07-16-92 jba changes made to remove compile warning msgs - * .05 08-05-92 jba Removed all references to dbr_field_type - * .06 09-15-92 jba added stments for unix version - */ - - -#define SAME 0 - - -#ifndef vxWorks -#include -#include -#include -#include -#include -#include -#else -#include -#include -#include -#include -#endif - -#ifndef FOREVER -#define FOREVER for(;;) -#endif - -#include -#include -#include -#include -#include -#if 1 -#include -#endif - -#include -#include -#include -#include -#include -#include - -#ifndef vxWorks -DBBASE *pdbBase=NULL; -#ifndef MYERRNO -#define MYERRNO (int errno) -#endif - -#else - -extern struct dbBase *pdbBase; -#endif - -/* forward references */ -static void DbRecType(); -static void DrvSup(); -static void DevSup(); -static void DbRecDes(); -static void CvtTable(); -static void ChoiceRec(); -static void ChoiceDev(); -static void ChoiceCvt(); -static void ChoiceGbl(); -/*static void DbErrDes();*/ -static void DbRecords(); -static void RecSup(); -static int getSelection(); - -static char buffer[512]; -static char ibuff[20]; -static int i; -static int j; -static int k; -static int inum; -static int begNumI; -static int endNumI; -static int endNumJ; -static int begNumJ; - -static struct PRTAB { - char *msg; /* selection string */ - void (*fp) (); /* print routine */ -} comtab[] = -{ - { - "dbRecType", DbRecType - }, - { - "drvSup", DrvSup - }, - { - "devSup", DevSup - }, - { - "dbRecDes", DbRecDes - }, - { - "cvtTable", CvtTable - }, - { - "choiceRec", ChoiceRec - }, - { - "choiceDev", ChoiceDev - }, - { - "choiceCvt", ChoiceCvt - }, - { - "choiceGbl", ChoiceGbl - }, -/* - { - "dbErrDes", DbErrDes - }, -*/ - { - "recSup", RecSup - }, - { - "dbRecords", DbRecords - }, - { - "FFFF", NULL - } -}; - - -#ifndef vxWorks -main() -{ - long status; - FILE *fp; - - /* Create the database */ - pdbBase=dbAllocBase(); - - /* open the default.dctsdr file */ - if ((fp = fopen("default.dctsdr", "rb")) == NULL) { - printf("dbls can't open default.dctsdr\n"); - return(-1); - } - - /* read in the database */ - status=dbRead(pdbBase, fp); - if(status!=0) { - printf("dbls aborting because dbRead failed\n"); - return(-1); - } - fclose(fp); - dbls(); -return(0); -} -#endif - - - -/* - * LISTSTRUCTURES - * - * MAIN PROGRAM - * - */ -int dbls() -{ - struct PRTAB *pcomtab = &comtab[0]; - void (*fup) (); /* SUBROUTINE POINTER */ - int pos, - fflag; - FILE *fp=NULL, - *fopen(); - char fname[80]; - long status; - struct recType *precType; - if (!pdbBase) { - status = S_sdr_notLoaded; - errMessage(status, "dbls: Error - database not loaded"); - return(-1); - } - if (!(precType=pdbBase->precType)) { - status = S_sdr_notLoaded; - errMessage(status, "dbls: Error - precType not loaded"); - return -1; - } - begNumI = 0; - begNumJ = 0; - - pos = getSelection(pcomtab); - printf("PUT OUTPUT LISTING IN FILE ??? (y|n) : "); - scanf("%s", ibuff); - if (ibuff[0] == 'y') - fflag = 1; - else - fflag = 0; - - if (fflag) { - printf("ENTER FULL_PATH_NAME OF OUTPUT LISTING FILE : "); - scanf("%s", fname); - if ((fp = fopen(fname, "a")) == NULL) { - printf("dbls: fopen error errno=%d\nfile=%s\n", errno, fname); - printf("TRY: < cd \"/full_dir_path/.\" > to correct this failure\n"); - return (-1); - } - printf("Warning Note: file %s opened for appending\n", fname); - } - fup = *comtab[pos].fp; /* PREPARE INDIRECT CALL */ - (*fup) (fp, fflag); /* AND CALL SUBROUTINE */ - if (fflag) { - printf("YOUR OUTPUT IS LOCATED IN FILE %s\n", fname); - fclose(fp); - } - return (0); -} /* end of main */ -int getRecTypeSel() -{ - struct recType *precType; - - if (!(precType=pdbBase->precType)) return(0); - endNumI = precType->number; - - printf("DO YOU WANT TO LIST ALL RECORD TYPES ??? (y|n) : "); - scanf("%s", ibuff); - - if (ibuff[0] != 'y') { - FOREVER { - printf("\nRECTYPE MENU:\n"); - for (i = 0; i < precType->number; i++) { - if (precType->papName[i]) { - printf("%d\t%s\n", i, precType->papName[i]); - } - } - printf("ENTER SELECTION NUMBER (X-%d) : ", i - 1); - scanf("%d", &inum); - if ((precType->papName[inum]) - && (inum >= 0) && (inum < i)) { - begNumI = inum; - endNumI = begNumI + 1; - break; - } else { - printf("Not a selection, Please try again\n"); - } - } - } else { - for (i = 0; i < precType->number; i++) { - /* start at first record definition */ - if (precType->papName[i]) { - begNumI = i; - break; - } - } - } - return(0); -} /* end of getRecTypeSel */ -static -int getSelection(pcomtab) - struct PRTAB *pcomtab; -{ - int pos; - FOREVER { - printf("\nSTRUCTURE LISTING MENU:\n"); - pos = 0; /* POS OF FIRST CMD IN TABLE */ - while (strncmp(pcomtab[pos].msg, "FFFF", 4)) { /* DO UNTIL END OF TABLE */ - printf("\t%d\t%s\n", pos + 1, pcomtab[pos].msg); - pos++; - } - printf("ENTER SELECTION NUMBER (1-%d) : ", pos); - scanf("%d", &inum); - - if (inum > 0 && inum <= pos) - return (inum - 1); - else - printf("Not a selection, Please try again\n"); - - } -} /* end of getSelection */ -void bufOut(fp, fflag) - FILE *fp; - int fflag; -{ - if (!fflag) - printf("%s\n", buffer); - else if ((fprintf(fp, "%s\n", buffer)) == EOF) { - printf("Error writing file with fprintf\n"); - exit(1); - } -} /* end of bufOut */ - -static void -DbRecType(fp, fflag) - FILE *fp; - int fflag; -{ - struct recType *precType; - - if(!(precType=pdbBase->precType)) return; - sprintf(buffer, "\n\ndbls: listing the precType structure\n"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] precType-> recType", &precType, precType); - bufOut(fp, fflag); - sprintf(buffer, "%p\t number\t [ %d ]\t/* number of types */", - &precType->number, precType->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] **papName\t\t /* pap to record type */", - &precType->papName, precType->papName); - bufOut(fp, fflag); - for (i = 0; i < precType->number; i++) { - if (precType->papName[i]) { - sprintf(buffer, "%p[%p] papName->[%d]->\t\"%s\"", - &precType->papName[i], - precType->papName[i], - i, precType->papName[i]); - bufOut(fp, fflag); - } - } -} /* end of DbRecType */ -static void -ChoiceGbl(fp, fflag) - FILE *fp; - int fflag; -{ - struct arrChoiceSet *pchoiceGbl; - - if (!(pchoiceGbl=pdbBase->pchoiceGbl)) { - printf("ChoiceGbl: Error - choiceGbl not loaded\n"); - return; - } - sprintf(buffer, "\n\ndbls: listing the choiceGbl structure\n"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] pchoiceGbl -> arrChoiceSet", &pchoiceGbl, pchoiceGbl); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t number\t\t[%d]\t/* number of choice sets */", - &pchoiceGbl->number, - pchoiceGbl->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t**papChoiceSet -> choiceSet", - &pchoiceGbl->papChoiceSet, - pchoiceGbl->papChoiceSet); - bufOut(fp, fflag); - for (i = 0; i < pchoiceGbl->number; i++) { - if (pchoiceGbl->papChoiceSet[i]) { - sprintf(buffer, "%p[%p]\t papChoiceSet->[%d]\tINDEX[%d]", - &pchoiceGbl->papChoiceSet[i], - pchoiceGbl->papChoiceSet[i], i, i); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t number [%d]\t\t/* number of choices */", - &pchoiceGbl->papChoiceSet[i]->number, - pchoiceGbl->papChoiceSet[i]->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t **papChoice -> \t\"choice string\"", - &pchoiceGbl->papChoiceSet[i]->papChoice, - pchoiceGbl->papChoiceSet[i]->papChoice); - bufOut(fp, fflag); - for (j = 0; j < pchoiceGbl->papChoiceSet[i]->number; j++) { - if (pchoiceGbl->papChoiceSet[i]->papChoice[j]) { - sprintf(buffer, "%p[%p]\t\t papChoice->[%d]\t\"%s\"", - &pchoiceGbl->papChoiceSet[i]->papChoice[j], - pchoiceGbl->papChoiceSet[i]->papChoice[j], - j, - pchoiceGbl->papChoiceSet[i]->papChoice[j]); - bufOut(fp, fflag); - } - } - } - } -} /* end of ChoiceGbl */ -static void -ChoiceDev(fp, fflag) - FILE *fp; - int fflag; -{ - struct devChoiceRec *pchoiceDev; - struct recType *precType; - - if (!(pchoiceDev=pdbBase->pchoiceDev)) { - printf("ChoiceDev: Error - choiceDev not loaded\n"); - return; - } - if(!(precType=pdbBase->precType)) return; - getRecTypeSel(); - sprintf(buffer, "\n\ndbls: listing the choiceDev structure"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]pchoiceDev-> devChoiceRec ", &pchoiceDev, pchoiceDev); - bufOut(fp, fflag); - sprintf(buffer, "%p\t number\t[%d]\t\t\t/* number of devChoiceSet */", - &pchoiceDev->number, pchoiceDev->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] **papDevChoiceSet -> devChoiceSet ", - &pchoiceDev->papDevChoiceSet, - pchoiceDev->papDevChoiceSet); - bufOut(fp, fflag); - for (i = begNumI; i < endNumI; i++) { - if (pchoiceDev->papDevChoiceSet[i]) { - sprintf(buffer, "\n%p[%p]\tpapDevChoiceSet->[%d]\t\tRECTYPE \"%s\"", - &pchoiceDev->papDevChoiceSet[i], - pchoiceDev->papDevChoiceSet[i], i, - precType->papName[i]); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t number\t[%d]\t\t/*number of choices */ ", - &pchoiceDev->papDevChoiceSet[i]->number, - pchoiceDev->papDevChoiceSet[i]->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t **papDevChoice -> devChoice", - &pchoiceDev->papDevChoiceSet[i]->papDevChoice, - pchoiceDev->papDevChoiceSet[i]->papDevChoice); - bufOut(fp, fflag); - for (j = 0; j < pchoiceDev->papDevChoiceSet[i]->number; j++) { - if (pchoiceDev->papDevChoiceSet[i]->papDevChoice[j]) { - sprintf(buffer, "%p[%p]\t papDevChoice[%d]", - &pchoiceDev->papDevChoiceSet[i]->papDevChoice[j], - pchoiceDev->papDevChoiceSet[i]->papDevChoice[j], j); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t link_type [%d]", - &pchoiceDev->papDevChoiceSet[i]->papDevChoice[j]->link_type, - pchoiceDev->papDevChoiceSet[i]->papDevChoice[j]->link_type); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t\t*pchoice\t\t\"%s\"", - &pchoiceDev->papDevChoiceSet[i]->papDevChoice[j]->pchoice, - pchoiceDev->papDevChoiceSet[i]->papDevChoice[j]->pchoice, - pchoiceDev->papDevChoiceSet[i]->papDevChoice[j]->pchoice); - bufOut(fp, fflag); - } - } - } - } -} /* end ChoiceDev */ -static void -ChoiceCvt(fp, fflag) - FILE *fp; - int fflag; -{ - struct choiceSet *pchoiceCvt; - - if (!(pchoiceCvt=pdbBase->pchoiceCvt)) { - printf("ChoiceCvt: Error - choiceCvt not loaded\n"); - return; - } - sprintf(buffer, "\n\ndbls: listing the choiceCvt structure"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] choiceCvt -> choiceCvt", &pchoiceCvt, pchoiceCvt); - - bufOut(fp, fflag); - sprintf(buffer, "%p number\t [ %d ]\t/* number of choices */", - &pchoiceCvt->number, pchoiceCvt->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] **papChoice -> \"choice string\"", - &pchoiceCvt->papChoice, pchoiceCvt->papChoice); - bufOut(fp, fflag); - for (i = 0; i < pchoiceCvt->number; i++) - if (pchoiceCvt->papChoice[i]) { - sprintf(buffer, "%p[%p] papChoice[%d]\t\"%s\" ", - &pchoiceCvt->papChoice[i], pchoiceCvt->papChoice[i], i, - pchoiceCvt->papChoice[i]); - bufOut(fp, fflag); - } - return; -} /* end of ChoiceCvt */ -static void -CvtTable(fp, fflag) - FILE *fp; - int fflag; -{ - struct arrBrkTable *pcvtTable; - - if (!(pcvtTable=pdbBase->pcvtTable)) { - printf("CvtTable: Error - cvtTable not loaded\n"); - return; - } - begNumI = 0; - endNumI = pcvtTable->number; - - printf("DO YOU WANT TO LIST ALL CVT TABLES ??? (y|n) : "); - scanf("%s", ibuff); - - if (ibuff[0] != 'y') { - FOREVER { - printf("\nBRKPOINT MENU:\n"); - for (i = begNumI; i < endNumI; i++) { - if (pcvtTable->papBrkTable[i]) { - sprintf(buffer, "%d\t%s", i, pcvtTable->papBrkTable[i]->name); - bufOut(fp, 0); - } - } - printf("ENTER SELECTION NUMBER (N-%d) : ", i - 1); - scanf("%d", &inum); - if ((pcvtTable->papBrkTable[inum]) && inum < endNumI) { - begNumI = inum; - endNumI = begNumI + 1; - break; - } else { - printf("Not a selection, Please try again\n"); - } - } - } else { - for (i = 0; i < pcvtTable->number; i++) { - if (pcvtTable->papBrkTable[i]) { - begNumI = i; - break; - } - } - } - sprintf(buffer, "\n\ndbls: listing the pcvtTable structure"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] pcvtTable -> arrBrkTable", &pcvtTable, pcvtTable); - bufOut(fp, fflag); - sprintf(buffer, "%p number\t [ %d ]\t/* number of break tables */", - &pcvtTable->number, pcvtTable->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] **papBrkTable -> brkTable", - &pcvtTable->papBrkTable, pcvtTable->papBrkTable); - bufOut(fp, fflag); - for (i = begNumI; i < endNumI; i++) { - if (pcvtTable->papBrkTable[i]) { - sprintf(buffer, "%p[%p] papBrkTable[%d] ", - &pcvtTable->papBrkTable[i], pcvtTable->papBrkTable[i], i); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t *name\t\t\t\"%s\"", - &pcvtTable->papBrkTable[i]->name, - pcvtTable->papBrkTable[i]->name, - pcvtTable->papBrkTable[i]->name); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t number [ %d ]\t/* number of brkInt in this table */ ", - &pcvtTable->papBrkTable[i]->number, - pcvtTable->papBrkTable[i]->number); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t rawLow\t\t\t%-d", - &pcvtTable->papBrkTable[i]->rawLow, - pcvtTable->papBrkTable[i]->rawLow); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t rawHigh\t\t\t%-d", - &pcvtTable->papBrkTable[i]->rawHigh, - pcvtTable->papBrkTable[i]->rawHigh); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t**papBrkInt", - &pcvtTable->papBrkTable[i]->papBrkInt, - pcvtTable->papBrkTable[i]->papBrkInt); - bufOut(fp, fflag); - for (j = 0; j < pcvtTable->papBrkTable[i]->number; j++) { - if (pcvtTable->papBrkTable[i]->papBrkInt[j]) { - sprintf(buffer, "%p[%p]\t papBrkInt[%d] -> brkInt", - &pcvtTable->papBrkTable[i]->papBrkInt[j], - pcvtTable->papBrkTable[i]->papBrkInt[j], j); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t raw\t\t\t%-d", - &pcvtTable->papBrkTable[i]->papBrkInt[j]->raw, - pcvtTable->papBrkTable[i]->papBrkInt[j]->raw); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t slope\t\t\t%-.5f", - &pcvtTable->papBrkTable[i]->papBrkInt[j]->slope, - pcvtTable->papBrkTable[i]->papBrkInt[j]->slope); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t eng\t\t\t%-.5f", - &pcvtTable->papBrkTable[i]->papBrkInt[j]->eng, - pcvtTable->papBrkTable[i]->papBrkInt[j]->eng); - bufOut(fp, fflag); - } - } - } - } -} /* end of CvtTable */ -static void -DevSup(fp, fflag) - FILE *fp; - int fflag; -{ - struct recType *precType; - struct recDevSup *precDevSup; - - if (!(precDevSup=pdbBase->precDevSup)) { - printf("DevSup: Error - devSup not loaded\n"); - return; - } - if(!(precType=pdbBase->precType)) return; - getRecTypeSel(); - sprintf(buffer, "\n\ndbls: listing the devSup structure"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] precDevSup -> recDevSup ", &precDevSup, precDevSup); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\tnumber\t [ %d ]\t/* number of record types */", - &precDevSup->number, precDevSup->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] **papDevSup -> precDevSup ", - &precDevSup->papDevSup, precDevSup->papDevSup); - bufOut(fp, fflag); - for (i = begNumI; i < endNumI; i++) { - if (precDevSup->papDevSup[i]) { - sprintf(buffer, "%p[%p] papDevSup->[%d]\t\"%s\"", - &precDevSup->papDevSup[i], - precDevSup->papDevSup[i], i, - precType->papName[i]); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t number\t[%d]\t/* number of dset */", - &precDevSup->papDevSup[i]->number, - precDevSup->papDevSup[i]->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] **papDsetName", - &precDevSup->papDevSup[i]->papDsetName, - precDevSup->papDevSup[i]->papDsetName); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] **papDset", - &precDevSup->papDevSup[i]->papDset, - precDevSup->papDevSup[i]->papDset); - bufOut(fp, fflag); - for (j = 0; j < precDevSup->papDevSup[i]->number; j++) { - if (precDevSup->papDevSup[i]->papDsetName[j]) { - sprintf(buffer, "%p[%p]\t\tpapDsetName[%d]\t%s", - &precDevSup->papDevSup[i]->papDsetName[j], - precDevSup->papDevSup[i]->papDsetName[j], - j, - precDevSup->papDevSup[i]->papDsetName[j]); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t\tpapDset[%d]", - &precDevSup->papDevSup[i]->papDset[j], - precDevSup->papDevSup[i]->papDset[j], j); - bufOut(fp, fflag); - } - } - } - } -} /* end of DevSup */ -static void -DrvSup(fp, fflag) - FILE *fp; - int fflag; -{ - struct drvSup *pdrvSup; - - if (!(pdrvSup=pdbBase->pdrvSup)) { - printf("DrvSup: Error - drvSup not loaded\n"); - } - sprintf(buffer, "\n\ndbls: listing the drvSup structure"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] pdrvSup -> pdrvSup ", &pdrvSup, pdrvSup); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t number\t[%d]\t/* number of dset */", &pdrvSup->number, pdrvSup->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] **papDrvName -> \t/* pArr of ptr to papDrvName */ ", - &pdrvSup->papDrvName, pdrvSup->papDrvName); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] **papDrvet-> drvet \t/* pArr ptr to drvet */", - &pdrvSup->papDrvet, pdrvSup->papDrvet); - bufOut(fp, fflag); - for (i = 0; i < pdrvSup->number; i++) { - if (pdrvSup->papDrvName[i]) - sprintf(buffer, "%p[%p]\t papDrvName->[%d]\t\"%s\"", - &pdrvSup->papDrvName[i], - pdrvSup->papDrvName[i], - i, pdrvSup->papDrvName[i]); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t papDrvet->[%d] /* reserved ptr to drvet */", - &pdrvSup->papDrvet[i], - pdrvSup->papDrvet[i], i); - bufOut(fp, fflag); - } -} /* end of DrvSup */ -static void -DbRecDes(fp, fflag) - FILE *fp; - int fflag; -{ - char *ptemp; - long buff[6]; - int allJ = 0; - struct recDes *precDes; - struct recType *precType; - - if(!(precType=pdbBase->precType)) return; - if (!(precDes=pdbBase->precDes)) { - printf("DbRecDes: Error - precDes not loaded\n"); - return; - } - getRecTypeSel(); - begNumJ = 0; - endNumJ = precDes->papRecTypDes[begNumI]->no_fields; - if ((endNumI - begNumI) < 2) { - printf("DO YOU WANT TO LIST ALL FIELDS ??? (y|n) : "); - scanf("%s", ibuff); - if (ibuff[0] != 'y') - FOREVER { - printf("\nFIELDNAME MENU FOR RECTYPE %s:\n", precType->papName[begNumI]); - for (j = 0; j < endNumJ; j++) { - printf("%3d %4.4s", - precDes->papRecTypDes[begNumI]->sortFldInd[j], - (char *)&precDes->papRecTypDes[begNumI]->sortFldName[j]); - if (!((j + 1) % 8)) - printf("\n"); - } - printf("\n"); - printf("ENTER SELECTION NUMBER (0-%d) : ", j - 1); - scanf("%d", &inum); - if ((inum >= 0 && inum < j)) { - begNumJ = inum; - endNumJ = begNumJ + 1; - break; - } else { - printf("Not a selection, Please try again\n"); - } - } - } else - allJ = 1; - - sprintf(buffer, "\n\ndbls: listing the precDes structure"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] precDes-> recDes", &precDes, precDes); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\tnumber [%d] \t/* number of recTypDes */", - &precDes->number, precDes->number); - bufOut(fp, fflag); - for (i = begNumI; i < endNumI; i++) { - - if (precDes->papRecTypDes[i]) { - sprintf(buffer, "\n%p[%p] **papRecTypDes-> recTypDes\t\"%s\"", - &precDes->papRecTypDes, - precDes->papRecTypDes, - precType->papName[i]); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t rec_size [%d]", - &precDes->papRecTypDes[i]->rec_size, - precDes->papRecTypDes[i]->rec_size); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t no_fields [%d]", - &precDes->papRecTypDes[i]->no_fields, - precDes->papRecTypDes[i]->no_fields); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t no_prompt [%d]", - &precDes->papRecTypDes[i]->no_prompt, - precDes->papRecTypDes[i]->no_prompt); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t no_links [%d]", - &precDes->papRecTypDes[i]->no_links, - precDes->papRecTypDes[i]->no_links); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t *link_ind", - &precDes->papRecTypDes[i]->link_ind, - precDes->papRecTypDes[i]->link_ind); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t *sortFldName", - &precDes->papRecTypDes[i]->sortFldName, - precDes->papRecTypDes[i]->sortFldName); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t *sortFldInd", - &precDes->papRecTypDes[i]->sortFldInd, - precDes->papRecTypDes[i]->sortFldInd); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t **papFldDes-> fldDes", - &precDes->papRecTypDes[i]->papFldDes, - precDes->papRecTypDes[i]->papFldDes); - bufOut(fp, fflag); - - if (allJ) { - endNumJ = precDes->papRecTypDes[i]->no_fields; - /* expand *link_ind */ - for (j = 0; j < precDes->papRecTypDes[i]->no_links; j++) { - sprintf(buffer,"%p\tlink_ind[%d] offset=[%d]", - &precDes->papRecTypDes[i]->link_ind[j], - j, - precDes->papRecTypDes[i]->link_ind[j]); - bufOut(fp, fflag); - } - /* expand *sortFldName and *sortFldInd */ - ptemp = (char *) precDes->papRecTypDes[i]->sortFldName; - for (j = 0; j < precDes->papRecTypDes[i]->no_fields; j++) { - sprintf(buffer,"[%p] sortFldName[%2d]=%4.4s [%p] sortFldInd=%2d", - ptemp, - j, - ptemp, - &precDes->papRecTypDes[i]->sortFldInd[j], - precDes->papRecTypDes[i]->sortFldInd[j] - ); - bufOut(fp, fflag); - ptemp += 4; - } - } - for (j = begNumJ; j < endNumJ; j++) { - sprintf(buffer, "\n"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t **papFldDes->fldDes[%d]", - &precDes->papRecTypDes[i]->papFldDes[j], - precDes->papRecTypDes[i]->papFldDes[j], j); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tprompt\t\t\"%s\"", - precDes->papRecTypDes[i]->papFldDes[j]->prompt, - precDes->papRecTypDes[i]->papFldDes[j]->prompt); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tfldname\t\t\"%4.4s\"", - precDes->papRecTypDes[i]->papFldDes[j]->fldname, - precDes->papRecTypDes[i]->papFldDes[j]->fldname); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\toffset [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->offset, - precDes->papRecTypDes[i]->papFldDes[j]->offset); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tsize [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->size, - precDes->papRecTypDes[i]->papFldDes[j]->size); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tspecial [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->special, - precDes->papRecTypDes[i]->papFldDes[j]->special); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tfield_type [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->field_type, - precDes->papRecTypDes[i]->papFldDes[j]->field_type); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tprocess_passive [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->process_passive, - precDes->papRecTypDes[i]->papFldDes[j]->process_passive); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tchoice_set [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->choice_set, - precDes->papRecTypDes[i]->papFldDes[j]->choice_set); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tcvt_type [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->cvt_type, - precDes->papRecTypDes[i]->papFldDes[j]->cvt_type); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tpromptflag [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->promptflag, - precDes->papRecTypDes[i]->papFldDes[j]->promptflag); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tlowfl [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->lowfl, - precDes->papRecTypDes[i]->papFldDes[j]->lowfl); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\thighfl [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->highfl, - precDes->papRecTypDes[i]->papFldDes[j]->highfl); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tinterest [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->interest, - precDes->papRecTypDes[i]->papFldDes[j]->interest); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tas_level [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->as_level, - precDes->papRecTypDes[i]->papFldDes[j]->as_level); - bufOut(fp, fflag); - memcpy((void *) buff, - (void *) & precDes->papRecTypDes[i]->papFldDes[j]->initial, 8); - sprintf(buffer, "%p[%8x][%8x]\tinitial", - &precDes->papRecTypDes[i]->papFldDes[j]->initial, - buff[0], buff[1]); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\trange1.fldnum [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->range1.fldnum, - precDes->papRecTypDes[i]->papFldDes[j]->range1.fldnum); - bufOut(fp, fflag); - memcpy((void *) buff, - (void *) & precDes->papRecTypDes[i]->papFldDes[j]->range1.value, 8); - sprintf(buffer, "%p[%8x][%8x]\trange1.value", - &precDes->papRecTypDes[i]->papFldDes[j]->range1.value, - buff[0], buff[1]); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\trange2.fldnum [%d]", - &precDes->papRecTypDes[i]->papFldDes[j]->range2.fldnum, - precDes->papRecTypDes[i]->papFldDes[j]->range2.fldnum); - bufOut(fp, fflag); - memcpy((void *) buff, - (void *) & precDes->papRecTypDes[i]->papFldDes[j]->range2.value, 8); - sprintf(buffer, "%p[%8x][%8x]\trange2.value", - &precDes->papRecTypDes[i]->papFldDes[j]->range2.value, - buff[0], buff[1]); - bufOut(fp, fflag); - } - } - } -} /* end of DbRecDes */ -static void -ChoiceRec(fp, fflag) - FILE *fp; - int fflag; -{ - struct choiceRec *pchoiceRec; - struct recType *precType; - - if(!(precType=pdbBase->precType)) return; - if (!(pchoiceRec=pdbBase->pchoiceRec)) { - printf("ChoiceRec: Error - choiceRec not loaded\n"); - return; - } - endNumI = precType->number; - - printf("DO YOU WANT TO LIST ALL RECORD TYPES ??? (y|n) : "); - scanf("%s", ibuff); - - if (ibuff[0] != 'y') { - FOREVER { - printf("\nRECTYPE MENU:\n"); - for (i = 0; i < precType->number; i++) { - if (precType->papName[i] - && pchoiceRec->papArrChoiceSet[i]) { - printf("%d\t%s\n", i, precType->papName[i]); - } - } - printf("ENTER SELECTION NUMBER (X-%d) : ", i - 1); - scanf("%d", &inum); - if ((pchoiceRec->papArrChoiceSet[inum]) - && (inum >= 0) && (inum < i)) { - begNumI = inum; - endNumI = begNumI + 1; - break; - } else { - printf("Not a selection, Please try again\n"); - } - } - } else { - for (i = 0; i < precType->number; i++) { - /* start at first record definition */ - if (pchoiceRec->papArrChoiceSet[i]) { - begNumI = i; - break; - } - } - } - sprintf(buffer, "\n\ndbls: listing the choiceRec structure"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] pchoiceRec -> pchoiceRec", &pchoiceRec, pchoiceRec); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\tnumber\t\t[%d]", &pchoiceRec->number, pchoiceRec->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t**papArrChoiceSet -> arrChoiceSet", - &pchoiceRec->papArrChoiceSet, - pchoiceRec->papArrChoiceSet); - bufOut(fp, fflag); - - for (i = begNumI; i < endNumI; i++) { - if (pchoiceRec->papArrChoiceSet[i]) { - sprintf(buffer, "%p[%p]\tpapArrChoiceSet[%d] -> arrChoiceSet\t\tRECTYPE \"%s\"", - &pchoiceRec->papArrChoiceSet[i], - pchoiceRec->papArrChoiceSet[i], i, - precType->papName[i]); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t number\t\t[%d]\t/* number of choice sets */", - &pchoiceRec->papArrChoiceSet[i]->number, - pchoiceRec->papArrChoiceSet[i]->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t **papChoiceSet", - &pchoiceRec->papArrChoiceSet[i]->papChoiceSet, - pchoiceRec->papArrChoiceSet[i]->papChoiceSet); - bufOut(fp, fflag); - for (j = 0; j < pchoiceRec->papArrChoiceSet[i]->number; j++) { - if (pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j]) { - sprintf(buffer, "%p[%p]\t papChoiceSet[%d] -> choiceSet \t\tINDEX[%d]", - - &pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j], - pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j], j, j); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t\tnumber\t\t[%d]\t/* number of choices */ ", - &pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j]->number, - pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j]->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t\t**papChoice -> \"string\"", - &pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j]->papChoice, - pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j]->papChoice); - bufOut(fp, fflag); - for (k = 0; k < pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j]->number; k++) { - if (pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j]->papChoice[k]) { - sprintf(buffer, "%p[%p]\t\tpapChoice[%d]\t\"%s\"", - &pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j]->papChoice[k], - pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j]->papChoice[k], k, - pchoiceRec->papArrChoiceSet[i]->papChoiceSet[j]->papChoice[k]); - bufOut(fp, fflag); - } - } - - } - } - - } - } -} /* end of ChoiceRec */ - -#if 0 /* COMMENTED OUT - needs rework for new error message structure - rcz*/ -static void -DbErrDes(fp, fflag) - FILE *fp; - int fflag; -{ - if (!dbErrDes) { - printf("DbErrDes Error - dbErrDes not loaded\n"); - return; - } - sprintf(buffer, "\n\ndbls: listing the dbErrDes structure"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] dbErrDes -> errDes ", &dbErrDes, dbErrDes); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\tnumber\t [ %d ]\t /* dim of err modules */", - &dbErrDes->number, dbErrDes->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] **papErrSet -> errSet ", - &dbErrDes->papErrSet, dbErrDes->papErrSet); - bufOut(fp, fflag); - for (i = 0; i < dbErrDes->number; i++) { - if (dbErrDes->papErrSet[i]) { - sprintf(buffer, "%p[%p] papErrSet->[%d]\tmodule[%d]", - &dbErrDes->papErrSet[i], - dbErrDes->papErrSet[i], i, - i + 501); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t number\t[%d]\t/* dim of errSet */", - &dbErrDes->papErrSet[i]->number, - dbErrDes->papErrSet[i]->number); - bufOut(fp, fflag); - for (j = 0; j < dbErrDes->papErrSet[i]->number; j++) { - if (dbErrDes->papErrSet[i]->papName[j]) { - sprintf(buffer, "%p[%p]\t\tpapName[%d]\t\"%s\"", - &dbErrDes->papErrSet[i]->papName[j], - dbErrDes->papErrSet[i]->papName[j], - j, - dbErrDes->papErrSet[i]->papName[j]); - bufOut(fp, fflag); - } - } - } - } -} /* end of DbErrDes */ -#endif - - - -static void -DbRecords(fp, fflag) - FILE *fp; - int fflag; -{ - struct recType *precType; - struct recHeader *precHeader; - - if(!(precType=pdbBase->precType)) return; - if (!(precHeader=pdbBase->precHeader)) { - printf("DbRecords: Error - precHeader not loaded\n"); - return; - } - getRecTypeSel(); - sprintf(buffer, "\n\ndbls: listing the precHeader structure\n"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] precHeader -> recHeader", &precHeader, precHeader); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t number\t\t[%d]\t/* number of record types */", - &precHeader->number, - precHeader->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t**papRecLoc -> recLoc", - &precHeader->papRecLoc, - precHeader->papRecLoc); - bufOut(fp, fflag); - for (i = begNumI; i < endNumI; i++) { - if (precHeader->papRecLoc[i]) { - sprintf(buffer, "%p[%p]\t papRecLoc->[%d]\tRECTYPE[\"%s\"]", - &precHeader->papRecLoc[i], - precHeader->papRecLoc[i], - i, - precType->papName[i]); - bufOut(fp, fflag); - - sprintf(buffer, "%p\t\t rec_size [%d]\t\t/* rec_size in bytes */", - &precHeader->papRecLoc[i]->rec_size, - precHeader->papRecLoc[i]->rec_size); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t record_type [%d]\t\t/* record_type in bytes */", - &precHeader->papRecLoc[i]->record_type, - precHeader->papRecLoc[i]->record_type); - bufOut(fp, fflag); - } - } -} /* end of DbRecords */ - -static void -RecSup(fp, fflag) - FILE *fp; - int fflag; -{ - struct recType *precType; - struct recSup *precSup; - - if(!(precType=pdbBase->precType)) return; - if (!(precSup=pdbBase->precSup)) { - printf("RecSup: Error - recSup not loaded\n"); - return; - } - getRecTypeSel(); - sprintf(buffer, "\n\ndbls: listing the recSup structure\n"); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] precSup -> precSup", &precSup, precSup); - bufOut(fp, fflag); - sprintf(buffer, "%p\t\t number\t\t[%d]\t/* number of record types */", - &precSup->number, - precSup->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p] **papRset -> rset", - &precSup->papRset, - precSup->papRset); - bufOut(fp, fflag); - for (i = begNumI; i < endNumI; i++) { - if (precSup->papRset[i]) { - sprintf(buffer, "%p[%p]\t papRset->[%d]\t\tRECTYPE[\"%s\"]", - &precSup->papRset[i], - precSup->papRset[i], i, - precType->papName[i]); - bufOut(fp, fflag); - sprintf(buffer, "%p[%d]\t number\t\t/*number of support routines */", - &precSup->papRset[i]->number, - precSup->papRset[i]->number); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t report\t\t/*print report */", - &precSup->papRset[i]->report, - precSup->papRset[i]->report); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t init\t\t/*init support */", - &precSup->papRset[i]->init, - precSup->papRset[i]->init); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t init_record\t/*init record */", - &precSup->papRset[i]->init_record, - precSup->papRset[i]->init_record); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t process\t\t/*process record */", - &precSup->papRset[i]->process, - precSup->papRset[i]->process); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t special\t\t/*special processing */", - &precSup->papRset[i]->special, - precSup->papRset[i]->special); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t get_precision\t/* get_precision of this type */", - &precSup->papRset[i]->get_precision, - precSup->papRset[i]->get_precision); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t get_value\t\t/*get value field */", - &precSup->papRset[i]->get_value, - precSup->papRset[i]->get_value); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t cvt_dbaddr\t\t/*cvt dbAddr */", - &precSup->papRset[i]->cvt_dbaddr, - precSup->papRset[i]->cvt_dbaddr); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t get_array_info\t/* get_array_info of this type */", - &precSup->papRset[i]->get_array_info, - precSup->papRset[i]->get_array_info); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t put_array_info\t/* put_array_info of this type */", - &precSup->papRset[i]->put_array_info, - precSup->papRset[i]->put_array_info); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t get_enum_str\t/*get string from enum item*/", - &precSup->papRset[i]->get_enum_str, - precSup->papRset[i]->get_enum_str); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t get_units \t\t/* get_units of this type */", - &precSup->papRset[i]->get_units, - precSup->papRset[i]->get_units); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t get_graphic_double /* get_graphic_double of this type */", - &precSup->papRset[i]->get_graphic_double, - precSup->papRset[i]->get_graphic_double); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t get_control_double /* get_control_double of this type */", - &precSup->papRset[i]->get_control_double, - precSup->papRset[i]->get_control_double); - bufOut(fp, fflag); - sprintf(buffer, "%p[%p]\t get_enum_strs\t/*get all enum strings */", - &precSup->papRset[i]->get_enum_strs, - precSup->papRset[i]->get_enum_strs); - bufOut(fp, fflag); - } - } -} /* end of recSup */ diff --git a/src/iocCore/Makefile.Vx b/src/iocCore/Makefile.Vx index acaf369a1..28aa295e4 100644 --- a/src/iocCore/Makefile.Vx +++ b/src/iocCore/Makefile.Vx @@ -9,13 +9,15 @@ LINK.c=$(LD) $(LDFLAGS) IOC_CORE_OBJS = \ $(INSTALL_BIN)/asLibrary \ + $(INSTALL_BIN)/dbStaticLib \ $(INSTALL_BIN)/dbLib \ $(INSTALL_BIN)/rsrvLib \ $(INSTALL_BIN)/libCom \ $(INSTALL_BIN)/vxComLib \ $(INSTALL_BIN)/caLib \ $(INSTALL_BIN)/miscLib \ - $(INSTALL_BIN)/dbSubs + $(INSTALL_BIN)/dbSubs \ + $(INSTALL_BIN)/pbtLib PROD = iocCore vxWorks vxWorks.sym