⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sp_file.c

📁 其他 其他 其他 其他 其他 其他 其他 其他 其他 其他
💻 C
字号:
/* Result Sets Interface */#ifndef SQL_CRSR#  define SQL_CRSR  struct sql_cursor  {    unsigned int curocn;    void *ptr1;    void *ptr2;    unsigned int magic;  };  typedef struct sql_cursor sql_cursor;  typedef struct sql_cursor SQL_CURSOR;#endif /* SQL_CRSR *//* Thread Safety */typedef void * sql_context;typedef void * SQL_CONTEXT;/* Object support */struct sqltvn{  unsigned char *tvnvsn;   unsigned short tvnvsnl;   unsigned char *tvnnm;  unsigned short tvnnml;   unsigned char *tvnsnm;  unsigned short tvnsnml;};typedef struct sqltvn sqltvn;struct sqladts{  unsigned int adtvsn;   unsigned short adtmode;   unsigned short adtnum;    sqltvn adttvn[1];       };typedef struct sqladts sqladts;static struct sqladts sqladt = {  1,1,0,};/* Binding to PL/SQL Records */struct sqltdss{  unsigned int tdsvsn;   unsigned short tdsnum;   unsigned char *tdsval[1]; };typedef struct sqltdss sqltdss;static struct sqltdss sqltds ={  1,  0,};/* File name & Package Name */struct sqlcxp{  unsigned short fillen;           char  filnam[11];};static const struct sqlcxp sqlfpn ={    10,    "sp_file.pc"};static unsigned int sqlctx = 84131;static struct sqlexd {   unsigned long  sqlvsn;   unsigned int   arrsiz;   unsigned int   iters;   unsigned int   offset;   unsigned short selerr;   unsigned short sqlety;   unsigned int   occurs;      const short *cud;   unsigned char  *sqlest;      const char  *stmt;   sqladts *sqladtp;   sqltdss *sqltdsp;   unsigned char  **sqphsv;   unsigned long  *sqphsl;            int   *sqphss;            short **sqpind;            int   *sqpins;   unsigned long  *sqparm;   unsigned long  **sqparc;   unsigned short  *sqpadto;   unsigned short  *sqptdso;   unsigned int   sqlcmax;   unsigned int   sqlcmin;   unsigned int   sqlcincr;   unsigned int   sqlctimeout;   unsigned int   sqlcnowait;            int   sqfoff;   unsigned int   sqcmod;   unsigned int   sqfmod;   unsigned char  *sqhstv[4];   unsigned long  sqhstl[4];            int   sqhsts[4];            short *sqindv[4];            int   sqinds[4];   unsigned long  sqharm[4];   unsigned long  *sqharc[4];   unsigned short  sqadto[4];   unsigned short  sqtdso[4];} sqlstm = {12,4};/* SQLLIB Prototypes */extern void sqlcxt (void **, unsigned int *,                    struct sqlexd *, const struct sqlcxp *);extern void sqlcx2t(void **, unsigned int *,                    struct sqlexd *, const struct sqlcxp *);extern void sqlbuft(void **, char *);extern void sqlgs2t(void **, char *);extern void sqlorat(void **, unsigned int *, void *);/* Forms Interface */static const int IAPSUCC = 0;static const int IAPFAIL = 1403;static const int IAPFTL  = 535;extern void sqliem(char *, int *); static const char *sq0003 = "select a.device_number ,decode(b.status_code,'101','1','0') ,decode(b.statu\s_code,'101','开机','停机')  from info_corporation a ,info_local b where ((a.\flag='0' and a.user_no=b.user_no) and b.flag='0')           ";typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;typedef struct { unsigned short len; unsigned char arr[1]; } varchar;/* cud (compilation unit data) array */static const short sqlcud0[] ={12,4274,852,0,0,5,0,0,1,0,0,539,96,0,0,4,4,0,1,0,1,97,0,0,1,97,0,0,1,97,0,0,1,10,0,0,36,0,0,2,63,0,516,98,0,0,1,0,0,1,0,2,97,0,0,55,0,0,3,212,0,521,119,0,0,0,0,0,1,0,70,0,0,3,0,0,525,125,0,0,3,0,0,1,0,2,97,0,0,2,97,0,0,2,97,0,0,97,0,0,3,0,0,527,142,0,0,0,0,0,1,0,112,0,0,4,0,0,544,163,0,0,0,0,0,1,0,};#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sqlca.h>#include <oraca.h>#include <signal.h>#include "sp_file.h"#include "util.h"#include "acct_util.h"#define  TMP_SP_FILE_PATH	"../tmp_file/"#define  SP_FILE_PATH      "../sp_file/"int fileAttr = 0;char connStr[32];void main(int argc, char** argv){  int  ret;  int  pid;  char gs_local_net[7];  int li_ret;       memset(connStr,0x00,sizeof(connStr));    if(argc != 3){	printf("用法:命令 文件属性(1掌上股市   数据库链接串\n");	return;  }    fileAttr = atoi(argv[1]);  strcpy(connStr,argv[2]);	    strcpy(gs_local_net,"831");  li_ret = init_sqlca_info(connStr,gs_local_net);  if(li_ret != 0)  {	printf("以公共用户登录数据库,初始化全局变量出错!");	return;  }  	  pid = fork();  if(pid == -1){  	printf("创建企业新时空进程错误!\n");  	exit(-1);  }  if(pid > 0)  	exit(0);  	  pid = setsid();  if(pid == -1){  	printf("改变企业新时空进程属性错误!\n");  	exit(-1);  }  /*设置UNIX下的信号无效*/  signal(SIGINT, SIG_IGN);  signal(SIGTERM, SIG_IGN);  signal(SIGQUIT, SIG_IGN);  signal(SIGCLD, SIG_IGN);   if(fileAttr == 1)		xsk_file();  else	printf("文件属性参数无效\n");	    return;}/*企业新时空*/void xsk_file(){  int  ret;  char totalRecord[20];     char fileDateTime[15];  char fileName[128];  char command[32];    char deviceNumber[65];   char status_code[6];  char remarks[20];  int record_seri =0;    FILE *fd = NULL;    memset(command,0x00,sizeof(command));  memset(fileDateTime,0x00,sizeof(fileDateTime));  memset(fileName,0x00,sizeof(fileName));    /* EXEC SQL WHENEVER SQLERROR DO sql_error("function:dinner_send"); */   /* EXEC SQL CONNECT :sqlca_ib.log_id IDENTIFIED BY :sqlca_ib.log_pass USING :sqlca_ib.serv_name; */ {  struct sqlexd sqlstm;  sqlorat((void **)0, &sqlctx, &oraca);  sqlstm.sqlvsn = 12;  sqlstm.arrsiz = 4;  sqlstm.sqladtp = &sqladt;  sqlstm.sqltdsp = &sqltds;  sqlstm.iters = (unsigned int  )10;  sqlstm.offset = (unsigned int  )5;  sqlstm.cud = sqlcud0;  sqlstm.sqlest = (unsigned char  *)&sqlca;  sqlstm.sqlety = (unsigned short)256;  sqlstm.occurs = (unsigned int  )0;  sqlstm.sqhstv[0] = (unsigned char  *)(sqlca_ib.log_id);  sqlstm.sqhstl[0] = (unsigned long )31;  sqlstm.sqhsts[0] = (         int  )31;  sqlstm.sqindv[0] = (         short *)0;  sqlstm.sqinds[0] = (         int  )0;  sqlstm.sqharm[0] = (unsigned long )0;  sqlstm.sqadto[0] = (unsigned short )0;  sqlstm.sqtdso[0] = (unsigned short )0;  sqlstm.sqhstv[1] = (unsigned char  *)(sqlca_ib.log_pass);  sqlstm.sqhstl[1] = (unsigned long )31;  sqlstm.sqhsts[1] = (         int  )31;  sqlstm.sqindv[1] = (         short *)0;  sqlstm.sqinds[1] = (         int  )0;  sqlstm.sqharm[1] = (unsigned long )0;  sqlstm.sqadto[1] = (unsigned short )0;  sqlstm.sqtdso[1] = (unsigned short )0;  sqlstm.sqhstv[2] = (unsigned char  *)(sqlca_ib.serv_name);  sqlstm.sqhstl[2] = (unsigned long )31;  sqlstm.sqhsts[2] = (         int  )31;  sqlstm.sqindv[2] = (         short *)0;  sqlstm.sqinds[2] = (         int  )0;  sqlstm.sqharm[2] = (unsigned long )0;  sqlstm.sqadto[2] = (unsigned short )0;  sqlstm.sqtdso[2] = (unsigned short )0;  sqlstm.sqphsv = sqlstm.sqhstv;  sqlstm.sqphsl = sqlstm.sqhstl;  sqlstm.sqphss = sqlstm.sqhsts;  sqlstm.sqpind = sqlstm.sqindv;  sqlstm.sqpins = sqlstm.sqinds;  sqlstm.sqparm = sqlstm.sqharm;  sqlstm.sqparc = sqlstm.sqharc;  sqlstm.sqpadto = sqlstm.sqadto;  sqlstm.sqptdso = sqlstm.sqtdso;  sqlstm.sqlcmax = (unsigned int )100;  sqlstm.sqlcmin = (unsigned int )2;  sqlstm.sqlcincr = (unsigned int )1;  sqlstm.sqlctimeout = (unsigned int )0;  sqlstm.sqlcnowait = (unsigned int )0;  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);  if (sqlca.sqlcode < 0) sql_error("function:dinner_send");}    /* EXEC SQL SELECT TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS') INTO :fileDateTime FROM DUAL; */ {  struct sqlexd sqlstm;  sqlorat((void **)0, &sqlctx, &oraca);  sqlstm.sqlvsn = 12;  sqlstm.arrsiz = 4;  sqlstm.sqladtp = &sqladt;  sqlstm.sqltdsp = &sqltds;  sqlstm.stmt = "select TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS') into :b0  from \DUAL ";  sqlstm.iters = (unsigned int  )1;  sqlstm.offset = (unsigned int  )36;  sqlstm.selerr = (unsigned short)1;  sqlstm.cud = sqlcud0;  sqlstm.sqlest = (unsigned char  *)&sqlca;  sqlstm.sqlety = (unsigned short)256;  sqlstm.occurs = (unsigned int  )0;  sqlstm.sqhstv[0] = (unsigned char  *)fileDateTime;  sqlstm.sqhstl[0] = (unsigned long )15;  sqlstm.sqhsts[0] = (         int  )0;  sqlstm.sqindv[0] = (         short *)0;  sqlstm.sqinds[0] = (         int  )0;  sqlstm.sqharm[0] = (unsigned long )0;  sqlstm.sqadto[0] = (unsigned short )0;  sqlstm.sqtdso[0] = (unsigned short )0;  sqlstm.sqphsv = sqlstm.sqhstv;  sqlstm.sqphsl = sqlstm.sqhstl;  sqlstm.sqphss = sqlstm.sqhsts;  sqlstm.sqpind = sqlstm.sqindv;  sqlstm.sqpins = sqlstm.sqinds;  sqlstm.sqparm = sqlstm.sqharm;  sqlstm.sqparc = sqlstm.sqharc;  sqlstm.sqpadto = sqlstm.sqadto;  sqlstm.sqptdso = sqlstm.sqtdso;  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);  if (sqlca.sqlcode < 0) sql_error("function:dinner_send");}  PackString(fileDateTime);      sprintf(fileName,"%sNCF-%s.req",TMP_SP_FILE_PATH,fileDateTime);  PackString(fileName);  if((fd = fopen(fileName,"a")) == NULL){    printf("open file error\n");    return;  }              	/*EXEC SQL DECLARE cur_smg_sp CURSOR for		select device_number,decode(status_code,'101','1','0'),decode(status_code,'101','开机','停机')		from info_busi		where  device_number like '89234%' and flag = '0' and tele_type = 'LOCAL';*/		  /* EXEC SQL DECLARE cur_smg_sp CURSOR for	  select a.device_number,decode(b.status_code,'101','1','0'),decode(b.status_code,'101','开机','停机') from info_corporation a,info_local b	 		where a.flag = '0' and a.user_no = b.user_no and b.flag = '0'; */         /* EXEC SQL OPEN cur_smg_sp; */ {  struct sqlexd sqlstm;  sqlorat((void **)0, &sqlctx, &oraca);  sqlstm.sqlvsn = 12;  sqlstm.arrsiz = 4;  sqlstm.sqladtp = &sqladt;  sqlstm.sqltdsp = &sqltds;  sqlstm.stmt = sq0003;  sqlstm.iters = (unsigned int  )1;  sqlstm.offset = (unsigned int  )55;  sqlstm.selerr = (unsigned short)1;  sqlstm.cud = sqlcud0;  sqlstm.sqlest = (unsigned char  *)&sqlca;  sqlstm.sqlety = (unsigned short)256;  sqlstm.occurs = (unsigned int  )0;  sqlstm.sqcmod = (unsigned int )0;  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);  if (sqlca.sqlcode < 0) sql_error("function:dinner_send");}  while(1){  	memset(deviceNumber,0x00,sizeof(deviceNumber));  	  	memset(status_code,0x00,sizeof(status_code));  	memset(remarks,0x00,sizeof(remarks));  			/* EXEC SQL FETCH cur_smg_sp 					INTO :deviceNumber,						 :status_code,						 :remarks; */ {  struct sqlexd sqlstm;  sqlorat((void **)0, &sqlctx, &oraca);  sqlstm.sqlvsn = 12;  sqlstm.arrsiz = 4;  sqlstm.sqladtp = &sqladt;  sqlstm.sqltdsp = &sqltds;  sqlstm.iters = (unsigned int  )1;  sqlstm.offset = (unsigned int  )70;  sqlstm.selerr = (unsigned short)1;  sqlstm.cud = sqlcud0;  sqlstm.sqlest = (unsigned char  *)&sqlca;  sqlstm.sqlety = (unsigned short)256;  sqlstm.occurs = (unsigned int  )0;  sqlstm.sqfoff = (         int )0;  sqlstm.sqfmod = (unsigned int )2;  sqlstm.sqhstv[0] = (unsigned char  *)deviceNumber;  sqlstm.sqhstl[0] = (unsigned long )65;  sqlstm.sqhsts[0] = (         int  )0;  sqlstm.sqindv[0] = (         short *)0;  sqlstm.sqinds[0] = (         int  )0;  sqlstm.sqharm[0] = (unsigned long )0;  sqlstm.sqadto[0] = (unsigned short )0;  sqlstm.sqtdso[0] = (unsigned short )0;  sqlstm.sqhstv[1] = (unsigned char  *)status_code;  sqlstm.sqhstl[1] = (unsigned long )6;  sqlstm.sqhsts[1] = (         int  )0;  sqlstm.sqindv[1] = (         short *)0;  sqlstm.sqinds[1] = (         int  )0;  sqlstm.sqharm[1] = (unsigned long )0;  sqlstm.sqadto[1] = (unsigned short )0;  sqlstm.sqtdso[1] = (unsigned short )0;  sqlstm.sqhstv[2] = (unsigned char  *)remarks;  sqlstm.sqhstl[2] = (unsigned long )20;  sqlstm.sqhsts[2] = (         int  )0;  sqlstm.sqindv[2] = (         short *)0;  sqlstm.sqinds[2] = (         int  )0;  sqlstm.sqharm[2] = (unsigned long )0;  sqlstm.sqadto[2] = (unsigned short )0;  sqlstm.sqtdso[2] = (unsigned short )0;  sqlstm.sqphsv = sqlstm.sqhstv;  sqlstm.sqphsl = sqlstm.sqhstl;  sqlstm.sqphss = sqlstm.sqhsts;  sqlstm.sqpind = sqlstm.sqindv;  sqlstm.sqpins = sqlstm.sqinds;  sqlstm.sqparm = sqlstm.sqharm;  sqlstm.sqparc = sqlstm.sqharc;  sqlstm.sqpadto = sqlstm.sqadto;  sqlstm.sqptdso = sqlstm.sqtdso;  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);  if (sqlca.sqlcode < 0) sql_error("function:dinner_send");}		if(sqlca.sqlcode == 1403)	break;				record_seri++;			PackString(deviceNumber);		PackString(status_code);		PackString(remarks);				fprintf(fd,"%d|%s|%s|%s|%s|\n",		record_seri,deviceNumber,status_code,fileDateTime,remarks);	fflush(fd);  }    /* EXEC SQL CLOSE cur_smg_sp; */ {  struct sqlexd sqlstm;  sqlorat((void **)0, &sqlctx, &oraca);  sqlstm.sqlvsn = 12;  sqlstm.arrsiz = 4;  sqlstm.sqladtp = &sqladt;  sqlstm.sqltdsp = &sqltds;  sqlstm.iters = (unsigned int  )1;  sqlstm.offset = (unsigned int  )97;  sqlstm.cud = sqlcud0;  sqlstm.sqlest = (unsigned char  *)&sqlca;  sqlstm.sqlety = (unsigned short)256;  sqlstm.occurs = (unsigned int  )0;  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);  if (sqlca.sqlcode < 0) sql_error("function:dinner_send");}		      fprintf(fd,"%s\n","END");	fflush(fd);	  fclose(fd);    WriteLog(" 创建企业新时空文件 success\n");    sprintf(command,"mv %s/*.* %s/",TMP_SP_FILE_PATH,SP_FILE_PATH);  system(command);    return;      }void sql_error(char *msg){	/* EXEC SQL WHENEVER SQLERROR CONTINUE; */ 	printf("%s:%s\n",msg,sqlca.sqlerrm.sqlerrmc);    /* EXEC SQL ROLLBACK RELEASE; */ {    struct sqlexd sqlstm;    sqlorat((void **)0, &sqlctx, &oraca);    sqlstm.sqlvsn = 12;    sqlstm.arrsiz = 4;    sqlstm.sqladtp = &sqladt;    sqlstm.sqltdsp = &sqltds;    sqlstm.iters = (unsigned int  )1;    sqlstm.offset = (unsigned int  )112;    sqlstm.cud = sqlcud0;    sqlstm.sqlest = (unsigned char  *)&sqlca;    sqlstm.sqlety = (unsigned short)256;    sqlstm.occurs = (unsigned int  )0;    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);}	exit(1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -