📄 runshm.pc
字号:
#include "../include/shmmsg.h"extern struct comshm *Createshm();extern char *getetcf();EXEC SQL BEGIN DECLARE SECTION; varchar uid[20]; varchar pwd[20]; varchar sql_sbase[20]; SQL_CURSOR City_no_cursor; SQL_CURSOR Status_no_cursor; SQL_CURSOR Name_no_cursor; SQL_CURSOR Site_no_cursor; EXEC SQL END DECLARE SECTION;main(){ int shmid; key_t key; char str[100]; char *gname; int City_num; int Status_num; int Name_num; int Site_num; struct Alarm_City_no_info S_City_no_info; struct Alarm_Status_no_info S_Status_no_info; struct Alarm_Name_no_info S_Name_no_info; struct Alarm_Site_no_info S_Site_no_info; char *filename; FILE *fp; int count; int proccount; int semid1; char tmp[Line]; char wddm[JGBMLEN]; char ipaddr[IPADDRLEN]; char cflag[2]; char sndp[5]; char rcvp[5]; char procname[8],maxproc[8]; char expcode[4]; char objectfile[10]; struct comshm *shmp; memset(&S_City_no_info,'\0',sizeof(struct Alarm_City_no_info)); memset(&S_Status_no_info,'\0',sizeof(struct Alarm_Status_no_info)); memset(&S_Name_no_info,'\0',sizeof(struct Alarm_Name_no_info)); memset(&S_Site_no_info,'\0',sizeof(struct Alarm_Site_no_info)); memset(wddm,0,JGBMLEN); memset(ipaddr,0,IPADDRLEN); memset(cflag,0,2); memset(sndp,0,5); memset(rcvp,0,5); strcpy(uid.arr,"scott"); uid.len=strlen(uid.arr); strcpy(pwd.arr,"tiger"); pwd.len=strlen(pwd.arr); strcpy(sql_sbase.arr,"omcr"); sql_sbase.len=strlen(sql_sbase.arr); EXEC SQL CONNECT :uid IDENTIFIED BY :pwd USING :sql_sbase; if(sqlca.sqlcode==0) { shmp=Createshm(); if (shmp==NULL){ syslog("create shm err",__FILE__,__LINE__); perror("create shm err"); exit(-1); } filename=getetcf(TRANSCONF); if (filename==NULL){ syslog("get pathname err",__FILE__,__LINE__); exit(-1); } if ((fp=fopen(filename,"r"))==NULL){ syslog("filename err",__FILE__,__LINE__); exit(-1); } count=0; while (fgets(tmp,Line,fp)!=NULL){ if (tmp[0]!='#'){ sscanf(tmp,"%s %s %s %s %s",wddm,ipaddr,cflag,sndp,rcvp); strcpy(shmp->addstrlist[count].jgbm,wddm); shmp->addstrlist[count].ipadd=inet_addr(ipaddr); shmp->addstrlist[count].flag=atoi(cflag); shmp->addstrlist[count].sndport=atoi(sndp); shmp->addstrlist[count].rcvport=atoi(rcvp); count++; memset(wddm,0,JGBMLEN); memset(ipaddr,0,IPADDRLEN); memset(cflag,0,2); memset(sndp,0,5); memset(rcvp,0,5); } memset(tmp,0,Line); } shmp->addno=count; fclose(fp); memset(procname,0,sizeof(procname)); memset(maxproc,0,sizeof(maxproc)); filename = getetcf(TRANSSEMA); if (filename==NULL) { syslog("get pathname err!",__FILE__,__LINE__); exit(-1); } if ((fp = fopen(filename,"r"))==NULL) { syslog("open file err!",__FILE__,__LINE__); exit(-1); } while (fgets(tmp,Line,fp) != NULL) { if (tmp[0] != '#') { sscanf(tmp,"%s%s",procname,maxproc); proccount=atoi(maxproc); shmp->maxproc=proccount; memset(procname,0,sizeof(procname)); memset(maxproc,0,sizeof(maxproc)); } memset(tmp,0,Line+1); } fclose(fp); filename=getetcf(OBJECT); if (filename==NULL){ syslog("get objectfilename err",__FILE__,__LINE__); exit(-1); } if ((fp=fopen(filename,"r"))==NULL){ syslog("filename err",__FILE__,__LINE__); exit(-1); } count=0; while (fgets(tmp,Line,fp)!=NULL){ if (tmp[0]!='#'){ sscanf(tmp,"%s%s",expcode,objectfile); strcpy(shmp->expstrulist[count].expcode,expcode); strcpy(shmp->expstrulist[count].expname,objectfile); count++; memset(expcode,0,4); memset(objectfile,0,10); } memset(tmp,0,Line); } shmp->expno=count; fclose(fp); EXEC SQL ALLOCATE :City_no_cursor; EXEC SQL ALLOCATE :Status_no_cursor; EXEC SQL ALLOCATE :Name_no_cursor; EXEC SQL ALLOCATE :Site_no_cursor; EXEC SQL EXECUTE begin Pack_noes.Get_City_no(:City_no_cursor,:City_num); Pack_noes.Get_Status_no(:Status_no_cursor,:Status_num); Pack_noes.Get_Name_no(:Name_no_cursor,:Name_num); Pack_noes.Get_Site_no(:Site_no_cursor,:Site_num); end; END-EXEC; int i=0; EXEC SQL WHENEVER NOTFOUND DO break; for (;;) { EXEC SQL FETCH :City_no_cursor INTO :S_City_no_info; if(shmp->Stru_Alarm_noes.Record_City_no[i].City_no!=0) { strcpy(shmp->Stru_Alarm_noes.Record_City_no[i].City_no,S_City_no_info.City_no); strcpy(shmp->Stru_Alarm_noes.Record_City_no[i].Name,S_City_no_info.Name); } i++; memset(&S_City_no_info,'\0',sizeof(struct Alarm_City_no_info)); } i=0; EXEC SQL WHENEVER NOTFOUND DO break; for (;;) { EXEC SQL FETCH :Status_no_cursor INTO :S_Status_no_info; if(shmp->Stru_Alarm_noes.Record_Status_no[i].Status_no!=0) { strcpy(shmp->Stru_Alarm_noes.Record_Status_no[i].Status_no,S_Status_no_info.Status_no); strcpy(shmp->Stru_Alarm_noes.Record_Status_no[i].Name,S_Status_no_info.Name); } i++; memset(&S_Status_no_info,'\0',sizeof(struct Alarm_Status_no_info)); } i=0; EXEC SQL WHENEVER NOTFOUND DO break; for (;;) { EXEC SQL FETCH :Name_no_cursor INTO :S_Name_no_info; if(shmp->Stru_Alarm_noes.Record_Name_no[i].Name_no!=0) { strcpy(shmp->Stru_Alarm_noes.Record_Name_no[i].Name_no,S_Name_no_info.Name_no); strcpy(shmp->Stru_Alarm_noes.Record_Name_no[i].Name,S_Name_no_info.Name); strcpy(shmp->Stru_Alarm_noes.Record_Name_no[i].Sort_no,S_Name_no_info.Sort_no); strcpy(shmp->Stru_Alarm_noes.Record_Name_no[i].Level_no,S_Name_no_info.Level_no); } i++; memset(&S_Name_no_info,'\0',sizeof(struct Alarm_Name_no_info)); } i=0; EXEC SQL WHENEVER NOTFOUND DO break; for (;;) { EXEC SQL FETCH :Site_no_cursor INTO :S_Site_no_info; if(shmp->Stru_Alarm_noes.Record_Site_no[i].Site_no!=0) { strcpy(shmp->Stru_Alarm_noes.Record_Site_no[i].Site_no,S_Site_no_info.Site_no); strcpy(shmp->Stru_Alarm_noes.Record_Site_no[i].Name,S_Site_no_info.Name); } i++; memset(&S_Site_no_info,'\0',sizeof(struct Alarm_Site_no_info)); } shmp->Stru_Alarm_noes.City_num=City_num; shmp->Stru_Alarm_noes.Status_num=Status_num; shmp->Stru_Alarm_noes.Name_num=Name_num; shmp->Stru_Alarm_noes.Site_num=Site_num; EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL CLOSE :City_no_cursor; EXEC SQL CLOSE :Status_no_cursor; EXEC SQL CLOSE :Name_no_cursor; EXEC SQL CLOSE :Site_no_cursor; if (( semid1=creatsem(SEMKEY1,proccount))<0) { syslog("Creat semaphore1 error",__FILE__,__LINE__); exit(-1); } shmdt((char*)shmp); syslog("Run share memery OK!",__FILE__,__LINE__); EXEC SQL commit work release; } else syslog("Connect Database Fall!",__FILE__,__LINE__); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -