diff --git a/CISTOOLS/Functions/GET_DESCRIPTOR.sql b/CISTOOLS/Functions/GET_DESCRIPTOR.sql
index 27557c0..4c18b9a 100644
--- a/CISTOOLS/Functions/GET_DESCRIPTOR.sql
+++ b/CISTOOLS/Functions/GET_DESCRIPTOR.sql
@@ -1 +1,305 @@
-âÅã@×ÁãÈ@\ÓÉÂÓ@^@
%
%ÃÙÅÁãÅ@ÖÙ@ÙÅ×ÓÁÃÅ@ÆäÕÃãÉÖÕ@ÃÉâãÖÖÓâKÇÅãmÄÅâÃÙÉ×ãÖÙ@M@
%âØÓâãÔã@åÁÙÃÈÁÙMóòððð]@]@
%ÙÅãäÙÕâ@ãÁÂÓÅ@M@
%ÃÖÓäÔÕÃÁÙÄÉÕÁÓÉãè@ÂÉÇÉÕã@k@
%ÄÁãÅãÉÔÅÃÖÄÅ@ÉÕãÅÇÅÙ@k@
%ÂÁâÅÄÂÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÂÁâÅÃÖÓäÔÕÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÂÁâÅÓÉÂÙÁÙèÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÂÁâÅãÁÂÓÅÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÃÖÓäÔÕÃÃâÉÄ@ÉÕãÅÇÅÙ@k@
%ÃÖÓäÔÕÄÂÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÃÖÓäÔÕÇÅÕÅÙÁãÅÄ@ÉÕãÅÇÅÙ@k@
%ÃÖÓäÔÕÇÅÕÅÙÁãÉÖÕãè×Å@ÉÕãÅÇÅÙ@k@
%ÃÖÓäÔÕÈÉÄÄÅÕ@ÉÕãÅÇÅÙ@k@
%ÃÖÓäÔÕÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÃÖÓäÔÕÙÖæÃÈÁÕÇÅ@ÉÕãÅÇÅÙ@k@
%ÃÖÓäÔÕÓÉÂÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÃÖÓäÔÕãÂÓÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÃÖÓäÔÕÁÓÓÖæä×ÄÁãÅ@ÉÕãÅÇÅÙ@k@
%ÃÖÙÙÅÓÁãÉÖÕÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÃäÙâÖÙÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÃÖÓäÔÕÓÁÂÅÓ@åÁÙÃÈÁÙMöð]@k@
%×ÁÙÁÔÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÙÅâäÓãâÅãÙÖæ@ÂÉÇÉÕã@k@
%âèâãÅÔÃÖÓäÔÕÕÁÔÅ@ÃÈÁÙMñð]@k@
%ÒÅèÔÅÔÂÅÙ@ÉÕãÅÇÅÙ@k@
%ÃÖÓäÔÕÓÅÕÇãÈ@ÉÕãÅÇÅÙ@k@
%ÃÖÓäÔÕÓÅåÅÓ@ÉÕãÅÇÅÙ@k@
%ÖÂÑÅÃãÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%ÉâÕäÓÓÁÂÓÅ@ÉÕãÅÇÅÙ@k@
%ÖÃãÅãÓÅÕÇãÈ@ÉÕãÅÇÅÙ@k@
%×ÁÙÁÔÔÖÄÅ@ÉÕãÅÇÅÙ@k@
%×ÁÙÁÔÖÙÄ×Öâ@ÉÕãÅÇÅÙ@k@
%ÖÙÄÉÕÁÓ×Öâ@ÉÕãÅÇÅÙ@k@
%×ÁÙÁÔâ×ÅÃÉÆÉÃÄÂ@åÁÙÃÈÁÙMñòø]@k@
%×ÁÙÁÔâ×ÅÃÉÆÉÃãÁÂÓÅ@åÁÙÃÈÁÙMñòø]@k@
%×ÁÙÁÔâ×ÅÃÉÆÉÃÓÉÂ@åÁÙÃÈÁÙMñòø]@k@
%×ÙÅÃÉâÉÖÕ@ÉÕãÅÇÅÙ@k@
%ÙÅãäÙÕÁÙÙÁèâÉéÅ@ÉÕãÅÇÅÙ@k@
%ÙÅãäÙÕÓÅÕÇãÈ@ÉÕãÅÇÅÙ@k@
%ÙÅãäÙÕÖÃãÅãÓÅÕÇãÈ@ÉÕãÅÇÅÙ@k@
%âÃÁÓÅ@ÉÕãÅÇÅÙ@k@
%ÄÁãÁãè×Å@ÉÕãÅÇÅÙ@k@
%âØÓãè×Å@åÁÙÃÈÁÙMñòø]@k@
%ÉâäÕÕÁÔÅÄ@ÉÕãÅÇÅÙ@k@
%äÄãÃÁãÁÓÖÇ@åÁÙÃÈÁÙMñòø]@k@
%äÄãÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@
%äÄãâÃÈÅÔÁ@åÁÙÃÈÁÙMñòø]@k@
%äÄãÃÖÄÅ@åÁÙÃÈÁÙMñòø]@]@@@
%ÓÁÕÇäÁÇÅ@âØÓ@
%â×ÅÃÉÆÉÃ@ÃÉâãÖÖÓâKÇÅãmÄÅâÃÙÉ×ãÖÙ@
%ÕÖã@ÄÅãÅÙÔÉÕÉâãÉÃ@
%ÙÅÁÄâ@âØÓ@ÄÁãÁ@
%ÃÁÓÓÅÄ@ÖÕ@ÕäÓÓ@ÉÕ×äã@
%ÕÖ@ÅçãÅÙÕÁÓ@ÁÃãÉÖÕ@
%ÃÖÕÃäÙÙÅÕã@ÁÃÃÅââ@ÙÅâÖÓäãÉÖÕ@ÄÅÆÁäÓã@
%âÅã@Ö×ãÉÖÕ@@ÁÓæÂÓÒ@~@\ÁÓÓÙÅÁÄ@k@
%ÁÓæÃ×èÄãÁ@~@\Ö×ãÉÔÉéÅ@k@
%ÃÖÔÔÉã@~@\ÕÖÕÅ@k@
%ÄÂÇåÉÅæ@~@\âÖäÙÃÅ@k@
%ÄÅÃÙÅâäÓã@~@Móñk@óñk@ðð]@k@
%ÄèÕÄÆãÃÖÓ@~@\ÕÖ@k@
%ÄèÕäâÙ×ÙÆ@~@\ÖæÕÅÙ@k@
%Ö×ãÓÖÂ@~@\èÅâ@k@
%âØÓÃäÙÙäÓÅ@~@\âãÄ@k@
%âÙãâÅØ@~@\ÈÅç@@@
%ÂÅÇÉÕ@
%ÄÅÃÓÁÙÅ@âãÔãÈÁÕÄÓÅ@ÂÉÇÉÕã@^@
%ÄÅÃÓÁÙÅ@ÄÅâÃÈÁÕÄÓÅ@åÁÙÃÈÁÙ@M@ñòø@]@^@
%ÄÅÃÓÁÙÅ@åÃÁÙÄÉÕÁÓÉãè@ÂÉÇÉÕã@ÄÅÆÁäÓã@ð@^@
%ÄÅÃÓÁÙÅ@åÄÁãÅãÉÔÅÃÖÄÅ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@
%ÄÅÃÓÁÙÅ@åÂÁâÅÄÂÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@
%ÄÅÃÓÁÙÅ@åÂÁâÅÃÖÓäÔÕÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@
%ÄÅÃÓÁÙÅ@åÂÁâÅÓÉÂÙÁÙèÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@
%ÄÅÃÓÁÙÅ@åÂÁâÅãÁÂÓÅÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@
%ÄÅÃÓÁÙÅ@åÃÃâÉÄ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@
%ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÄÂÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@
%ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÇÅÕÅÙÁãÅÄ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@
%ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÇÅÕÅÙÁãÉÖÕãè×Å@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@
%ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÈÉÄÄÅÕ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@
%ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@
%ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÙÖæÃÈÁÕÇÅ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@
%ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÓÉÂÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@
%ÄÅÃÓÁÙÅ@åÃÖÓäÔÕãÂÓÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@
%ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÁÓÓÖæä×ÄÁãÅ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@
%ÄÅÃÓÁÙÅ@åÃÖÙÙÅÓÁã
\ No newline at end of file
+SET PATH *LIBL ; 
+
+CREATE OR REPLACE FUNCTION CISTOOLS.GET_DESCRIPTOR ( 
+	SQLSTMT VARCHAR(32000) ) 
+	RETURNS TABLE ( 
+	COLUMNCARDINALITY BIGINT , 
+	DATETIMECODE INTEGER , 
+	BASEDBNAME VARCHAR(128) , 
+	BASECOLUMNNAME VARCHAR(128) , 
+	BASELIBRARYNAME VARCHAR(128) , 
+	BASETABLENAME VARCHAR(128) , 
+	COLUMNCCSID INTEGER , 
+	COLUMNDBNAME VARCHAR(128) , 
+	COLUMNGENERATED INTEGER , 
+	COLUMNGENERATIONTYPE INTEGER , 
+	COLUMNHIDDEN INTEGER , 
+	COLUMNNAME VARCHAR(128) , 
+	COLUMNROWCHANGE INTEGER , 
+	COLUMNLIBNAME VARCHAR(128) , 
+	COLUMNTBLNAME VARCHAR(128) , 
+	COLUMNALLOWUPDATE INTEGER , 
+	CORRELATIONNAME VARCHAR(128) , 
+	CURSORNAME VARCHAR(128) , 
+	COLUMNLABEL VARCHAR(60) , 
+	PARAMNAME VARCHAR(128) , 
+	RESULTSETROW BIGINT , 
+	SYSTEMCOLUMNNAME CHAR(10) , 
+	KEYMEMBER INTEGER , 
+	COLUMNLENGTH INTEGER , 
+	COLUMNLEVEL INTEGER , 
+	OBJECTNAME VARCHAR(128) , 
+	ISNULLABLE INTEGER , 
+	OCTETLENGTH INTEGER , 
+	PARAMMODE INTEGER , 
+	PARAMORDPOS INTEGER , 
+	ORDINALPOS INTEGER , 
+	PARAMSPECIFICDB VARCHAR(128) , 
+	PARAMSPECIFICTABLE VARCHAR(128) , 
+	PARAMSPECIFICLIB VARCHAR(128) , 
+	PRECISION INTEGER , 
+	RETURNARRAYSIZE INTEGER , 
+	RETURNLENGTH INTEGER , 
+	RETURNOCTETLENGTH INTEGER , 
+	SCALE INTEGER , 
+	DATATYPE INTEGER , 
+	SQLTYPE VARCHAR(128) , 
+	ISUNNAMED INTEGER , 
+	UDTCATALOG VARCHAR(128) , 
+	UDTNAME VARCHAR(128) , 
+	UDTSCHEMA VARCHAR(128) , 
+	UDTCODE VARCHAR(128) )   
+	LANGUAGE SQL 
+	SPECIFIC CISTOOLS.GET_DESCRIPTOR 
+	NOT DETERMINISTIC 
+	READS SQL DATA 
+	CALLED ON NULL INPUT 
+	NO EXTERNAL ACTION 
+	CONCURRENT ACCESS RESOLUTION DEFAULT 
+	SET OPTION  ALWBLK = *ALLREAD , 
+	ALWCPYDTA = *OPTIMIZE , 
+	COMMIT = *NONE , 
+	DBGVIEW = *SOURCE , 
+	DECRESULT = (31, 31, 00) , 
+	DYNDFTCOL = *NO , 
+	DYNUSRPRF = *OWNER , 
+	OPTLOB = *YES , 
+	SQLCURRULE = *STD , 
+	SRTSEQ = *HEX   
+	BEGIN 
+DECLARE STMTHANDLE BIGINT ; 
+DECLARE DESCHANDLE VARCHAR ( 128 ) ; 
+DECLARE VCARDINALITY BIGINT DEFAULT 0 ; 
+DECLARE VDATETIMECODE INTEGER DEFAULT 0 ; 
+DECLARE VBASEDBNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VBASECOLUMNNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VBASELIBRARYNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VBASETABLENAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VCCSID INTEGER DEFAULT 0 ; 
+DECLARE VCOLUMNDBNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VCOLUMNGENERATED INTEGER DEFAULT 0 ; 
+DECLARE VCOLUMNGENERATIONTYPE INTEGER DEFAULT 0 ; 
+DECLARE VCOLUMNHIDDEN INTEGER DEFAULT 0 ; 
+DECLARE VCOLUMNNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VCOLUMNROWCHANGE INTEGER DEFAULT 0 ; 
+DECLARE VCOLUMNLIBNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VCOLUMNTBLNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VCOLUMNALLOWUPDATE INTEGER DEFAULT 0 ; 
+DECLARE VCORRELATIONNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VCURSORNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VLABEL VARCHAR ( 60 ) DEFAULT ' ' ; 
+DECLARE VPARAMNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VRESULTSETROW BIGINT DEFAULT 0 ; 
+DECLARE VSYSTEMCOLUMNNAME CHAR ( 10 ) DEFAULT ' ' ; 
+DECLARE VKEYMEMBER INTEGER DEFAULT 0 ; 
+DECLARE VLENGTH INTEGER DEFAULT 0 ; 
+DECLARE VLEVEL INTEGER DEFAULT 0 ; 
+DECLARE VOBJECTNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VISNULLABLE INTEGER DEFAULT 0 ; 
+DECLARE VOCTETLENGTH INTEGER DEFAULT 0 ; 
+DECLARE VPARAMMODE INTEGER DEFAULT 0 ; 
+DECLARE VPARAMORDPOS INTEGER DEFAULT 0 ; 
+DECLARE VORDINALPOS INTEGER DEFAULT 0 ; 
+DECLARE VPARAMSPECIFICDB VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VPARAMSPECIFICTABLE VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VPARAMSPECIFICLIB VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VPRECISION INTEGER DEFAULT 0 ; 
+DECLARE VRETURNARRAYSIZE INTEGER DEFAULT 0 ; 
+DECLARE VRETURNLENGTH INTEGER DEFAULT 0 ; 
+DECLARE VRETURNOCTETLENGTH INTEGER DEFAULT 0 ; 
+DECLARE VSCALE INTEGER DEFAULT 0 ; 
+DECLARE VDATATYPE INTEGER DEFAULT 0 ; 
+DECLARE VSQLTYPE VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VISUNNAMED INTEGER DEFAULT 0 ; 
+DECLARE VUDTCATALOG VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VUDTNAME VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VUDTSCHEMA VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE VUDTCODE VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE I INTEGER DEFAULT 1 ; 
+DECLARE TOKEN VARCHAR ( 128 ) DEFAULT ' ' ; 
+DECLARE RTNSQLCODE INT ; 
+DECLARE COLCOUNT INTEGER ; 
+DECLARE SQLCODE INTEGER DEFAULT 0 ; 
+DECLARE SQLSTATE CHAR ( 5 ) DEFAULT '00000' ; 
+DECLARE CONTINUE HANDLER FOR SQLSTATE '22501' , SQLSTATE '33000' 
+BEGIN 
+DEALLOCATE DESCRIPTOR LOCAL DESCHANDLE ; 
+GET DIAGNOSTICS CONDITION 1 TOKEN = DB2_ORDINAL_TOKEN_2 ; 
+SET COLCOUNT = TOKEN ; 
+ALLOCATE DESCRIPTOR LOCAL DESCHANDLE WITH MAX COLCOUNT ; 
+DESCRIBE STMTHANDLE USING DESCRIPTOR LOCAL DESCHANDLE ; 
+SET I = 1 ; 
+END ; 
+SET DESCHANDLE = 'Descr' || HEX ( GENERATE_UNIQUE ( ) ) ; 
+PREPARE STMTHANDLE FROM SQLSTMT ; 
+ALLOCATE DESCRIPTOR LOCAL DESCHANDLE WITH MAX 1024 ; 
+DESCRIBE STMTHANDLE USING DESCRIPTOR LOCAL DESCHANDLE ; 
+GET DESCRIPTOR LOCAL DESCHANDLE COLCOUNT = COUNT ; 
+WHILE I <= COLCOUNT DO 
+GET DESCRIPTOR LOCAL DESCHANDLE 
+VALUE I 
+VCARDINALITY = CARDINALITY , 
+VDATETIMECODE = DATETIME_INTERVAL_CODE , 
+VBASEDBNAME = DB2_BASE_CATALOG_NAME , 
+VBASECOLUMNNAME = DB2_BASE_COLUMN_NAME , 
+VBASELIBRARYNAME = DB2_BASE_SCHEMA_NAME , 
+VBASETABLENAME = DB2_BASE_TABLE_NAME , VCCSID = DB2_CCSID , 
+VCOLUMNDBNAME = DB2_COLUMN_CATALOG_NAME , 
+VCOLUMNGENERATED = DB2_COLUMN_GENERATED , 
+VCOLUMNGENERATIONTYPE = DB2_COLUMN_GENERATION_TYPE , 
+VCOLUMNHIDDEN = DB2_COLUMN_HIDDEN , 
+VCOLUMNNAME = DB2_COLUMN_NAME , 
+VCOLUMNROWCHANGE = DB2_COLUMN_ROW_CHANGE , 
+VCOLUMNLIBNAME = DB2_COLUMN_SCHEMA_NAME , 
+VCOLUMNTBLNAME = DB2_COLUMN_TABLE_NAME , 
+VCOLUMNALLOWUPDATE = DB2_COLUMN_UPDATABILITY , 
+VCORRELATIONNAME = DB2_CORRELATION_NAME , 
+VCURSORNAME = DB2_CURSOR_NAME , VLABEL = DB2_LABEL , 
+VPARAMNAME = DB2_PARAMETER_NAME , 
+VRESULTSETROW = DB2_RESULT_SET_ROWS , 
+VSYSTEMCOLUMNNAME = DB2_SYSTEM_COLUMN_NAME , 
+VKEYMEMBER = KEY_MEMBER , VLENGTH = LENGTH , VLEVEL = LEVEL , 
+VOBJECTNAME = NAME , VISNULLABLE = NULLABLE , 
+VOCTETLENGTH = OCTET_LENGTH , VPARAMMODE = PARAMETER_MODE , 
+VPARAMORDPOS = PARAMETER_ORDINAL_POSITION , 
+VPARAMSPECIFICDB = PARAMETER_SPECIFIC_CATALOG , 
+VPARAMSPECIFICTABLE = PARAMETER_SPECIFIC_NAME , 
+VPARAMSPECIFICLIB = PARAMETER_SPECIFIC_SCHEMA , 
+VPRECISION = PRECISION , 
+VRETURNARRAYSIZE = RETURNED_CARDINALITY , 
+VRETURNLENGTH = RETURNED_LENGTH , 
+VRETURNOCTETLENGTH = RETURNED_OCTET_LENGTH , VSCALE = SCALE , 
+VDATATYPE = TYPE , VISUNNAMED = UNNAMED , 
+VUDTCATALOG = USER_DEFINED_TYPE_CATALOG , 
+VUDTNAME = USER_DEFINED_TYPE_NAME , 
+VUDTSCHEMA = USER_DEFINED_TYPE_SCHEMA , 
+VUDTCODE = USER_DEFINED_TYPE_CODE ; 
+SET VLABEL = CISTOOLS . STRIP_SPACES ( VLABEL ) ; 
+SET VORDINALPOS = I ; 
+-- This code block maps data types to their equivalent SQL types 
+-- Standardize variable names 
+IF VDATATYPE = 5 THEN 
+SET VSQLTYPE = 'SQL_SMALLINT' ; 
+SET VLENGTH = 2 ; 
+SET VOCTETLENGTH = 2 ; 
+ELSEIF VDATATYPE = 4 THEN 
+SET VSQLTYPE = 'SQL_INTEGER' ; 
+SET VLENGTH = 4 ; 
+SET VOCTETLENGTH = 4 ; 
+ELSEIF VDATATYPE = 25 THEN 
+SET VSQLTYPE = 'SQL_BIGINT' ; 
+SET VLENGTH = 8 ; 
+SET VOCTETLENGTH = 8 ; 
+ELSEIF VDATATYPE = 3 THEN 
+SET VSQLTYPE = 'SQL_DECIMAL' ; 
+SET VLENGTH = ( VPRECISION / 2 ) + 1 ; 
+SET VOCTETLENGTH = ( VPRECISION / 2 ) + 1 ; 
+ELSEIF VDATATYPE = 2 THEN 
+SET VSQLTYPE = 'SQL_NUMERIC' ; 
+ELSEIF VDATATYPE = 7 THEN 
+SET VSQLTYPE = 'SQL_REAL' ; 
+SET VLENGTH = 4 ; 
+SET VOCTETLENGTH = 4 ; 
+ELSEIF VDATATYPE = 8 THEN 
+SET VSQLTYPE = 'SQL_DECFLOAT' ; 
+SET VLENGTH = 8 ; 
+SET VOCTETLENGTH = 8 ; 
+ELSEIF VDATATYPE = - 360 THEN 
+SET VSQLTYPE = 'SQL_DECFLOAT' ; 
+ELSEIF VDATATYPE = 1 THEN 
+SET VSQLTYPE = 'SQL_CHARACTER' ; 
+ELSEIF VDATATYPE = 12 THEN 
+SET VSQLTYPE = 'SQL_VARCHAR' ; 
+ELSEIF VDATATYPE = 40 THEN 
+SET VSQLTYPE = 'SQL_CLOB' ; 
+ELSEIF VDATATYPE = - 95 THEN 
+SET VSQLTYPE = 'SQL_GRAPHIC' ; 
+SET VOCTETLENGTH = VLENGTH * 2 ; 
+ELSEIF VDATATYPE = - 96 THEN 
+SET VSQLTYPE = 'SQL_VARGRAPHIC' ; 
+SET VOCTETLENGTH = VLENGTH * 2 ; 
+ELSEIF VDATATYPE = - 350 THEN 
+SET VSQLTYPE = 'SQL_DBCLOB' ; 
+SET VOCTETLENGTH = VLENGTH * 2 ; 
+ELSEIF VDATATYPE = - 2 THEN 
+SET VSQLTYPE = 'SQL_BINARY' ; 
+ELSEIF VDATATYPE = - 3 THEN 
+SET VSQLTYPE = 'SQL_VARBINARY' ; 
+ELSEIF VDATATYPE = 30 THEN 
+SET VSQLTYPE = 'SQL_BLOB' ; 
+ELSEIF VDATATYPE = 9 THEN 
+IF VDATETIMECODE = 1 THEN 
+SET VSQLTYPE = 'SQL_DATE' ; 
+SET VLENGTH = 10 ; 
+SET VOCTETLENGTH = 10 ; 
+ELSEIF VDATETIMECODE = 2 THEN 
+SET VSQLTYPE = 'SQL_TIME' ; 
+SET VLENGTH = 8 ; 
+SET VOCTETLENGTH = 8 ; 
+ELSEIF VDATETIMECODE = 3 THEN 
+SET VSQLTYPE = 'SQL_TIMESTAMP' ; 
+SET VLENGTH = 26 ; 
+SET VOCTETLENGTH = 26 ; 
+END IF ; 
+ELSEIF VDATATYPE = 70 THEN 
+SET VSQLTYPE = 'SQL_DATALINK' ; 
+ELSEIF VDATATYPE = - 904 THEN 
+SET VSQLTYPE = 'SQL_ROWID' ; 
+ELSEIF VDATATYPE = 137 THEN 
+SET VSQLTYPE = 'SQL_XML' ; 
+ELSEIF VDATATYPE = - 400 THEN 
+SET VSQLTYPE = 'SQL_GRAPHIC' ; 
+SET VOCTETLENGTH = VLENGTH * 2 ; 
+ELSEIF VDATATYPE = - 916 THEN 
+SET VSQL_TYPE = 'SQL_BLOB' ; 
+SET VLENGTH = 267 ; 
+SET VOCTETLENGTH = 267 ; 
+ELSEIF VDATATYPE = - 920 THEN 
+SET VSQL_TYPE = 'SQL_CLOB' ; 
+SET VLENGTH = 267 ; 
+SET VOCTETLENGTH = 267 ; 
+ELSEIF VDATATYPE = - 924 THEN 
+SET VSQL_TYPE = 'SQL_DBCLOB' ; 
+SET VLENGTH = 267 ; 
+SET VOCTETLENGTH = 267 ; 
+ELSEIF VDATATYPE = - 972 THEN 
+SET VSQL_TYPE = 'SQL_RESULT_SET_LOCATOR' ; 
+SET VLENGTH = 8 ; 
+SET VOCTETLENGTH = 8 ; 
+ELSE 
+SET VSQLTYPE = 'UNKNOWN TYPE' ; 
+END IF ; 
+PIPE ( 
+VCARDINALITY , 
+VDATETIMECODE , VBASEDBNAME , VBASECOLUMNNAME , VBASELIBRARYNAME , 
+VBASETABLENAME , VCCSID , VCOLUMNDBNAME , VCOLUMNGENERATED , 
+VCOLUMNGENERATIONTYPE , VCOLUMNHIDDEN , VCOLUMNNAME , 
+VCOLUMNROWCHANGE , VCOLUMNLIBNAME , VCOLUMNTBLNAME , 
+VCOLUMNALLOWUPDATE , VCORRELATIONNAME , VCURSORNAME , VLABEL , 
+VPARAMNAME , VRESULTSETROW , VSYSTEMCOLUMNNAME , VKEYMEMBER , 
+VLENGTH , VLEVEL , VOBJECTNAME , VISNULLABLE , VOCTETLENGTH , 
+VPARAMMODE , VPARAMORDPOS , VORDINALPOS , VPARAMSPECIFICDB , 
+VPARAMSPECIFICTABLE , VPARAMSPECIFICLIB , VPRECISION , 
+VRETURNARRAYSIZE , VRETURNLENGTH , VRETURNOCTETLENGTH , VSCALE , 
+VDATATYPE , VSQLTYPE , VISUNNAMED , VUDTCATALOG , VUDTNAME , 
+VUDTSCHEMA , VUDTCODE ) ; 
+SET I = I + 1 ; 
+END WHILE ; 
+DEALLOCATE DESCRIPTOR LOCAL DESCHANDLE ; 
+RETURN ; 
+END  ; 
+
+COMMENT ON PARAMETER SPECIFIC FUNCTION CISTOOLS.GET_DESCRIPTOR 
+( SQLSTMT IS 'SQL Statement' ) ; 
+
+LABEL ON SPECIFIC FUNCTION CISTOOLS.GET_DESCRIPTOR 
+	IS 'Get Descriptor' ; 
+
+GRANT ALTER , EXECUTE   
+ON SPECIFIC FUNCTION CISTOOLS.GET_DESCRIPTOR 
+TO AMAPICS WITH GRANT OPTION ; 
+
+GRANT EXECUTE   
+ON SPECIFIC FUNCTION CISTOOLS.GET_DESCRIPTOR 
+TO PUBLIC ; 
+
