📄 pcs_snd_yx1.c
字号:
/* Result Sets Interface */
#ifndef SQL_CRSR
# define SQL_CRSR
struct sql_cursor
{
unsigned int curocn;
void *ptr1;
void *ptr2;
unsigned long 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;
/* File name & Package Name */
struct sqlcxp
{
unsigned short fillen;
char filnam[15];
};
static struct sqlcxp sqlfpn =
{
14,
"Pcs_Snd_YX1.pc"
};
static unsigned long sqlctx = 1279363;
static struct sqlexd {
unsigned int sqlvsn;
unsigned int arrsiz;
unsigned int iters;
unsigned int offset;
unsigned short selerr;
unsigned short sqlety;
unsigned int unused;
short *cud;
unsigned char *sqlest;
char *stmt;
unsigned char **sqphsv;
unsigned int *sqphsl;
short **sqpind;
unsigned int *sqparm;
unsigned int **sqparc;
unsigned char *sqhstv[1];
unsigned int sqhstl[1];
short *sqindv[1];
unsigned int sqharm[1];
unsigned int *sqharc[1];
} sqlstm = {8,1};
/* Prototypes */
extern sqlcxt (/*_ void **, unsigned long *,
struct sqlexd *, struct sqlcxp * _*/);
extern sqlcx2t(/*_ void **, unsigned long *,
struct sqlexd *, struct sqlcxp * _*/);
extern sqlbuft(/*_ void **, char * _*/);
extern sqlgs2t(/*_ void **, char * _*/);
extern sqlorat(/*_ void **, unsigned long *, void * _*/);
/* Forms Interface */
static int IAPSUCC = 0;
static int IAPFAIL = 1403;
static int IAPFTL = 535;
extern void sqliem(/*_ char *, int * _*/);
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 short sqlcud0[] =
{8,4130,
2,0,0,1,0,0,32,56,0,0,0,0,1,0,
16,0,0,2,0,0,32,114,0,0,0,0,1,0,
30,0,0,3,0,0,32,122,0,0,0,0,1,0,
44,0,0,4,0,0,32,130,0,0,0,0,1,0,
58,0,0,5,0,0,32,142,0,0,0,0,1,0,
72,0,0,6,0,0,29,146,0,0,0,0,1,0,
86,0,0,7,0,0,32,155,0,0,0,0,1,0,
100,0,0,8,0,0,32,175,0,0,0,0,1,0,
114,0,0,9,0,0,29,187,0,0,0,0,1,0,
};
/********************************************************************************
* File Name : PCSSndYX1.pc *
* Module ID : MD_P05_01 *
* Module Name : PCSSNDYX1.pc *
* Purpose : Read YX file,write YX DB *
* Auther : lix *
* Date Created : 07/20/1999 *
* Version : Version 1.0 *
* Environment : OSF1 Compaq V4.0 (Alpha) *
* Portability : Unix platform *
* Warnings : *
* References : *
* Calling Syntax : *
* Parameters : *
* Returns : integer *
* 0 success *
* -1 failure *
* Calling Functions : *
* InitPCSSndYX1() *
* OpenYXFileForRead() *
* ReadYXFileForData() *
* getyxfilelen() *
* CreateSndLogAndHZRec() *
* UpdateSndLogStatus() *
* InsertSndYXDBRec() *
* InsertSndTMPDBRec() *
* Called Functions : Forked by PCSFileDepart.xx *
* Data Stores and Usages : *
* (a) Input : *
* (b) Output : T_FSRZ,T_HZ,T_FSYXSJ,T_ZCFSSJ *
* Report : none *
* Screens : none *
* Message Files : none *
* *
* Change Log : *
* Change No. Date Auther Reason for Change *
*******************************************************************************/
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <sqlca.h>
#include <sqlcpr.h>
#include <signal.h>
#include "/usr/bkfx/include/Pcs_Snd_YX1/cmYXStr.h"
#include "/usr/bkfx/include/Pcs_Snd_YX1/cmdef.h"
#include "/usr/bkfx/include/Pcs_Snd_YX1/Pcs_Snd_YX1.h"
#include "/usr/bkfx/include/Pcs_Snd_YX1/yx1api.h"
int freect(void)
{
if( fp!=NULL )
fclose(fp);
/* EXEC SQL ROLLBACK WORK RELEASE; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 0;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )2;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
exit(0);
}
/* Usage : PCSSndYX1.x filename */
int mainfunction(char *arg)
{
long ptr;
char *charpoint;
char yx_Data[LEN_YX_REC];
struct stYXDBRec rec_YX_DB;
char *buf_data;
char datatype[2];
char rcv_province_code[3]="00\0";
char subtype[4];
char snd_city[3];
char fno[3];
long serial_no;
char status;
int flag,round_conl;
int gid=1,count=0;
float avrg;
int mod_y;
int retcode=0;
char *PID = "Client Txn Clt_Mpt Process(Port 7111)";
ERROR=0;
rtncode=0;
signal(SIGTERM,freect);
/* Get filename, subtype,snd_city,fno */
filename[0]='\0';
FILENAME[0]='\0';
strcpy(FILENAME,arg);
trimpath(FILENAME,filename);
charpoint = &filename[0];
charpoint+= 2;
strncpy(subtype,charpoint,3);
subtype[3] = '\0';
charpoint += 3;
strncpy(snd_city,charpoint,2);
snd_city[2]='\0';
charpoint += 3;
strncpy(fno,charpoint,2);
fno[2] = '\0';
status = FSRZ_UNDER_RCV;
datatype[0] = SJFL_YX;
datatype[1] = '\0';
flag=InitPCSSndYX1();
if( flag!=0 )
{
/* EXEC SQL ROLLBACK WORK RELEASE; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 0;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )16;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
ProcessError(LOG_ERROR,"PCS_Snd_YX1: init error",END);
return(-1);
}
flag=OpenYXFileForRead();
if( flag!=0 )
{
/* EXEC SQL ROLLBACK WORK RELEASE; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 0;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )30;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
ProcessError(LOG_ERROR,"PCS_Snd_YX1: open yx file error",END);
return(-1);
}
flag=CreateSndLogAndHZRec(&serial_no,datatype,rcv_province_code,status);
if( flag!=0 )
{
/* EXEC SQL ROLLBACK WORK RELEASE; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 0;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )44;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
return(-1);
}
rec_YX_DB.serial_no = serial_no;
strcpy(rec_YX_DB.wjbh,fno);
strcpy(rec_YX_DB.yxxl,subtype);
/* Insert a record of T_FSYXSJ */
flag=InsertSndYXDBRec(rec_YX_DB);
if( flag!=0 )
{
/* EXEC SQL ROLLBACK WORK RELEASE; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 0;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )58;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
ProcessError(LOG_ERROR,"PCS_Snd_YX1: insert yx record error",END);
return(-1);
}
/* EXEC SQL COMMIT WORK; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 0;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )72;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
/* Get length of input YX file */
filelen = getyxfilelen();
total_zh= filelen/LEN_YX_REC;
if( total_zh>998 )
{
ProcessError(LOG_ERROR,"PCS_Snd_YX1: yx filelen is too long",END);
/* EXEC SQL ROLLBACK WORK RELEASE; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 0;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )86;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
return(-1);
}
if( filelen > (total_zh*LEN_YX_REC) )
total_zh=total_zh+1;
/* A loop to read fixed length data from YX file and write to T_ZCFSSJ record */
rtncode = 1;
for ( ; ; )
{
round_conl=ReadYXFileData(yx_Data);
#ifdef DEBUG
PutintoF(yx_Data);
printf("yxdata len is %d\n",strlen(yx_Data));
#endif
ERROR=0;
flag=InsertSndTMPDBRec(serial_no,gid++,yx_Data);
if( flag!=0 )
{
/* EXEC SQL ROLLBACK WORK RELEASE; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 0;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )100;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
ProcessError(LOG_ERROR,"PCS_Snd_YX1: insert yx data to t_zcfssj error",END);
fclose(fp);
return(-1);
}
if( round_conl )
break;
}
/* Update T_FSRZ with new status : waiting for send */
status = FSRZ_WAITFOR_SND;
UpdateSndLogStatus(serial_no, status);
/* EXEC SQL COMMIT WORK; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 8;
sqlstm.arrsiz = 0;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )114;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
return(0);
}
void main(int argc,char *arg[])
{
char tmpstr[100];
int ret_code;
if (argc <= 1)
{
ProcessError(LOG_ERROR,"PCS_Snd_YX1: follow usage: program_name filename",END);
return;
}
YX_PC_INT=atoi(arg[2]);
ret_code=mainfunction(arg[1]);
if( ret_code!=0 )
{
ProcessError(LOG_ERROR,"PCS_SND_YX1: error found when put into database by file ", arg[1]);
sprintf(tmpstr,"mv %s %s", arg[1],"/usr/bkfx/data/rcv/backup/.");
system(tmpstr);
}
else
{
sprintf(tmpstr,"rm %s",arg[1]);
system(tmpstr);
}
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -