Appendix E.1 SQL data types and C data descriptions

This section provides the correspondence between SQL data types and C data descriptions. Data can be exchanged between variables of compatible data types and between variables of either convertible or assignable data types.

Table E-1 shows how SQL data types relate to C data descriptions. Table E-2 shows how SQL data types relate to C data descriptions when arrays are used. Table E-3 shows SQL data types and C data descriptions when repetition columns are used.

Table E-1 SQL data types and C data descriptions

SQL data typeC data descriptionRemarks
SMALLINTshort variable-name;[Figure]
INTEGERlong variable-name;[Figure]
DECIMAL [(p[,s])]SQL TYPE IS DECIMAL(p,s) variable-name;51 [Figure] p[Figure] 29, 0 [Figure] s[Figure] p
SMALLFLT, REALfloat variable-name;[Figure]
FLOAT (DOUBLE PRECISION)double variable-name;[Figure]
CHAR [(n)]char variable-name[n+1];11 [Figure] n[Figure] 30000
VARCHAR(n)struct {
short variable-name-1;
char variable-name-2[n];
} structure-name;
1 [Figure] n[Figure] 32000
SQL TYPE IS
VARCHAR(n)
variable-name;6
VARCHAR variable-name[n+1]9
NCHAR [(n)]char variable-name-2[2n+1];11 [Figure] n[Figure] 15000
NVARCHAR(n)struct {
short variable-name-1;
char variable-name-2[2n];
} structure-name;
1 [Figure] n[Figure] 16000
SQL TYPE IS
NVARCHAR(n)
variable-name;6
MCHAR [(n)]char variable-name[n+1];11 [Figure] n[Figure] 30000
MVARCHAR(n)struct {
short variable-name-1;
char variable-name-2[n];
} structure-name;
1 [Figure] n[Figure] 32000
SQL TYPE IS
MVARCHAR(n)
variable-name;6
DATEchar variable-name[11];2[Figure]
TIMEchar variable-name[9];2[Figure]
INTERVAL YEAR TO DAYSQL TYPE IS DECIMAL(8,0)
variable-name;5
[Figure]
INTERVAL HOUR TO SECONDSQL TYPE IS DECIMAL(6,0)
variable-name;5
[Figure]
TIMESTAMP[(p)]char variable-name[n + 1];2If p = 0, n = 19.
If p = 2, n = 21 or 22.
If p = 4, n = 23 or 24.
If p = 6, n = 25 or 26.
ROW3char variable-name[n + 1];1 [Figure] total length [Figure] 30000
BLOBSQL TYPE IS BLOB(n[K |M |G])]
variable-name;4
Default: 1 [Figure] n[Figure] 2147483647​
In units of K: 1 [Figure] n[Figure] 2097152​
In units of M: 1 [Figure] n[Figure] 2048
In units of G: 1 [Figure] n[Figure] 2
BINARY(n)struct {
long variable-name-1;
char variable-name-2[n];
} structure-name;
1 [Figure] n[Figure] 2147483647​
SQL TYPE IS BINARY(n)
variable-name;7
BLOB locatorSQL TYPE IS
BLOB AS LOCATOR
variable-name8
BINARY locatorSQL TYPE IS
BINARY AS LOCATOR
variable-name8
Indicator variableOther than BLOB, BINARY, BLOB locator, or BINARY locatorshort variable-name;
BLOB, BINARY, BLOB locator, or BINARY locatorlong variable-name;
SQL statementstruct {
long variable-name-1;
char variable-name-2[n];
} structure-name;
1 [Figure] n[Figure] 2000000​
Legend:
[Figure]: Cannot be coded.
n: Length (bytes)
p: Precision (total number of digits)
s: Scale (number of digits beyond the decimal point)
Note
In 64-bit mode, use int instead of long.
1 The following rules govern data conversion between SQL data types (CHAR(n), NCHAR(n), and MCHAR(n)) and C-language data types (char[n+1], char[2n+1], and char[2n+1]):
  • For input (conversion from char[n+1] to CHAR(n), conversion from char[2n+1] to NCHAR(n), or conversion from char[n+1] to MCHAR(n))
    The length of a fixed-length character string received by HiRDB from a C language-character string is equal to the length from the beginning of the character string to one character before the null character. If no null character is found in n+1 array elements, the length is defined as n.
  • For output (conversion from CHAR(n) to char[n+1], conversion from NCHAR(n) to char[2n+1], or conversion from MCHAR(n) to char[n+1])
    A null character is appended at the end of the character string; therefore, the length of the character string known to the UAP is the SQL character string length + 1.
