in util/src/platforms/os400/platformSpecificOS400.c [50:89]
static int retrieveJobCcsid(int *ccsid, char *langID)
{
char receiverVariable[RTV_CCSID_ATTR_LEN];
char format[8] = {'R', 'T', 'V', 'C', '0', '1', '0', '0'};
int numberOfAttributes = 3;
int attributeKeys[3] = {QWCA_KEY_CCSID, QWCA_KEY_DEFAULTCCSID, QWCA_KEY_LANGID};
Qwc_RTVC_Attribute_Data_t *attribute;
int defaultCcsid;
char errorCode[8];
int i;
memset(errorCode, 0x00, sizeof(errorCode));
#pragma exception_handler(RetrieveJobCcsidError,0,_C1_ALL,_C2_ALL,_CTLA_HANDLE)
QWCRTVCA(receiverVariable,RTV_CCSID_ATTR_LEN,format,numberOfAttributes,attributeKeys,&errorCode);
#pragma disable_handler
if (((Qwc_RTVC0100_t *)receiverVariable)->Number_Fields_Rtnd != 3)
{
/* Unable to retrieve the ccsid information */
return -1;
}
/* Retrieved ccsid, default CCSID and language ID */
attribute = (Qwc_RTVC_Attribute_Data_t *)(receiverVariable + sizeof(int));
for (i=0; i < 3; i++)
{
if (attribute->Key_Field == QWCA_KEY_CCSID)
*ccsid = *(int *)((char *)attribute + sizeof(Qwc_RTVC_Attribute_Data_t));
else if (attribute->Key_Field == QWCA_KEY_DEFAULTCCSID)
defaultCcsid = *(int *)((char *)attribute + sizeof(Qwc_RTVC_Attribute_Data_t));
else
strncpy(langID, ((char *)attribute + sizeof(Qwc_RTVC_Attribute_Data_t)), 3);
attribute = (Qwc_RTVC_Attribute_Data_t *)((char *)attribute + attribute->Length_Field_Info_Rtnd);
}
if (*ccsid == 65535)
*ccsid = defaultCcsid;
return 0;
RetrieveJobCcsidError:
return -1;
}