typedef struct tagCUNBOPRM {
long Version; /* Structure version number */
long Length; /* Length of structure */
long Res1; /* Reserved */
void * Src1_Buf_Ptr; /* Pointer to Source 1 */
unsigned long Src1_Buf_ALET; /* ALET of source buffer 1 */
unsigned long Src1_Buf_Len; /* Length of source data 1 */
long Res2; /* Reserved */
void * Src2_Buf_Ptr; /* Pointer to Source2 */
unsigned long Src2_Buf_ALET; /* ALET of source buffer 2 */
unsigned long Src2_Buf_Len; /* Length of source data 2 */
long Res3; /* Reserved */
void * Targ1_Buf_Ptr; /* Pointer to Target 1 */
unsigned long Targ1_Buf_ALET; /* ALET of target buffer 1 */
unsigned long Targ1_Buf_Len; /* Length of target data 1 */
long Res4; /* Reserved */
void * Targ2_Buf_Ptr; /* Pointer to target 2 */
unsigned long Targ2_Buf_ALET; /* ALET of target buffer 2 */
unsigned long Targ2_Buf_Len; /* Length of target data 2 */
char Coll_Handle[64]; /* Collation handle */
unsigned char Coll_Level; /* Collation Level type */
unsigned char Res5[7]; /* Reserved */
long Res6; /* Reserved */
void * Wrk1_Buf_Ptr; /* Pointer to work1 buffer */
unsigned long Wrk1_Buf_ALET; /* ALET of work1 buffer */
unsigned long Wrk1_Buf_Len; /* Length of work1 buffer */
long Res7; /* Reserved */
void * Wrk2_Buf_Ptr; /* Pointer to work2 buffer */
unsigned long Wrk2_Buf_ALET; /* ALET of work2 buffer */
unsigned long Wrk2_Buf_Len; /* Length of work2 buffer */
long Res8; /* Reserved */
void * DDA_Buf_Ptr; /* Pointer to dynamic data area*/
unsigned long DDA_Buf_ALET; /* ALET of DDA */
unsigned long DDA_Buf_Len; /* Length of DDA */
struct {
int Inv_Handle : 1, /* Invalid handle action: */
/* 0 = Terminate with error */
/* 1 = Get new handle and */
Get_New_Handle : 1, /* Get a new handle */
/* Source Character */
/* 0 = Get/Use a handle and */
/* continue with the service */
/* 1 = Get handle and return */
/* to the caller */
Page_Fix : 1, /* Page Fixing: */
/* 0=System storage */
/* 1=Page Fixing. */
: 5;
} Flag1; /* FLAG Byte 1 set by caller */
unsigned char Res9[1]; /* Reserved */
struct {
int Variable_Opt : 3, /* Where : */
/* 0 - Shifted */
/* 1 - Blanked */
/* 10 - Non Blanked */
/* 11 - Shift-Trimmed and */
Cmp_Order : 1, /* Where : */
/* 0 - Forward */
/* 1 - Backward (French) */
SKey_Opt : 1, /* Where: */
/* 0 - Not Get Sort Key */
/* 1 - Get Sort Key */
Norm_Type : 3, /* Normalization Form */
/* 000 - No Apply Normalization*/
/* 001 - Apply NFD */
/* 010 - Apply NFC */
/* 011 - Apply NFKD */
/* 100 - Apply NFKC */
SKey_and_Cmp : 1, /* Make binary comparison */
/* (CUNBOPRM_RESULT), if and */
/* only if, CUN4BOPR_SKey_Opt */
/* is ON: */
/* 0 - Do not perform binary */
/* comparison */
/* 1 - Perform binary comparison*/
: 7; /* Padding */
} Coll_Mask; /* Collation Mask */
signed long Coll_Result; /* Collation Result */
long Return_Code; /* Return code */
long Reason_Code; /* Reason code */
unsigned char UCA_Ver[1]; /* UCA Version */
unsigned char Res10[2]; /* Padding */
struct {
int Case_First : 8, /* Where: */
/* 000 - Default */
/* 001 - Upper First */
/* 010 - Lower First */
Case_Level : 1, /* Where: */
/* 0 - Default */
/* 1 - Primary Level will */
/* ignore accent but not */
/* case */
: 7; /* Padding */
} Case_Options;
struct {
int Hiragana : 1, /* Distinguish between Japanese*/
/* hiragana and Katakana chars */
/* Where: */
/* 0 - Default */
/* 1 - Conform to the */
/* Japanese JIS X 4061 */
/* standard with Primary */
/* Level */
: 7; /* Reserved */
} Special;
unsigned char Res11[2]; /* Padding */
unsigned long Var_Top; /* Variable Top - UTF16BE */
struct {
char Language [ 2]; /* Language */
char Underscore1 [ 1]; /* Underscore */
char Region [ 2]; /* Region */
char Underscore2 [ 1]; /* Underscore */
char Variant [26]; /* Variant */
} Locale;
unsigned char Res12[2]; /* Padding */
unsigned char Collation_Keyword[64]; /* Collation Keyword - ICU */
/* set short form */
unsigned char DSName[44]; /* Data Set Name */
unsigned char Res13[4]; /* Padding */
unsigned char Collation_Rules_File[8]; /* Member */
unsigned char Collation_Rules_Vol[6]; /* Data Set Name Volume */
unsigned char Res14[2]; /* Padding */
} CUNBOPRM;