2 When retrieving date data (DATE) using a dynamic SQL, the data code for the retrieval item information obtained by the DESCRIBE statement must be set as the character data type with a data length of at least 10 bytes. Similarly, when retrieving time data using a dynamic SQL, the data code for the retrieval item information obtained by the DESCRIBE statement must be set as the character data type with a data length of at least 8 bytes.
To retrieve time stamp data (TIMESTAMP) using a dynamic SQL statement, specify the following:
  • Set the data code for the retrieval item information obtained using a DESCRIBE statement to the character data type.
  • If p is 0, set the data size to 19 bytes or greater. If p is 2, 4, or 6, set the data size to 20 + p bytes or greater.
3 Operations involving the ROW type are allowed only when the HiRDB server and the HiRDB client use the same endian type.
4 The coding of a BLOB UAP is expanded internally as follows:

struct{
     long          variable-name_reserved;             1
     unsigned long         variable-name_length;             2
     char          variable-name_data[m];             3
} variable-name

  1. variable-name_reserved is not used. In the 64-bit mode, int variable-name_reserved; is used.
  2. variable-name_length indicates the actual BLOB size. In the 64-bit mode, unsigned int variable-name_length; is used.
  3. variable-name_data[m] is the BLOB data storage area (where m denotes the actual data length).
5 The code for a DECIMAL UAP is internally expanded as follows:

unsigned char variable-name[[Figure]p/2[Figure]+1];

One byte of DECIMAL data expresses two numeric digits. A sign is expressed by four low-order bits of the trailing byte. Therefore, for DECIMAL data consisting of an even number of digits, four high-order bits of the leading byte must be padded with 0s. Do not use any number other than 0 for padding purposes.
The following table shows the standard sign representation; for details about the sign for DECIMAL type used with HiRDB, see the manual HiRDB Version 8 SQL Reference.
Sign in hexadecimal representationDescription
X'C'Treated as a positive sign. Positive numbers include 0.
X'D'Treated as a negative sign.
Coding examples
123.4567 (odd number of digits)
unsigned char ex1[4]={0x12,0x34,0x56,0x7c};
-123.456 (even number of digits)
unsigned char ex2[4]={0x01,0x23,0x45,0x6d};
0 (odd number of digits)
unsigned char ex3[1]={0x0c};
6 The following internal expansion takes place:

struct{
        short   len;
        char    str[n];
}variable-name

For NVARCHAR, str[2n] is used.
7 The following internal expansion takes place:

struct{
        long  len;
        char  str[n];
}variable-name

In 64-bit mode, long len; is replaced with int len;.
8 The following internal expansion takes place:

unsigned long variable-name;

In 64-bit mode, unsigned long variable-name; is replaced with unsigned int variable-name;.
9 The following internal expansion takes place:

char variable-name[n+1];

The character string length is the length from the beginning of the string to the character before the NULL character. When a character string in C is accepted, an error occurs if there is no NULL character in the n+1-th array element.

Table E-2 SQL data types and C data descriptions when arrays are used

