The maximum length allowed for a host-variable is 32,765 bytes.
ANSI Standard Host-Variable Data Types in PL/I
The ANSI standard allowable data types are as follows:
|
SQL Data Type |
PL/I Declaration |
|---|---|
|
CHARACTER or CHAR |
CHARACTER(n) or CHAR(n) |
|
DECIMAL or DEC |
FIXED DECIMAL (p,s) or DECIMAL FIXED (p,s) or |
|
INTEGER or INT |
FIXED BINARY (n) or BINARY FIXED (n) or |
|
FLOAT |
BINARY FLOAT (n) or FLOAT BINARY (n) or |
Valid short forms of the declarations are:
Non-ANSI Host-Variable Data Types in PL/I
The non-ANSI standard allowable data types are as follows:
|
SQL Data Type |
PL/I Declaration |
|---|---|
|
CHARACTER or CHAR |
CHARACTER(n) or CHAR(n) |
|
NUMERIC |
PICTURE(pVs) or PIC(pVs) |
|
DECIMAL or DEC |
FIXED DECIMAL (p,s) or DECIMAL FIXED (p,s) or |
|
SMALLINT |
FIXED BINARY (n) or BINARY FIXED (n) or |
|
INTEGER or INT |
FIXED BINARY (n) or BINARY FIXED (n) or |
|
FLOAT |
BINARY FLOAT (n) or FLOAT BINARY (n) or DECIMAL FLOAT (n) or DEC FLOAT (n) where 7 <= n <= 16 |
|
DATE |
CHARACTER(10) or CHAR(10) |
|
TIME |
CHARACTER(8) or CHAR(8) |
|
TIMESTAMP |
CHARACTER(26) or CHAR(26) |
|
VARCHAR |
CHARACTER(n) VARYING |
|
LONG VARCHAR |
CHARACTER(n) VARYING |
|
GRAPHIC |
GRAPHIC(x) |
|
VARGRAPHIC |
GRAPHIC(x) VARYING |
|
LONG VARGRAPHIC |
GRAPHIC(x) VARYING |
Valid short forms of the declarations are:
The CA Datacom/DB Preprocessor for PL/I recognizes GRAPHIC host variables and allows mixed data in literals. The Shift-Out and Shift-In characters specified in the CXXMAINT option of the CA Datacom/DB Utility (DBUTLTY) are used by the Preprocessor.
Note: PL/I controlled variables are not supported.
PL/I Examples
In the following examples, BEGIN and END DECLARE SECTION markers are used for clarity. They may or may not be required, depending on the SQL mode being used (see Distinguishing Storage for Use as Host-Variables in PL/I).
PL/I Example 1
EXEC SQL BEGIN DECLARE SECTION ;
/*---------------------------------
Host-variables
*--------------------------------*/
DECLARE HID CHAR(12) INIT(' ');
DECLARE HNAME_LAST CHAR(30) INIT(' ');
DECLARE HSTATE CHAR(36) INIT(' ');
/*---------------------------------
Indicator variables
*--------------------------------*/
DECLARE IID FIXED BINARY(15) INIT(0);
DECLARE INAME_LAST FIXED BINARY(15) INIT(0);
DECLARE ISTATE FIXED BINARY(15) INIT(0);
EXEC SQL END DECLARE SECTION ;
PL/I Example 2
/*---------------------------------
An alternate form for the declare
section.
*--------------------------------*/
EXEC SQL
BEGIN DECLARE SECTION ;
%SKIP
/*---------------------------------
Indicator & host-variable pair
*--------------------------------*/
DCL ID_IVAR FIXED BINARY(15);
DCL ID CHAR(12);
%SKIP
DCL NAME_LAST_IVAR FIXED BINARY(15);
DCL NAME_CODE CHAR(30);
%SKIP
EXEC SQL
END DECLARE SECTION ;
PL/I Example 3
EXEC SQL BEGIN DECLARE SECTION ;
/*---------------------------------
Host-variables
*--------------------------------*/
DECLARE HID CHAR(12) INIT(' ');
DECLARE HNAME_LAST CHAR(30) INIT(' ');
DECLARE HSTATE CHAR(36) INIT(' ');
%SKIP
/*---------------------------------
Multiple indicator variables in
a single declare
*--------------------------------*/
DECLARE ( IID,
INAME_LAST,
ISTATE ) FIXED BINARY(15) INIT(0);
EXEC SQL END DECLARE SECTION ;
PL/I Example 4
EXEC SQL BEGIN DECLARE SECTION ;
/*-----------------------------------
Host-variables within a structure
Possible direct references:
Name Qualified name
----- --------------------
SEQ GRPED.SEQ
NAME_FIRST NAME_ALL.NAME_FIRST
NAME_MIDDLE NAME_ALL.NAME_MIDDLE
NAME_LAST NAME_ALL.NAME_LAST
NAME_ADDL NAME_ALL.NAME_ADDL
SSAN GRPED.SSAN
CITY GRPED.CITY
STATE GRPED.STATE
ZIP_5 ZIP.ZIP_5
ZIP_4 ZIP.ZIP_4
Possible indirect references:
NAME_ALL
Ineligible fields and references:
Specification Reason
------------- ---------------
ZIP_ST not 15,0 or 31,0
for use as short
integer or integer
respectively
NOTES array
GRPED too many levels
& contains
ineligible field
ZIP ineligible field
*----------------------------------*/
DECLARE
1 GRPED,
2 SEQ CHAR(2),
2 NAME_ALL ,
3 NAME_FIRST CHAR(30),
3 NAME_MIDDLE CHAR(30),
3 NAME_LAST CHAR(30),
3 NAME_ADDL CHAR(30),
2 SSAN CHAR(11),
2 CITY CHAR(30),
2 STATE CHAR(30),
2 ZIP,
3 ZIP_5 PIC'9999T',
3 ZIP_4 PIC'999T',
3 ZIP_ST FIXED BIN(9,4),
2 NOTES(3) CHAR(80);
DECLARE (ISEQ, INAME, ISSAN, ICITY, ISTATE, IZIP )
FIXED BINARY(15) INIT(0);
EXEC SQL END DECLARE SECTION ;
PL/I Example 5
EXEC SQL BEGIN DECLARE SECTION ;
/*-----------------------------------
Host-variables within a structure
Possible indirect references:
NAME
ZIP
Invalid indirect references:
Specification Reason
------------- ---------------
ADDRESS too many levels
& contains array
TYPE contains array
MAILING too many levels
When CHAR(n) VARYING is specified,
the two fields generated do not
count as an additional level for
expansion purposes.
*----------------------------------*/
DECLARE
1 ADDRESS,
2 TYPE,
3 TYPE_R CHAR(1),
3 TYPE_X(3) CHAR(1),
2 NAME,
3 FIRST_NAME CHAR(30) VARYING,
3 MIDDLE_NAME CHAR(30) VARYING,
3 LAST_NAME CHAR(30) VARYING,
2 MAILING,
3 CARE_OF CHAR(60) VARYING,
3 LINE_1 CHAR(60) VARYING,
3 LINE_2 CHAR(60) VARYING,
3 LINE_3 CHAR(60) VARYING,
3 CITY CHAR(60),
3 STATE CHAR(30),
3 ZIP,
4 ZIP_5 PIC'9999T',
4 ZIP_4 PIC'999T';
EXEC SQL END DECLARE SECTION ;
PL/I Example 6
EXEC SQL BEGIN DECLARE SECTION ;
/*-----------------------------------
Host-variables within a structure
This structure, though similar to
the previous example, expands
entirely.
*----------------------------------*/
DECLARE
1 ADDRESS,
2 TYPE CHAR(4),
2 FIRST_NAME CHAR(30) VARYING,
2 MIDDLE_NAME CHAR(30) VARYING,
2 LAST_NAME CHAR(30) VARYING,
2 CARE_OF CHAR(60) VARYING,
2 LINE_1 CHAR(60) VARYING,
2 LINE_2 CHAR(60) VARYING,
2 LINE_3 CHAR(60) VARYING,
2 CITY CHAR(60),
2 STATE CHAR(30),
2 ZIP PIC'99999999T';
EXEC SQL END DECLARE SECTION ;
|
Copyright © 2014 CA.
All rights reserved.
|
|