- 论坛徽章:
- 0
|
如果需要转数据文件PF而不是SRCPF,那么需要知道PF的结构,另外最起码还要知道A、O、P、S型字段的转码。
我也是自己写转码程序,在AS/400和UNIX或者DOS/WINDOWS下跑。
汉字支持GBK字符集。
例如我的部分函数原型:
USGC ASCIItoEBCDIC(USGC c);
USGC EBCDICtoASCII(USGC c);
int isprintEBCDIC(USGC c);
USGS HZ_A2E(USGS GB_Code);
USGS HZ_E2A(USGS EBCDIC_Code);
int Str_A2E(USGC *src, int src_len, USGC *dest);
int Str_E2A(USGC *src, int src_len, USGC *dest);
int CvtFldA2E(USGC *Ebuf, int lenE, char fld_type, int fld_len,
int fld_dec, USGC *Abuf, int lenA, LDU *val_ptr);
int CvtFldE2A(USGC *Ebuf, int lenE, char fld_type, int fld_len,
int fld_dec, USGC *Abuf, int lenA, LDU *val_ptr);
int CvtFldP2A(USGC *Ebuf, int lenE, int fld_len, int fld_dec,
USGC *Abuf, int lenA);
int CvtFldS2A(USGC *Ebuf, int lenE, int fld_len, int fld_dec,
USGC *Abuf, int lenA);
int CvtFld_long2P(USGC *Ebuf, int lenE, int fld_len, long n);
int CvtFld_long2S(USGC *Ebuf, int lenE, int fld_len, long n);
int CvtFld_double2P(USGC *Ebuf, int lenE, int fld_len, int fld_dec, double n);
int CvtFld_double2S(USGC *Ebuf, int lenE, int fld_len, int fld_dec, double n);
int BigDecimalStrA2Ebuf(USGC *Ebuf, int lenE, int fld_len, int fld_dec,
USGC *Abuf, int lenA, char fld_type);
int BigDecimalEbuf2Astr(USGC *Ebuf, int lenE, int fld_len, int fld_dec,
USGC *Abuf, int lenA, char fld_type, int mode);
int BufFldA2E(USGC *FldPtrE, int FldLenE, char FldType,
int FldLen, int FldDec, USGC *FldPtrA, int FldLenA);
int BufFldE2A(USGC *FldPtrE, int FldLenE, char FldType,
int FldLen, int FldDec, USGC *FldPtrA, int FldLenA);
int BufFldA2Estr(USGC *Ebuf, int LenE, char FldType,
int FldLen, int FldDec, USGC *FldPtrA, int FldLenA);
int BufFldE2Astr(USGC *FldPtrE, int FldLenE, char FldType,
int FldLen, int FldDec, USGC *Abuf, int LenA); |
|