SQL data typeC data descriptionRemarks
SMALLINTshort variable-name[m];[Figure]
INTEGERlong variable-name[m];[Figure]
DECIMAL[(p[,s])]SQL TYPE IS DECIMAL(p,s)
variable-name[m];
1 [Figure] p[Figure] 29, 0 [Figure] s[Figure] p
SMALLFLT, REALfloat variable-name[m];[Figure]
FLOAT (DOUBLE PRECISION)double variable-name[m];[Figure]
CHAR[(n)]char variable-name[m][n+1];1 [Figure] n[Figure] 30000
VARCHAR(n)struct {
short variable-name-1;
char variable-name-2[n];
} structure-name[m];
1 [Figure] n[Figure] 32000
SQL TYPE IS VARCHAR(n)
variable-name[m];
[Figure]
VARCHAR variable-name[m][n+1];
NCHAR[(n)]char variable-name[m][2n+1];1 [Figure] n[Figure] 15000
NVARCHAR[(n)]struct {
short variable-name-1;
char variable-name-2[2n];
} structure-name[m];
1 [Figure] n[Figure] 16000
SQL TYPE IS NVARCHAR(n)
variable-name[m];
[Figure]
MCHAR(n)char variable-name[m][n+1];1 [Figure] n[Figure] 30000
MVARCHAR(n)struct {
short variable-name-1;
char variable-name-2[n];
} structure-name[m];
1 [Figure] n[Figure] 32000
SQL TYPE IS MVARCHAR(n)
variable-name[m];
DATEchar variable-name[m][11];[Figure]
TIMEchar variable-name[m][9];[Figure]
TIMESTAMP[(p)]char variable-name[m][n + 1];If p = 0, n = 19.
If p = 2, n = 21 or 22.
If p = 4, n = 23 or 24.
If p = 6, n = 25 or 26.
INTERVAL YEAR TO DAYSQL TYPE IS DECIMAL(8,0)
variable-name[m];
[Figure]
INTERVAL HOUR TO SECONDSQL TYPE IS DECIMAL(6,0)
variable-name[m];
[Figure]
ROWchar variable-name[m][n+1];1 [Figure] n[Figure] 30000
BLOBCN[Figure]
BINARYstruct {
long variable-name-1;
char variable-name-2[n];
} structure-name[m];
  • FETCH that uses an array
    4 [Figure] n[Figure] 2147483644​ (n must be a multiple of 4.)
  • Other than FETCH that uses an array4 [Figure] n[Figure] 32000 (n must be a multiple of 4.)
SQL TYPE IS BINARY(n)
variable-name[m];
BLOB locator[Figure]
BINARY locatorSQL TYPE IS
BINARY AS LOCATOR
variable-name[m];
Indicator variableOther than BINARY or BINARY locatorshort variable-name[m];[Figure]
BINARY or BINARY locatorlong variable-name[m];[Figure]
SQL statementCN[Figure]
Legend:
CN: Cannot be coded.
m: Number of array elements (1-4096)
n: Length (bytes)
p: Precision (total number of digits)
s: Scale (number of digits beyond the decimal point)
Note
In 64-bit mode, use int instead of long.

Table E-3 SQL data types and C data descriptions when repetition columns are used

SQL data typeC data descriptionRemarks
SMALLINTPD_MV_SINT(m) variable-name;[Figure]
INTEGERPD_MV_INT(m) variable-name;[Figure]
DECIMALPD_MV_DEC(m,p,s) variable-name;1 [Figure] p[Figure] 29,
0 [Figure] s[Figure] p
SMALLFLT, REALPD_MV_SFLT(m) variable-name;[Figure]
FLOAT (DOUBLE PRECISION)PD_MV_FLT(m) variable-name;[Figure]
CHAR[(n)]PD_MV_CHAR(m,n) variable-name;1 [Figure] n[Figure] 30000
VARCHAR(n)PD_MV_VCHAR(m,n) variable-name;1 [Figure] n[Figure] 32000
PD_MV_CVCHAR(m,n) variable-name;
NCHAR[(n)]PD_MV_NCHAR(m,n) variable-name;1 [Figure] n[Figure] 15000
NVARCHAR[(n)]PD_MV_NVCHAR(m,n) variable-name;1 [Figure] n[Figure] 16000
MCHAR(n)PD_MV_CHAR(m, n) variable-name;1 [Figure] n[Figure] 30000
MVARCHAR(n)PD_MV_CHAR(m, n) variable-name;1 [Figure] n[Figure] 32000
DATEPD_MV_CHAR(m,10) variable-name;[Figure]
TIMEPD_MV_CHAR(m,8) variable-name;[Figure]
TIMESTAMP[(p)]PD_MV_CHAR(m,n) variable-name;If p = 0, n = 19.
If p = 2, n = 21 or 22.
If p = 4, n = 23 or 24.
If p = 6, n = 25 or 26.
INTERVAL YEAR TO DAYPD_MV_DEC(m,8,0) variable-name;[Figure]
INTERVAL HOUR TO SECONDPD_MV_DEC(m,6,0) variable-name;[Figure]
ROWCN[Figure]
BLOBCN[Figure]
BINARYCN[Figure]
Indicator variable (other than BLOB, BINARY, BLOB locator, or BINARY locator)PD_MV_SINT(m) variable-name;[Figure]
SQL statementCN[Figure]
Legend:
CN: Cannot be coded.
m: Maximum number of repetition array elements (2-30000).
n: Length (bytes)
p: Precision (total number of digits)
s: Scale (number of digits beyond the decimal point)

