Scalable Database Server, HiRDB Version 8 UAP Development Guide

[Contents][Index][Back][Next]

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 type C data description Remarks
SMALLINT short variable-name; [Figure]
INTEGER long variable-name; [Figure]
DECIMAL [(p[,s])] SQL TYPE IS DECIMAL(p,s) variable-name;5 1 [Figure] p [Figure] 29, 0 [Figure] s [Figure] p
SMALLFLT, REAL float variable-name; [Figure]
FLOAT (DOUBLE PRECISION) double variable-name; [Figure]
CHAR [(n)] char variable-name[n+1];1 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;6
VARCHAR variable-name[n+1]9
NCHAR [(n)] char variable-name-2[2n+1];1 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;6
MCHAR [(n)] char variable-name[n+1];1 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;6
DATE char variable-name[11];2 [Figure]
TIME char variable-name[9];2 [Figure]
INTERVAL YEAR TO DAY SQL TYPE IS DECIMAL(8,0)
variable-name;5
[Figure]
INTERVAL HOUR TO SECOND SQL TYPE IS DECIMAL(6,0)
variable-name;5
[Figure]
TIMESTAMP[(p)] char variable-name[n + 1];2 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.
ROW3 char variable-name[n + 1]; 1 [Figure] total length [Figure] 30000
BLOB SQL 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 locator SQL TYPE IS
BLOB AS LOCATOR
variable-name8
BINARY locator SQL TYPE IS
BINARY AS LOCATOR
variable-name8
Indicator variable Other than BLOB, BINARY, BLOB locator, or BINARY locator short variable-name;
BLOB, BINARY, BLOB locator, or BINARY locator long variable-name;
SQL statement struct {
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 representation Description
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 type C data description Remarks
SMALLINT short variable-name[m]; [Figure]
INTEGER long 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, REAL float 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];
DATE char variable-name[m][11]; [Figure]
TIME char 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 DAY SQL TYPE IS DECIMAL(8,0)
variable-name[m];
[Figure]
INTERVAL HOUR TO SECOND SQL TYPE IS DECIMAL(6,0)
variable-name[m];
[Figure]
ROW char variable-name[m][n+1]; 1 [Figure] n [Figure] 30000
BLOB CN [Figure]
BINARY struct {
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 locator SQL TYPE IS
BINARY AS LOCATOR
variable-name[m];
Indicator variable Other than BINARY or BINARY locator short variable-name[m]; [Figure]
BINARY or BINARY locator long variable-name[m]; [Figure]
SQL statement CN [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 type C data description Remarks
SMALLINT PD_MV_SINT(m) variable-name; [Figure]
INTEGER PD_MV_INT(m) variable-name; [Figure]
DECIMAL PD_MV_DEC(m,p,s) variable-name; 1 [Figure] p [Figure] 29,
0 [Figure] s [Figure] p
SMALLFLT, REAL PD_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
DATE PD_MV_CHAR(m,10) variable-name; [Figure]
TIME PD_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 DAY PD_MV_DEC(m,8,0) variable-name; [Figure]
INTERVAL HOUR TO SECOND PD_MV_DEC(m,6,0) variable-name; [Figure]
ROW CN [Figure]
BLOB CN [Figure]
BINARY CN [Figure]
Indicator variable (other than BLOB, BINARY, BLOB locator, or BINARY locator) PD_MV_SINT(m) variable-name; [Figure]
SQL statement CN [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 type Macro name Data to be referenced or set Data type
SMALLINT PD_MV_SINT_CNT (variable-name) Current repetition data element count long*
PD_MV_SINT_DATA (variable-name, m) Each repetition element short
INTEGER PD_MV_INT_CNT (variable-name) Current repetition data element count long*
PD_MV_INT_DATA (variable-name, m) Each repetition element long*
DECIMAL[(p[,s])] PD_MV_DEC_CNT
(variable-name)
Current repetition data element count long*
PD_MV_DEC_DATA
(variable-name,m)
Start address of each repetition element in decimal unsigned
SMALLFLT, REAL PD_MV_SFLT_CNT (variable-name) Current repetition data element count long*
PD_MV_SFLT_DATA (variable-name, m) Each repetition element float
FLOAT (DOUBLE PRECISION) PD_MV_FLT_CNT (variable-name) Current repetition data element count long*
PD_MV_FLT_DATA (variable-name, m) Each repetition element double
CHAR[(n)] PD_MV_CHAR_CNT (variable-name) Current repetition data element count long*
PD_MV_CHAR_DATA (variable-name, m) Leading address of character string of each repetition element char[ ]
VARCHAR(n) PD_MV_VCHAR_CNT (variable-name) Current repetition data element count long*
PD_MV_VCHAR_LEN (variable-name, m) Actual length of character string of each repetition element short
PD_MV_VCHAR_STR (variable-name) Address of character string of each repetition element char[ ]
PD_MV_CVCHAR_CNT(variable-name) Current repetition data element count long*
PD_MV_CVCHAR_DATA(variable-name,m) Address of character string of each repetition element char[ ]
NCHAR[(n)] PD_MV_NCHAR_CNT (variable-name) Current repetition data element count long*
PD_MV_NCHAR_DATA (variable-name, m) Leading address of character string of each repetition element char[ ]
NVARCHAR[(n)] PD_MV_NVCHAR_CNT (variable-name) Current repetition data element count long*
PD_MV_NVCHAR_LEN (variable-name, m) Actual length of character string of each repetition element short
PD_MV_NVCHAR_STR (variable-name, m) Leading address of character string of each repetition element char[ ]
MCHAR(n) PD_MV_CHAR_CNT (variable-name) Current repetition data element count long*
PD_MV_CHAR_DATA (variable-name, m) Leading address of character string of each repetition element char[ ]
MVARCHAR(n) PD_MV_VCHAR_CNT (variable-name) Current repetition data element count long*
PD_MV_VCHAR_LEN (variable-name, m) Actual length of character string of each repetition element short
PD_MV_VCHAR_STR (variable-name, m) Address of character string of each repetition element char[ ]
DATE Same as CHAR(10) [Figure] [Figure]
TIME Same 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 DAY Same as DECIMAL(8,0) [Figure] [Figure]
INTERVAL HOUR TO SECOND Same as DECIMAL(6,0) [Figure] [Figure]
Indicator variable PD_MV_SINT_CNT (variable-name) Indicator of the overall repetition column long*
PD_MV_SINT_DATA (variable-name, m) Indicator of each repetition column element short

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 type C language data description Remarks
SMALLINT short *variable-name; [Figure]
INTEGER long *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, REAL float *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 DAY SQL TYPE IS DECIMAL(8,0)
*variable-name;
[Figure]
INTERVAL HOUR TO SECOND SQL TYPE IS DECIMAL(6,0)
*variable-name;
[Figure]
ROW char *variable-name; 1 [Figure] total-length [Figure] 30000*
BLOB SQL 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 locator SQL TYPE IS
BLOB AS LOCATOR
*variable-name;
BINARY locator SQL TYPE IS
BINARY AS LOCATOR
*variable-name;
Indicator variable Other than BLOB, BINARY, BLOB locator, or BINARY locator short *variable-name;
BLOB, BINARY, BLOB locator, or BINARY locator long *variable-name;
SQL statement struct {
long variable-name-1;
char variable-name-2[n];
} *structure-name;
1 [Figure] n [Figure] 2000000
SMALLINT ARRAY m PD_MV_SINT(m)
*variable-name;
[Figure]
INTEGER ARRAY m PD_MV_INT(m)
*variable-name;
[Figure]
DECIMAL[(p[,s])] ARRAY m PD_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 m PD_MV_VCHAR(m,n)
*variable-name;
1 [Figure] n [Figure] 32000
PD_MV_CVCHAR(m,n)
*variable-name;
NCHAR[(n)] ARRAY m PD_MV_NCHAR(m,n)
*variable-name;
1 [Figure] n [Figure] 15000
NVARCHAR[(n)] ARRAY m PD_MV_NVCHAR(m,n)
*variable-name;
1 [Figure] n [Figure] 16000
DATE ARRAY m PD_MV_CHAR(m,10)
*variable-name;
[Figure]
TIME ARRAY m PD_MV_CHAR(m,8)
*variable-name;
[Figure]
TIMESTAMP ARRAY m 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 DAY ARRAY m PD_MV_DEC(m,8,0)
*variable-name;
[Figure]
INTERVAL HOUR TO SECOND ARRAY m PD_MV_DEC(m,6,0)
*variable-name;
[Figure]
Indicator variable for repetition column PD_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 type Macro name Data to be referenced or set Data type
SMALLINT ARRAY m PD_MV_SINTP_CNT(variable-name) Current repetition data element count long*
PD_MV_SINTP_DATA(variable-name,m) Each repetition element short
INTEGER ARRAY m PD_MV_INTP_CNT(variable-name) Current repetition data element count long*
PD_MV_INTP_DATA(variable-name,m) Each repetition element long*
DECIMAL[(p[,s])] ARRAY m PD_MV_DECP_CNT(variable-name) Current repetition data element count long*
PD_MV_DECP_DATA(variable-name,m) Start address of each repetition element in decimal char[ ]
SMALLFLT ARRAY m
(REAL)
PD_MV_SFLTP_CNT(variable-name) Current repetition data element count long*
PD_MV_SFLTP_DATA(variable-name,m) Each repetition element float
FLOAT ARRAY m
(DOUBLE PRECISION)
PD_MV_FLTP_CNT(variable-name) Current repetition data element count long*
PD_MV_FLTP_DATA(variable-name,m) Each repetition element double
CHAR[(n)] ARRAY m, or MCHAR[(n)] ARRAY m PD_MV_CHARP_CNT(variable-name) Current repetition data element count long*
PD_MV_CHARP_DATA(variable-name,m) Leading address of character string of each repetition element char[ ]
VARCHAR(n) ARRAY m, or MVARCHAR(n) ARRAY m PD_MV_VCHARP_CNT(variable-name) Current repetition data element count long*
PD_MV_VCHARP_LEN(variable-name,m) Actual length of character string of each repetition element short
PD_MV_VCHARP_STR(variable-name,m) Address of character string of each repetition element char[ ]
PD_MV_CVCHARP_CNT(variable-name) Current repetition data element count long*
PD_MV_CVCHARP_DATA(variable-name, m) Address of character string of each repetition element char[ ]
NCHAR[(n)] ARRAY m PD_MV_NCHARP_CNT(variable-name) Current repetition data element count long*
PD_MV_NCHARP_DATA(variable-name,m) Leading address of character string of each repetition element char[ ]
NVARCHAR(n) ARRAY m PD_MV_NVCHARP_CNT(variable-name) Current repetition data element count long*
PD_MV_NVCHARP_LEN(variable-name,m) Actual length of character string of each repetition element short
PD_MV_NVCHARP_STR(variable-name,m) Leading address of character string of each repetition element char[ ]
DATE ARRAY m Same as CHAR(10) [Figure] [Figure]
TIME ARRAY m Same as CHAR(8) [Figure] [Figure]
TIMESTAMP[(p)] ARRAY m 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 DAY Same as DECIMAL(8,0) [Figure] [Figure]
INTERVAL HOUR TO SECOND Same as DECIMAL(6,0) [Figure] [Figure]
Indicator variable PD_MV_SINTP_CNT(variable-name) Indicator of the overall repetition column long*
PD_MV_SINTP_DATA(variable-name,m) Indicator of each repetition column element short

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 type C language data description Item coding Remarks
Multiple items Structure that contains the data types listed in Tables E-1 to E-3 as members Specifies multiple embedded variables in a batch. Pointers can be declared.
Indicator variable for multiple items Structure that contains as members the indicator variables listed in Tables E-1 to E-3 Specifies multiple indicator variables in a batch. Pointers can be declared.