![]() |
![]() |
|
|
文字列を変換する関数
ユーザ指定の型 FLD_STRING への変換および FLD_STRING からの変換を処理するために、以下の関数が提供されています。
これらの関数は、対応する非文字列用の関数を呼び出し、FLD_STRING 型と len 0 を提供します。ただし、Ffinds が返すポインタの有効期間は、CFfind の場合と同じです。
これらの関数の説明については、『BEA Tuxedo FML リファレンス』を参照してください。
Ftypcvt
CFadd、CFchg、CFget、CFgetalloc、CFfind の各関数は、Ftypcvt を使用して、適切なデータ変換を行います。Ftypcvt32 関数は、フィールド型 FLD_PTR、FLD_FML32、および FLD_VIEW32 では失敗します。Ftypcvt を使用する場合の形式は、次のとおりです。この形式は、パラメータの順序に関する規則に準拠しません。
char*
Ftypcvt(FLDLEN *tolen, int totype, char *fromval, int fromtype, FLDLEN fromlen)
以下はパラメータの説明です。
Ftypcvt は、fromlen で指定された長さの fromtype 型の *fromval の値 (fromtype が FLD_CARRAY の場合。それ以外の場合、fromlen は fromtype から算出される。) を、totype 型の値に変換します。Ftypcvt が成功すると、変換後の値に対するポインタが返され、*tolen に変換後の長さが設定されます。失敗すると、Ftypcvt から NULL が返されます。CFchg 関数を使用した次の例を参照してください。
CFchg(fbfr,fieldid,oc,value,len,type)
FBFR *fbfr; /* フィールド化バッファ */
FLDID fieldid; /* 変更されるべきフィールド */
FLDOCC oc; /* 変更されるべきフィールドのオカレンス */
char *value; /* 新しい値に対するポインタ */
FLDLEN len; /* 新しい値の長さ */
int type; /* 新しい値のタイプ */
{
char *convloc; /* 変換された値に対するポインタ */
FLDLEN convlen; /* 変換された値の長さ */
extern char *Ftypcvt;
/* 値をフィールド化バッファ・タイプに変換 */
if((convloc = Ftypcvt(&convlen,FLDTYPE(fieldid),value,type,len)) == NULL)
return(-1);
if(Fchg(fbfr,fieldid,oc,convloc,convlen) < 0)
return(-1);
return(1);
}
Ftypcvt を直接呼び出して、フィールド化バッファを変更せずにフィールド値を変換することができます。
詳細については、『BEA Tuxedo FML リファレンス』の「Ftypcvt、Ftypcvt32(3fml)」を参照してください。
変換の規則
以下は、変換時の規則の一覧です。oldval は、変換対象のデータ項目に対するポインタを表し、newval は変換後の値に対するポインタを表します。
*((float *)newval) = *((short *) oldval)
sprintf(newval,"%d",*((short *)oldval))
*((float *)newval) = atof(oldval)
*((float *)newval) = *((char *)oldval)
short 型から char 型へ変換するには、次の例に示す方法を使用します。
*((char *)newval) = *((short *)oldval)
ただし、長さ 1 の carray 型と char 型は、以下の点で異なります。
次の表は、この節で示した変換規則をまとめたものです。
変換前の型 |
変換後の型 |
|||||||
---|---|---|---|---|---|---|---|---|
- |
char |
short |
long |
float |
double |
string |
CARRAY |
dec_t |
char |
- |
cast |
cast |
cast |
cast |
st[0]=c |
array[0]=c |
d |
short |
cast |
- |
cast |
cast |
cast |
sprintf |
sprintf |
d |
long |
cast |
cast |
- |
cast |
cast |
sprintf |
sprintf |
d |
float |
cast |
cast |
cast |
- |
cast |
sprintf |
sprintf |
d |
double |
cast |
cast |
cast |
cast |
- |
sprintf |
sprintf |
d |
string |
c=st[0] |
atoi |
atol |
atof |
atof |
- |
drop 0 |
d |
carray |
c=array[0] |
atoi |
atol |
atof |
atof |
add 0 |
- |
d |
dec_t |
d |
d |
d |
d |
d |
d |
d |
- |
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|