Special macros for referencing or setting embedded variables for each data type are used in the SQL data type and C data description when repetition columns are used. Table E-4 shows the macros for referencing or setting embedded variables.

Table E-4 Macros for referencing or setting embedded variables

SQL data typeMacro nameData to be referenced or setData type
SMALLINTPD_MV_SINT_CNT (variable-name)Current repetition data element countlong*
PD_MV_SINT_DATA (variable-name, m)Each repetition elementshort
INTEGERPD_MV_INT_CNT (variable-name)Current repetition data element countlong*
PD_MV_INT_DATA (variable-name, m)Each repetition elementlong*
DECIMAL[(p[,s])]PD_MV_DEC_CNT
(variable-name)
Current repetition data element countlong*
PD_MV_DEC_DATA
(variable-name,m)
Start address of each repetition element in decimalunsigned
SMALLFLT, REALPD_MV_SFLT_CNT (variable-name)Current repetition data element countlong*
PD_MV_SFLT_DATA (variable-name, m)Each repetition elementfloat
FLOAT (DOUBLE PRECISION)PD_MV_FLT_CNT (variable-name)Current repetition data element countlong*
PD_MV_FLT_DATA (variable-name, m)Each repetition elementdouble
CHAR[(n)]PD_MV_CHAR_CNT (variable-name)Current repetition data element countlong*
PD_MV_CHAR_DATA (variable-name, m)Leading address of character string of each repetition elementchar[ ]
VARCHAR(n)PD_MV_VCHAR_CNT (variable-name)Current repetition data element countlong*
PD_MV_VCHAR_LEN (variable-name, m)Actual length of character string of each repetition elementshort
PD_MV_VCHAR_STR (variable-name)Address of character string of each repetition elementchar[ ]
PD_MV_CVCHAR_CNT(variable-name)Current repetition data element countlong*
PD_MV_CVCHAR_DATA(variable-name,m)Address of character string of each repetition elementchar[ ]
NCHAR[(n)]PD_MV_NCHAR_CNT (variable-name)Current repetition data element countlong*
PD_MV_NCHAR_DATA (variable-name, m)Leading address of character string of each repetition elementchar[ ]
NVARCHAR[(n)]PD_MV_NVCHAR_CNT (variable-name)Current repetition data element countlong*
PD_MV_NVCHAR_LEN (variable-name, m)Actual length of character string of each repetition elementshort
PD_MV_NVCHAR_STR (variable-name, m)Leading address of character string of each repetition elementchar[ ]
MCHAR(n)PD_MV_CHAR_CNT (variable-name)Current repetition data element countlong*
PD_MV_CHAR_DATA (variable-name, m)Leading address of character string of each repetition elementchar[ ]
MVARCHAR(n)PD_MV_VCHAR_CNT (variable-name)Current repetition data element countlong*
PD_MV_VCHAR_LEN (variable-name, m)Actual length of character string of each repetition elementshort
PD_MV_VCHAR_STR (variable-name, m)Address of character string of each repetition elementchar[ ]
DATESame as CHAR(10)[Figure][Figure]
TIMESame as CHAR(8)[Figure][Figure]
TIMESTAMP[(p)]Same as CHAR(n)
If p = 0, n = 19.
If p = 2, n = 21 or 22.
If p = 4, n = 23 or 24.
If p = 6, n = 25 or 26.
[Figure][Figure]
INTERVAL YEAR TO DAYSame as DECIMAL(8,0)[Figure][Figure]
INTERVAL HOUR TO SECONDSame as DECIMAL(6,0)[Figure][Figure]
Indicator variablePD_MV_SINT_CNT (variable-name)Indicator of the overall repetition columnlong*
PD_MV_SINT_DATA (variable-name, m)Indicator of each repetition column elementshort
Legend:
[Figure]: Not applicable
m: Number of each repetition column element (0 - m-1).
n: Length (bytes)
p: Precision (total number of digits)
s: Scale (number of digits beyond the decimal point)
* In 64-bit mode, the data type is int.

