雖然很多地方都有模組化,也有不少註解,但是還是覺得好麻煩呀!
Sopp[上班@國泰世華] 說:說再測試環境用的是同一個user,正式環境用的是不同user,在secuwccb.c內已經有寫好,要參考8920,8921這兩支交易,因為這兩支交易也用到NT_BranchDavid Tang 說:這二隻交易已經在線上使用了嗎David Tang 說:看有沒有VAR檔案就知道了Sopp[上班@國泰世華] 說:有的,在P類Sopp[上班@國泰世華] 說:fis8920.cSopp[上班@國泰世華] 說:ptp_fiscomm.c line315David Tang 說:ptp_fiscomm.c內有InsertLocationInfoInquiryLocationInfoUpdateLocationInfo可用David Tang 說:還有DeleteLocationInfoSopp[上班@國泰世華] 說:InquiryLocationInfoDavid Tang 說:ptp_fisccomm.c line 1182ConnectDBToBranch()可以取得連接NT_BRANCH的參數Sopp[上班@國泰世華] 說:應該用到的只有這個David Tang 說:可能會用到新增...刪除吧...David Tang 說:PTP_8920()可以直接拿來用Sopp[上班@國泰世華] 說:判斷LocationID是否存在,存在的話,才能繼續交易David Tang 說:yes..Sopp[上班@國泰世華] 說:那只要用inquiry就可以了吧?David Tang 說:小修改一下就行了David Tang 說:目前只要用到這個David Tang 說:如果他們要在VAR裡直接新增時...就會用到別的...David Tang 說:目前先不管....Sopp[上班@國泰世華] 說:嗯嗯David Tang 說:把程式連起來...David Tang 說:(1)在9xxx的VAR送一個RIM(參考8920的RIM....)David Tang 說:(2)在do_p_tx裡看程式跑到那裡.....如果到do_real_p_tx就沒問題...如果到'R'類...就要攔下來...跑你的程式(你在加一個.c/.h來處理這類的問題).......假設函式叫P9XXX_CheckLocationInfo()David Tang 說:(3)P9XXX_CheckLocationInfo()可以參考PTP_8920()....大部份的程式皆可用....Sopp[上班@國泰世華] 說:嗯David Tang 說: wsprintf(szTmpStr, "1MIF77%s", szMsg); Prepare_PU_Tom(pInfo, szTmpStr); Do_P_SendToWS(pInfo); return TRUE;就會將結果傳回DDPSopp[上班@國泰世華] 說:嗯David Tang 說:LLNewLLGetTotalLLGetBufferLLFree是用來處理Link List....David Tang 說:照著用就行了Sopp[上班@國泰世華] 說:嗯嗯David Tang 說:(1)在ThreadFuncForGM()/p_tp.c..裡加上 if (memcmp("P", &lpRIM->szApType[0], 1) == 0) { iReturn = Do_MX_RIM_ROM(pInfo, ejf); if(iReturn == TO_WS) { iReturn=SendToWS(pInfo); for(;iReturn==XMT_WOULDBLOCK iReturn=SendToWS(pInfo); } }David Tang 說:(2)你自己新增MX_R.C/MX_R.hDavid Tang 說:將Do_MX_RIM_ROM()放在MX_R.C MX_R.hDavid Tang 說:(3)Do_MX_RIM_ROM()參考Do_Rx_Rim_Rom_Tx()/RX_RIM_ROM.Cint Do_Rx_Rim_Rom_Tx(tClient *pInfo, EJFSTRUCT *ejf)Sopp[上班@國泰世華] 說:嗯David Tang 說:函式宣告如下:int Do_MX_RIM_ROM(tClient *pInfo, EJFSTRUCT *ejf)David Tang 說:注意Do_Rx_Rim_Rom_Tx()函式中如何取出RIM的值(Value A)....以及如果組成ROM(Value B)......了解的話...將Value A代入ptp_fisc8920()內...並且將ptp_fisc8920的結果以Value B方式輸出....應該可以...Sopp[上班@國泰世華] 說:Do_Rx_Rim_Rom_Tx 先copy過來用?David Tang 說:參考即可...David Tang 說:自己寫沒關係David Tang 說:裡面有很多別的交易的資料處理...沒什麼用...Sopp[上班@國泰世華] 說:嗯,有十七段David Tang 說:注意&(lpROM)....&lpRIM->szText[0].....此類的程式片斷David Tang 說:szText[0]應該就是查詢的資料本身Sopp[上班@國泰世華] 說:嗯David Tang 說: BYTE szApType[2]; BYTE szApCode[3];szText前面有以上5個Bytes...David Tang 說:所以...你在DDp裡面要留5個Bytes...David Tang 說:szApType及szApCode應該是用來判斷作什麼類的交易....David Tang 說:aptype裡會有R/C/O/P....David Tang 說:apCode裡會如果是001...要在local dB檢查某一個Account...David Tang 說:所以你在APType內應該要放"P " (2 Bytes)Sopp[上班@國泰世華] 說: lpRIM = (RIMST_A *)pInfo->RcvBuf;David Tang 說:APCode內放3個Bytes...例如001代表查詢locationInfoDavid Tang 說:yesDavid Tang 說:然後szText內的資料就可以拿來用....Sopp[上班@國泰世華] 說: if (memcmp("003",&lpRIM->szApCode[0],3) == 0) { //inquiry table rxbif RxbifRec Rxbif;Sopp[上班@國泰世華] 說: if (memcmp("R", &lpRIM->szApType[0], 1) == 0) {David Tang 說:例如szText內放待查詢的收付處ID..01好了....Sopp[上班@國泰世華] 說:合起來就是 RX003David Tang 說:你的應該要PX003吧....Sopp[上班@國泰世華] 說:R7100送上去查詢的代碼是用 RX003David Tang 說:yes...David Tang 說:你要自己編一個...David Tang 說:例如PX00102David Tang 說:後面的02表示收付處IDSopp[上班@國泰世華] 說:這樣可以嗎?Sopp[上班@國泰世華] 說:apcode只有3bytesDavid Tang 說:然後copy ptp_fisc8920程式來用...David Tang 說:yes...David Tang 說:應該夠用....Sopp[上班@國泰世華] 說:總共5byte...你這樣就7bytesDavid Tang 說:02表示szTextDavid Tang 說:裡的資料Sopp[上班@國泰世華] 說:嗯Sopp[上班@國泰世華] 說:那可能會變成Sopp[上班@國泰世華] 說:PX0010010209012 之淚的David Tang 說:yes....David Tang 說:copy ptp_fisc8920().來用....因為...裡面有查詢locationInfo的程式片斷可以用...David Tang 說:注意ptp_fis8920.c line 119 iErrCode = P052; //資料已存在Sopp[上班@國泰世華] 說:PTP_FISC8920() 是不是要自己COPY一個出來用?David Tang 說:所以...InquiryLocationInfo()的結果是iErrCode = P052..就表示資料已存在..David Tang 說:yesSopp[上班@國泰世華] 說: iRecCnt = LLGetTotal(pLink); iErrCode = 0; switch (szOperation[0]) { case '1': //新增 if (iRecCnt > 0) { iErrCode = P052; //資料已存在 break; }David Tang 說:自己訂一個名子例如P9XXX_CheckLocationInfo...David Tang 說:要看你要不要判斷新增/刪除/修改....如果只是查詢...就直接判斷if (iRtnCode == SQL_ERROR) => errorDavid Tang 說:if (iRecCnt > 0) => 資料存在...David Tang 說:了解嗎Sopp[上班@國泰世華] 說: case '2': //修改 if (iRecCnt == 0) { iErrCode = P053; //資料不存在 break; }Sopp[上班@國泰世華] 說:嗯嗯
Post a Comment
1 comment:
Sopp[上班@國泰世華] 說:
說再測試環境用的是同一個user,正式環境用的是不同user,在secuwccb.c內已經有寫好,要參考8920,8921這兩支交易,因為這兩支交易也用到NT_Branch
David Tang 說:
這二隻交易已經在線上使用了嗎
David Tang 說:
看有沒有VAR檔案就知道了
Sopp[上班@國泰世華] 說:
有的,在P類
Sopp[上班@國泰世華] 說:
fis8920.c
Sopp[上班@國泰世華] 說:
ptp_fiscomm.c line315
David Tang 說:
ptp_fiscomm.c內有
InsertLocationInfo
InquiryLocationInfo
UpdateLocationInfo
可用
David Tang 說:
還有
DeleteLocationInfo
Sopp[上班@國泰世華] 說:
InquiryLocationInfo
David Tang 說:
ptp_fisccomm.c line 1182
ConnectDBToBranch()可以取得連接NT_BRANCH的參數
Sopp[上班@國泰世華] 說:
應該用到的只有這個
David Tang 說:
可能會用到新增...刪除吧...
David Tang 說:
PTP_8920()可以直接拿來用
Sopp[上班@國泰世華] 說:
判斷LocationID是否存在,存在的話,才能繼續交易
David Tang 說:
yes..
Sopp[上班@國泰世華] 說:
那只要用inquiry就可以了吧?
David Tang 說:
小修改一下就行了
David Tang 說:
目前只要用到這個
David Tang 說:
如果他們要在VAR裡直接新增時...就會用到別的...
David Tang 說:
目前先不管....
Sopp[上班@國泰世華] 說:
嗯嗯
David Tang 說:
把程式連起來...
David Tang 說:
(1)在9xxx的VAR送一個RIM(參考8920的RIM....)
David Tang 說:
(2)在do_p_tx裡看程式跑到那裡.....如果到do_real_p_tx就沒問題...如果到'R'類...就要攔下來...跑你的程式(你在加一個.c/.h來處理這類的問題).......假設函式叫P9XXX_CheckLocationInfo()
David Tang 說:
(3)P9XXX_CheckLocationInfo()可以參考PTP_8920()....大部份的程式皆可用....
Sopp[上班@國泰世華] 說:
嗯
David Tang 說:
wsprintf(szTmpStr, "1MIF77%s", szMsg);
Prepare_PU_Tom(pInfo, szTmpStr);
Do_P_SendToWS(pInfo);
return TRUE;
就會將結果傳回DDP
Sopp[上班@國泰世華] 說:
嗯
David Tang 說:
LLNew
LLGetTotal
LLGetBuffer
LLFree
是用來處理Link List....
David Tang 說:
照著用就行了
Sopp[上班@國泰世華] 說:
嗯嗯
David Tang 說:
(1)在ThreadFuncForGM()/p_tp.c..裡加上
if (memcmp("P", &lpRIM->szApType[0], 1) == 0)
{
iReturn = Do_MX_RIM_ROM(pInfo, ejf);
if(iReturn == TO_WS)
{
iReturn=SendToWS(pInfo);
for(;iReturn==XMT_WOULDBLOCK
iReturn=SendToWS(pInfo);
}
}
David Tang 說:
(2)你自己新增MX_R.C/MX_R.h
David Tang 說:
將Do_MX_RIM_ROM()放在MX_R.C MX_R.h
David Tang 說:
(3)Do_MX_RIM_ROM()參考Do_Rx_Rim_Rom_Tx()/RX_RIM_ROM.C
int Do_Rx_Rim_Rom_Tx(tClient *pInfo, EJFSTRUCT *ejf)
Sopp[上班@國泰世華] 說:
嗯
David Tang 說:
函式宣告如下:
int Do_MX_RIM_ROM(tClient *pInfo, EJFSTRUCT *ejf)
David Tang 說:
注意Do_Rx_Rim_Rom_Tx()函式中如何取出RIM的值(Value A)....
以及如果組成ROM(Value B)......
了解的話...
將Value A代入ptp_fisc8920()內...並且將ptp_fisc8920的結果以Value B方式輸出....應該可以...
Sopp[上班@國泰世華] 說:
Do_Rx_Rim_Rom_Tx 先copy過來用?
David Tang 說:
參考即可...
David Tang 說:
自己寫沒關係
David Tang 說:
裡面有很多別的交易的資料處理...沒什麼用...
Sopp[上班@國泰世華] 說:
嗯,有十七段
David Tang 說:
注意&(lpROM)....
&lpRIM->szText[0].....此類的程式片斷
David Tang 說:
szText[0]應該就是查詢的資料本身
Sopp[上班@國泰世華] 說:
嗯
David Tang 說:
BYTE szApType[2];
BYTE szApCode[3];
szText前面有以上5個Bytes...
David Tang 說:
所以...你在DDp裡面要留5個Bytes...
David Tang 說:
szApType及szApCode應該是用來判斷作什麼類的交易....
David Tang 說:
aptype裡會有R/C/O/P....
David Tang 說:
apCode裡會如果是001...要在local dB檢查某一個Account...
David Tang 說:
所以你在APType內應該要放"P " (2 Bytes)
Sopp[上班@國泰世華] 說:
lpRIM = (RIMST_A *)pInfo->RcvBuf;
David Tang 說:
APCode內放3個Bytes...例如001代表查詢locationInfo
David Tang 說:
yes
David Tang 說:
然後szText內的資料就可以拿來用....
Sopp[上班@國泰世華] 說:
if (memcmp("003",&lpRIM->szApCode[0],3) == 0)
{
//inquiry table rxbif
RxbifRec Rxbif;
Sopp[上班@國泰世華] 說:
if (memcmp("R", &lpRIM->szApType[0], 1) == 0)
{
David Tang 說:
例如szText內放待查詢的收付處ID..01好了....
Sopp[上班@國泰世華] 說:
合起來就是 RX003
David Tang 說:
你的應該要PX003吧....
Sopp[上班@國泰世華] 說:
R7100送上去查詢的代碼是用 RX003
David Tang 說:
yes...
David Tang 說:
你要自己編一個...
David Tang 說:
例如PX00102
David Tang 說:
後面的02表示收付處ID
Sopp[上班@國泰世華] 說:
這樣可以嗎?
Sopp[上班@國泰世華] 說:
apcode只有3bytes
David Tang 說:
然後copy ptp_fisc8920程式來用...
David Tang 說:
yes...
David Tang 說:
應該夠用....
Sopp[上班@國泰世華] 說:
總共5byte...你這樣就7bytes
David Tang 說:
02表示szText
David Tang 說:
裡的資料
Sopp[上班@國泰世華] 說:
嗯
Sopp[上班@國泰世華] 說:
那可能會變成
Sopp[上班@國泰世華] 說:
PX0010010209012 之淚的
David Tang 說:
yes....
David Tang 說:
copy ptp_fisc8920().來用....
因為...裡面有查詢locationInfo的程式片斷可以用...
David Tang 說:
注意
ptp_fis8920.c line 119
iErrCode = P052; //資料已存在
Sopp[上班@國泰世華] 說:
PTP_FISC8920() 是不是要自己COPY一個出來用?
David Tang 說:
所以...InquiryLocationInfo()的結果是iErrCode = P052..就表示資料已存在..
David Tang 說:
yes
Sopp[上班@國泰世華] 說:
iRecCnt = LLGetTotal(pLink);
iErrCode = 0;
switch (szOperation[0])
{
case '1': //新增
if (iRecCnt > 0)
{
iErrCode = P052; //資料已存在
break;
}
David Tang 說:
自己訂一個名子例如P9XXX_CheckLocationInfo...
David Tang 說:
要看你要不要判斷新增/刪除/修改....如果只是查詢...就直接判斷
if (iRtnCode == SQL_ERROR) => error
David Tang 說:
if (iRecCnt > 0) => 資料存在...
David Tang 說:
了解嗎
Sopp[上班@國泰世華] 說:
case '2': //修改
if (iRecCnt == 0)
{
iErrCode = P053; //資料不存在
break;
}
Sopp[上班@國泰世華] 說:
嗯嗯
Post a Comment