|
RAPT様
ご返信ありがとうございます。
言葉につきまして申し訳ございません。
今回の事象なのですが、実はOracleもからんでいます。
Oracle8i R8.1.7 wor windowsからCのDLLファイルをコールしております。
Oracle上でVARCHAR2で作成したデータをCのDLLファイルに引数で渡しております。データは、ASCIIコード表であらわされる範囲です。
CのDLLでそのデータはchar[]型で受け取っているのですが、unsigned char []へ変換を行ないたいのですができません。
下記にソースを記述いたしましたが、Cの中でデータを作成して変換すると変換できます。
Oracleから渡されたデータで変換ができないのがなぜなのかmemcpyコマンドによる型変換に懸念事項があるのであればご教授願います。
以下は、変換ができるときのソースです。(異常時のソースではないですが同じような内容です)
よろしくお願いいたします。
---------------ここからソースです-------------------
#include <stdio.h>
#include <string.h>
void main()
{
char ora_send_data[ 300 ];
unsigned char send_data[ 300 ];
char *recv;
strcpy(ora_send_data,"abcdefghijklmn");
printf ("CHECKORA0 = %x\n",ora_send_data[0]);
printf ("CHECKORA1 = %x\n",ora_send_data[1]);
printf ("CHECKORA2 = %x\n",ora_send_data[2]);
printf ("CHECKORA3 = %x\n",ora_send_data[3]);
printf ("CHECKORA4 = %x\n",ora_send_data[4]);
printf ("CHECKORA5 = %x\n",ora_send_data[5]);
printf ("CHECKORA6 = %x\n",ora_send_data[6]);
printf ("CHECKORA7 = %x\n",ora_send_data[7]);
printf ("CHECKORA8 = %x\n",ora_send_data[8]);
printf ("CHECKORA9 = %x\n",ora_send_data[9]);
printf ("CHECKORA10 = %x\n",ora_send_data[10]);
recv = memcpy((char *)send_data,ora_send_data,sizeof(ora_send_data));
printf ("CHECK0 = %x\n",send_data[0]);
printf ("CHECK1 = %x\n",send_data[1]);
printf ("CHECK2 = %x\n",send_data[2]);
printf ("CHECK3 = %x\n",send_data[3]);
printf ("CHECK4 = %x\n",send_data[4]);
printf ("CHECK5 = %x\n",send_data[5]);
printf ("CHECK6 = %x\n",send_data[6]);
printf ("CHECK7 = %x\n",send_data[7]);
printf ("CHECK8 = %x\n",send_data[8]);
printf ("CHECK9 = %x\n",send_data[9]);
printf ("CHECK10 = %x\n",send_data[10]);
if(fclose(fp)==EOF) {
return;
}
}
|