The following shows an example of macros used for referencing or setting embedded variables in repetition columns:

EXEC SQL BEGIN DECLARE SECTION;
char xname[5];
PD_MV_SINT(4) xmscore;
PD_MV_CHAR(4,5) xmsubject;
EXEC SQL END DECLARE SECTION;
    :
strcpy(xname,"SMITH")
PD_MV_SINT_DATA(xmscore,0)=90;
PD_MV_SINT_DATA(xmscore,1)=65;
PD_MV_SINT_DATA(xmscore,2)=85;
PD_MV_SINT_DATA(xmscore,3)=55;
PD_MV_SINT_CNT(xmscore)=4;
strcpy(PD_MV_CHAR_DATA(xmsubject,0),"MATHEMATICS");
strcpy(PD_MV_CHAR_DATA(xmsubject,1),"ENGLISH");
strcpy(PD_MV_CHAR_DATA(xmsubject,2),"SCIENCE");
strcpy(PD_MV_CHAR_DATA(xmsubject,3),"SOCIAL STUDIES");
PD_MV_CHAR_CNT(xmsubject)=4;
EXEC SQL
 INSERT INTO
SCORE_TABLE(NAME,SUBJECT,SCORE))VALUES(:xname,
:xmsubject;:xmscore);

Table E-5 shows pointer variables and the C language data description.

Table E-5 Pointer variables and C language data description

