* Print column's data. */
| 302 | * Print column's data. |
| 303 | */ |
| 304 | void print_column (XSQLVAR *var) |
| 305 | { |
| 306 | short dtype; |
| 307 | char data[MAXLEN], *p; |
| 308 | char blob_s[20], date_s[25]; |
| 309 | VARY2 *vary2; |
| 310 | short len; |
| 311 | struct tm times; |
| 312 | ISC_QUAD bid; |
| 313 | |
| 314 | dtype = var->sqltype & ~1; |
| 315 | p = data; |
| 316 | |
| 317 | /* Null handling. If the column is nullable and null */ |
| 318 | if ((var->sqltype & 1) && (*var->sqlind < 0)) |
| 319 | { |
| 320 | switch (dtype) |
| 321 | { |
| 322 | case SQL_TEXT: |
| 323 | case SQL_VARYING: |
| 324 | len = var->sqllen; |
| 325 | break; |
| 326 | case SQL_SHORT: |
| 327 | len = 6; |
| 328 | if (var->sqlscale > 0) len += var->sqlscale; |
| 329 | break; |
| 330 | case SQL_LONG: |
| 331 | len = 11; |
| 332 | if (var->sqlscale > 0) len += var->sqlscale; |
| 333 | break; |
| 334 | case SQL_INT64: |
| 335 | len = 21; |
| 336 | if (var->sqlscale > 0) len += var->sqlscale; |
| 337 | break; |
| 338 | case SQL_FLOAT: |
| 339 | len = 15; |
| 340 | break; |
| 341 | case SQL_DOUBLE: |
| 342 | len = 24; |
| 343 | break; |
| 344 | case SQL_TIMESTAMP: |
| 345 | len = 24; |
| 346 | break; |
| 347 | case SQL_TYPE_DATE: |
| 348 | len = 10; |
| 349 | break; |
| 350 | case SQL_TYPE_TIME: |
| 351 | len = 13; |
| 352 | break; |
| 353 | case SQL_BLOB: |
| 354 | case SQL_ARRAY: |
| 355 | default: |
| 356 | len = 17; |
| 357 | break; |
| 358 | } |
| 359 | if ((dtype == SQL_TEXT) || (dtype == SQL_VARYING)) |
| 360 | sprintf(p, "%-*s ", len, "NULL"); |
| 361 | else |