typedef struct tagCUNBCPRM {
long Version; /* Structure version number */
long Length; /* Length of structure */
long Res1; /* Reserved */
void * Src_Buf_Ptr; /* Pointer to Source */
unsigned long Src_Buf_ALET; /* ALET of source buffer */
unsigned long Src_Buf_Len; /* Length of source data */
long Res2; /* Reserved */
void * Targ_Buf_Ptr; /* Pointer to Target */
unsigned long Targ_Buf_ALET; /* ALET of target buffer */
unsigned long Targ_Buf_Len; /* Length of target buffer */
char Conv_Handle[64]; /* conversion handle */
unsigned long Src_CCSID; /* CCSID of source data */
unsigned long Targ_CCSID; /* CCSID of target data */
char Technique[8]; /* */
long Res3; /* Reserved */
void * Wrk_Buf_Ptr; /* Pointer to work buffer */
unsigned long Wrk_Buf_ALET; /* ALET of work buffer */
unsigned long Wrk_Buf_Len; /* Length of work buffer */
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 Sub_Action : 1, /* Sub action: */
/* 0 = Terminate with error */
/* 1 = Substitute and cont. */
Inv_Handle : 1, /* Invalid handle at start: */
/* 0 = Terminate with error */
/* 1 = Get new handle and */
No_Opt_Buf_Fill : 1, /* Target buffer filled */
/* 0 = Target buffer filled */
/* optimally increases runtime */
/* 1 = Target Buffer not filled*/
/* optimally increases runtime */
Mal_Action : 1, /* Mal Action: (Default 0) */
/* 0 = Substitute and cont. */
/* 1 = Terminate with error */
RL_Sub_Action : 1, /* RL Sub action. If Tech=R/L: */
/* 0 = Does nothing. */
/* 1 = Override SUB_ACTION. */
SrcSub_Chk : 1, /* If Sub is checked: */
/* 0=Does nothing. */
/* 1=Override SUB_ACTION. */
Bidi_Context : 1, /* Bidi Context */
/* 0 = Context LTR */
/* 1 = Context RTL */
Bidi_ImpAlg : 1; /* Bidi Implicit Alg */
/* 0 = Algor Basic */
/* 1 = Algor Implicit */
} Flag1; /* FLAG Byte 1 set by caller */
struct { /* Subcodepage number(s) */
int Source_SCP_State :4, /*Source subcodepage state */
Target_SCP_State :4; /*Target subcodepage state */
} Subcodepage;
struct {
int Substitution : 1, /* Substitution: */
/* 0 = No character substituted*/
/* 1 = character(s) substituted*/
Mal_Found : 1, /* Malformed String found */
/* 0 = No Malformed str found */
/* 1 = Malformed str found */
Page_Fix : 1, /* Page fixing: */
/* 0=System storage */
/* 1=Page Fixing. */
ETF3E_Behavior_Status : 1, /* HW Enhancement for conver- */
/* sions from 1200 to 1208 and */
/* vice versa status: */
/* 0 = When ETF3E_Behavior is */
/* ON, means ETF3 HW enhancement*/
/* is used (default) */
/* 1 = When ETF3E_Behavior is */
/* ON, means ETF3 HW enhancement*/
/* is not used, because it is */
/* not available. */
/* */
/* Note. When conversion are not*/
/* requested from 1200 to */
/* 1208 and vice versa, the */
/* contents of this is not */
/* meaningful. */
: 4;
} Flag2;
unsigned char Designator; /* reserved for ISO 2022 */
long Return_Code;
long Reason_Code;
unsigned int Res6; /* Reserved */
struct {
int ETF3E_Behavior : 1, /* ETF3 HW Enhancement */
/* 0 = Do not exploit ETF3 */
/* (default) */
/* 1 = Exploit ETF3 */
: 15; /* Reserved */
} Flag3; /* FLAG3 Byte 2 set by caller */
char Res7[2]; /* Reserved */
CUNBDPRM * Extended_Bidi_Parm_Area_Ptr;
char Res8[64];
} CUNBCPRM;
/* The extended bidi parameter area */
typedef struct tagCUNBDPRM {
int Version;
int Length;
struct {
int XOpen_Defaults : 1,
KBS_Defaults : 1,
Keyword : 1,
From_wtransform : 1,
: 4,
} InFlags;
struct {
int Layout_Roundtrip : 1,
Layout_WinCompat : 1,
Layout_ImpToImp : 1,
Layout_Remove_Marks : 1,
Layout_Insert_Marks : 1,
Layout_Streaming : 1,
: 2;
} Layout_Options;
struct {
int ActiveShapeEditing : 1,
ActiveDirectional : 1,
: 14;
} OutFlags;
int Orientation_Src;
int Orientation_Targ;
int Context_Src;
int Context_Targ;
int TypeOfText_Src;
int TypeOfText_Targ;
int ImplicitAlg_Src;
int ImplicitAlg_Targ;
int Swapping_Src;
int Swapping_Targ;
int Numerals_Src;
int Numerals_Targ;
int TextShaping_Src;
int TextShaping_Targ;
int ShapeCharsetSize;
int ShapeContextSize_Front;
int ShapeContextSize_Back;
int CheckMode;
unsigned int InpBufIndex;
unsigned long Streaming_Processed_Length;
int ArabicOneCellShaping_Src;
int ArabicOneCellShaping_Targ;
int WordBreak_Src;
int WordBreak_Targ;
int LamAlefEditMode_Src;
int LamAlefEditMode_Targ;
int YehHamzaMode_Src;
int YehHamzaMode_Targ;
int TailEditMode_Src;
int TailEditMode_Targ;
int TashkeelEditMode_Src;
int TashkeelEditMode_Targ;
unsigned int * InpToOut_Ptr;
unsigned int * OutToInp_Ptr;
unsigned char * BidiLvl_Ptr;
char Layout_Streaming_State[64];
char Bidi_Keyword[128];
char Res2[64];
} CUNBDPRM;