SQL data typeC language data descriptionRemarks
SMALLINTshort *variable-name;[Figure]
INTEGERlong *variable-name;[Figure]
DECIMAL[(p[,s])]SQL TYPE IS DECIMAL(p,s)
*variable-name;
1 [Figure] p[Figure] 29, 0 [Figure] s[Figure] p
SMALLFLT, REALfloat *variable-name;[Figure]
FLOAT
(DOUBLE PRECISION)
double *variable-name;[Figure]
CHAR[(n)]char *variable-name;1 [Figure] n[Figure] 30000*
VARCHAR(n)struct {
short variable-name-1;
char variable-name-2[n];
} *structure-name;
1 [Figure] n[Figure] 32000
SQL TYPE IS
VARCHAR(n)
*variable-name;
VARCHAR *variable-name;*
NCHAR[(n)]char *variable-name;1 [Figure] n[Figure] 15000*
NVARCHAR(n)struct {
short variable-name-1;
char variable-name-2[2n];
} *structure-name;
1 [Figure] n[Figure] 16000
SQL TYPE IS
NVARCHAR(n)
*variable-name;
MCHAR[(n)]char *variable-name;1 [Figure] n[Figure] 30000*
MVARCHAR(n)struct {
short variable-name-1;
char variable-name-2[n];
} *structure-name;
1 [Figure] n[Figure] 32000
SQL TYPE IS
MVARCHAR(n)
*variable-name;
DATE*char *variable-name;[Figure]
TIME*char *variable-name;[Figure]
TIMESTAMP*char *variable-name;[Figure]
INTERVAL YEAR TO DAYSQL TYPE IS DECIMAL(8,0)
*variable-name;
[Figure]
INTERVAL HOUR TO SECONDSQL TYPE IS DECIMAL(6,0)
*variable-name;
[Figure]
ROWchar *variable-name;1 [Figure] total-length[Figure] 30000*
BLOBSQL TYPE IS
BLOB(n[{K|M|G}])
*variable-name;
Default: 1 [Figure] n[Figure] 2147483647​
In units of K: 1 [Figure] n[Figure] 2097152​
In units of M: 1 [Figure] n[Figure] 2048
In units of G: 1 [Figure] n[Figure] 2
BINARY(n)struct {
long variable-name-1;
char variable-name-2[n];
} *structure-name;
1 [Figure] n[Figure] 2147483647​
SQL TYPE IS BINARY(n)
*variable-name;
BLOB locatorSQL TYPE IS
BLOB AS LOCATOR
*variable-name;
BINARY locatorSQL TYPE IS
BINARY AS LOCATOR
*variable-name;
Indicator variableOther than BLOB, BINARY, BLOB locator, or BINARY locatorshort *variable-name;
BLOB, BINARY, BLOB locator, or BINARY locatorlong *variable-name;
SQL statementstruct {
long variable-name-1;
char variable-name-2[n];
} *structure-name;
1 [Figure] n[Figure] 2000000​
SMALLINT ARRAY mPD_MV_SINT(m)
*variable-name;
[Figure]
INTEGER ARRAY mPD_MV_INT(m)
*variable-name;
[Figure]
DECIMAL[(p[,s])] ARRAY mPD_MV_DEC(m,p,s)
*variable-name;
1 [Figure] p[Figure] 29, 0 [Figure] s[Figure] p
SMALLFLT ARRAY m
(REAL)
PD_MV_SFLT(m)
*variable-name;
[Figure]
FLOAT ARRAY m
(DOUBLE PRECISION)
PD_MV_FLT(m)
*variable-name;
[Figure]
CHAR[(n)] ARRAY m and
MCHAR[(n)] ARRAY m
PD_MV_CHAR(m,n)
*variable-name;
1 [Figure] n[Figure] 30000
VARCHAR[(n)] ARRAY m and MVARCHAR[(n)] ARRAY mPD_MV_VCHAR(m,n)
*variable-name;
1 [Figure] n[Figure] 32000
PD_MV_CVCHAR(m,n)
*variable-name;
NCHAR[(n)] ARRAY mPD_MV_NCHAR(m,n)
*variable-name;
1 [Figure] n[Figure] 15000
NVARCHAR[(n)] ARRAY mPD_MV_NVCHAR(m,n)
*variable-name;
1 [Figure] n[Figure] 16000
DATE ARRAY mPD_MV_CHAR(m,10)
*variable-name;
[Figure]
TIME ARRAY mPD_MV_CHAR(m,8)
*variable-name;
[Figure]
TIMESTAMP ARRAY mPD_MV_CHAR(m,n)
*variable-name;
If p = 0, n = 19.
If p = 2, n = 21 or 22.
If p = 4, n = 23 or 24.
If p = 6, n = 25 or 26.
INTERVAL YEAR TO DAY ARRAY mPD_MV_DEC(m,8,0)
*variable-name;
[Figure]
INTERVAL HOUR TO SECOND ARRAY mPD_MV_DEC(m,6,0)
*variable-name;
[Figure]
Indicator variable for repetition columnPD_MV_SINT(m)
*variable-name;
[Figure]
Legend:
[Figure]: Not applicable
m: Number (0 - m-1) indicating each element in a repetition column
n: Length (bytes)
p: Precision (total number of digits)
s: Scale (number of digits beyond the decimal point)
Note
In 64-bit mode, use int instead of long.
* The defined length of the area cannot be determined during preprocessing. Therefore, at the time of execution, use strlen(variable-name) to determine the length of the character string stored in the area indicated by the pointer, and use this length in place of the area length. To receive the retrieval result, use a character other than NULL character to clear the area indicated by the pointer and enter the NULL character at the end.

To reference or set a variable for a pointer-type repetition column, use a dedicated macro. Table E-6 shows the macros for pointer-type repetition columns.

Table E-6 Macros for pointer-type repetition columns

