The precompiler determines the base SQLTYPE and SQLLEN of host variables based on this table. If a host variable appears with an indicator variable, the SQLTYPE is the base SQLTYPE plus one.
COBOL data type | SQLTYPE of host variable | SQLLEN of host variable | SQL data type |
---|---|---|---|
S9(i)V9(d) COMP-3 or S9(i)V9(d) COMP or S9(i)V9(d) PACKED-DECIMAL | 484 | i+d in byte 1, d in byte 2 | DECIMAL(i+d,d) |
S9(i)V9(d) DISPLAY SIGN LEADING SEPARATE | 504 | i+d in byte 1, d in byte 2 | No exact equivalent use DECIMAL(i+d,d) or NUMERIC (i+d,d) |
S9(i)V9(d)DISPLAY | 488 | i+d in byte 1, d in byte 2 | NUMERIC(i+d,d) |
S9(i) BINARY or S9(i) COMP-4 where i is from 1 to 4 | 500 | 2 | SMALLINT |
S9(i) BINARY or S9(i) COMP-4 where i is from 5 to 9 | 496 | 4 | INTEGER |
S9(i) BINARY or S9(i) COMP-4 where i is from 10 to 18. Not supported for COBOL for iSeries™. | 492 | 8 | BIGINT |
S9(i)V9(d) BINARY or S9(i)V9(d) COMP-4 where i+d ≤ 4 | 500 | i+d in byte 1, d in byte 2 | No exact equivalent use DECIMAL(i+d,d) or NUMERIC (i+d,d) |
S9(i)V9(d) BINARY or S9(i)V9(d) COMP-4 where 4 < i+d ≤ 9 | 496 | i+d in byte 1, d in byte 2 | No exact equivalent use DECIMAL(i+d,d) or NUMERIC (i+d,d) |
COMP-1 Not supported for COBOL for iSeries. | 480 | 4 | FLOAT(single precision) |
COMP-2 Not supported for COBOL for iSeries. | 480 | 8 | FLOAT(double precision) |
Fixed-length character data | 452 | m | CHAR(m) |
Varying-length character data | 448 | m | VARCHAR(m) |
Fixed-length graphic data Not supported for COBOL for iSeries. | 468 | m | GRAPHIC(m) |
Varying-length graphic data Not supported for COBOL for iSeries. | 464 | m | VARGRAPHIC(m) |
DATE Not supported for COBOL for iSeries. | 384 | DATE | |
TIME Not supported for COBOL for iSeries. | 388 | TIME | |
TIMESTAMP Not supported for COBOL for iSeries. | 392 | 26 | TIMESTAMP |
The following table can be used to determine the COBOL data type that is equivalent to a given SQL data type.
SQL data type | COBOL data type | Notes |
---|---|---|
SMALLINT | S9(m) COMP-4 | m is from 1 to 4 |
INTEGER | S9(m) COMP-4 | m is from 5 to 9 |
BIGINT | S9(m) COMP-4 for ILE COBOL for iSeries. Not supported for COBOL for iSeries. | m is from 10 to 18 |
DECIMAL(p,s) | If p<64: S9(p-s)V9(s) PACKED-DECIMAL or S9(p-s)V9(s) COMP or S9(p-s)V9(s) COMP-3 If p>63: Not supported | p is precision; s is scale. 0<=s<=p<=63. If s=0, use S9(p) or S9(p)V. If s=p, use SV9(s). |
NUMERIC(p,s) | If p<19: S9(p-s)V9(s) DISPLAY If p>18: Not supported | p is precision; s is scale. 0<=s<=p<=18. If s=0, use S9(p) or S9(p)V. If s=p, use SV9(s). |
FLOAT(single precision) | COMP-1 for ILE COBOL for iSeries. Not supported for COBOL for iSeries. | |
FLOAT(double precision) | COMP-2 for ILE COBOL for iSeries. Not supported for COBOL for iSeries. | |
CHAR(n) | Fixed-length character string | 32766≥n≥1 |
VARCHAR(n) | Varying-length character string | 32740≥n≥1 |
CLOB | None | Use SQL TYPE IS to declare a CLOB for ILE COBOL for iSeries. Not supported for COBOL for iSeries. |
GRAPHIC(n) | Fixed-length graphic string for ILE COBOL for iSeries. Not supported for COBOL for iSeries. | 16383≥n≥1 |
VARGRAPHIC(n) | Varying-length graphic string for ILE COBOL for iSeries. Not supported for COBOL for iSeries. | 16370≥n≥1 |
DBCLOB | None | Use SQL TYPE IS to declare a DBCLOB for ILE COBOL for iSeries. |
BINARY | None | Use SQL TYPE IS to declare a BINARY. |
VARBINARY | None | Use SQL TYPE IS to declare a VARBINARY. |
BLOB | None | Use SQL TYPE IS to declare a BLOB. |
DATE | Fixed-length character string or DATE for ILE COBOL for iSeries. | If the format is *USA, *JIS, *EUR, or *ISO, allow at least 10 characters. If the format is *YMD, *DMY, or *MDY, allow at least 8 characters. If the format is *JUL, allow at least 6 characters. |
TIME | Fixed-length character string or TIME for ILE COBOL for iSeries. | Allow at least 6 characters; 8 to include seconds. |
TIMESTAMP | Fixed-length character string or TIMESTAMP for ILE COBOL for iSeries. | n must be at least 19. To include microseconds at full precision, n must be 26. If n is less than 26, truncation occurs on the microseconds part. |
DATALINK | Not supported | |
ROWID | None | Use SQL TYPE IS to declare a ROWID. |