SQL data typeMacro nameData to be referenced or setData type
SMALLINT ARRAY mPD_MV_SINTP_CNT(variable-name)Current repetition data element countlong*
PD_MV_SINTP_DATA(variable-name,m)Each repetition elementshort
INTEGER ARRAY mPD_MV_INTP_CNT(variable-name)Current repetition data element countlong*
PD_MV_INTP_DATA(variable-name,m)Each repetition elementlong*
DECIMAL[(p[,s])] ARRAY mPD_MV_DECP_CNT(variable-name)Current repetition data element countlong*
PD_MV_DECP_DATA(variable-name,m)Start address of each repetition element in decimalchar[ ]
SMALLFLT ARRAY m
(REAL)
PD_MV_SFLTP_CNT(variable-name)Current repetition data element countlong*
PD_MV_SFLTP_DATA(variable-name,m)Each repetition elementfloat
FLOAT ARRAY m
(DOUBLE PRECISION)
PD_MV_FLTP_CNT(variable-name)Current repetition data element countlong*
PD_MV_FLTP_DATA(variable-name,m)Each repetition elementdouble
CHAR[(n)] ARRAY m, or MCHAR[(n)] ARRAY mPD_MV_CHARP_CNT(variable-name)Current repetition data element countlong*
PD_MV_CHARP_DATA(variable-name,m)Leading address of character string of each repetition elementchar[ ]
VARCHAR(n) ARRAY m, or MVARCHAR(n) ARRAY mPD_MV_VCHARP_CNT(variable-name)Current repetition data element countlong*
PD_MV_VCHARP_LEN(variable-name,m)Actual length of character string of each repetition elementshort
PD_MV_VCHARP_STR(variable-name,m)Address of character string of each repetition elementchar[ ]
PD_MV_CVCHARP_CNT(variable-name)Current repetition data element countlong*
PD_MV_CVCHARP_DATA(variable-name, m)Address of character string of each repetition elementchar[ ]
NCHAR[(n)] ARRAY mPD_MV_NCHARP_CNT(variable-name)Current repetition data element countlong*
PD_MV_NCHARP_DATA(variable-name,m)Leading address of character string of each repetition elementchar[ ]
NVARCHAR(n) ARRAY mPD_MV_NVCHARP_CNT(variable-name)Current repetition data element countlong*
PD_MV_NVCHARP_LEN(variable-name,m)Actual length of character string of each repetition elementshort
PD_MV_NVCHARP_STR(variable-name,m)Leading address of character string of each repetition elementchar[ ]
DATE ARRAY mSame as CHAR(10)[Figure][Figure]
TIME ARRAY mSame as CHAR(8)[Figure][Figure]
TIMESTAMP[(p)] ARRAY mSame as CHAR(n)
If p = 0, n = 19.
If p = 2, n = 21 or 22.
If p = 4, n = 23 or 24.
If p = 6, n = 25 or 26.
[Figure][Figure]
INTERVAL YEAR TO DAYSame as DECIMAL(8,0)[Figure][Figure]
INTERVAL HOUR TO SECONDSame as DECIMAL(6,0)[Figure][Figure]
Indicator variablePD_MV_SINTP_CNT(variable-name)Indicator of the overall repetition columnlong*
PD_MV_SINTP_DATA(variable-name,m)Indicator of each repetition column elementshort
Legend:
[Figure]: Not applicable
m: Number of each repetition column element (0 - m-1)
n: Length (bytes)
p: Precision (total number of digits)
s: Scale (number of digits beyond the decimal point)
* In 64-bit mode, the data type is int.

Table E-7 shows the structures to be specified in batches.

Table E-7 Structures to be specified in batches

SQL data typeC language data descriptionItem codingRemarks
Multiple itemsStructure that contains the data types listed in Tables E-1 to E-3 as membersSpecifies multiple embedded variables in a batch.Pointers can be declared.
Indicator variable for multiple itemsStructure that contains as members the indicator variables listed in Tables E-1 to E-3Specifies multiple indicator variables in a batch.Pointers can be declared.