Database Forum / DB2 Topics / June 2007
DB2 V7 CLP 'Input line too long' problem
|
|
Thread rating:  |
Graham Hobbs - 26 Jun 2007 04:11 GMT Hello, Help please,
I use a Cobol program, that based on a DCLGEN input, creates a DDL file to create a test table. Typically my DCLGEN's are just a few columns each. The Cobol program generates a file MYDDL.CMD which when run in a DB2 CLP (command line processor) works OK.
Until I tried a 'big' DCLGEN.
Below is a CMD file that went wrong. The CREATE record below is wrapped because of Notepad. All the recs are 10K bytes, the CREATE stmt occupying the first 3426 bytes.
The MYDDL.CMD is:
DB2 CONNECT TO ORG3 DB2 DROP TABLE U.TEMPL DB2 CREATE TABLE U.TEMPL ( I_EMPL INTEGER NOT NULL, X_ASSGND_CURR CHAR(20) NOT NULL, X_ASSGND_PRIOR CHAR(20) NOT NULL, D_ASSGND_CURR INTEGER NOT NULL, I_TLX_CBL CHAR(20) NOT NULL, D_EXEC_SERV INTEGER NOT NULL, D_INTNL_SERV INTEGER NOT NULL, L_FICA_ELIG CHAR(1) NOT NULL, C_INTNL_ASSGND CHAR(1) NOT NULL, C_INTNL_GRP CHAR(4) NOT NULL, D_INCR INTEGER NOT NULL, C_INCR_TYP CHAR(1) NOT NULL, A_INCR DECIMAL(11,02) NOT NULL, P_INCR DECIMAL(5,02) NOT NULL, L_EMPL_HSHIP CHAR(1) NOT NULL, I_EMERG INTEGER NOT NULL, D_CORP INTEGER NOT NULL, I_DEPT DECIMAL(4,00) NOT NULL, C_CLF CHAR(6) NOT NULL, C_EMPL_GR CHAR(2) NOT NULL, I_GRP CHAR(4) NOT NULL, L_STAT DECIMAL(1,00) NOT NULL, L_INTNL_STAT DECIMAL(1,00) NOT NULL, A_MNTLY_SAL DECIMAL(11,02) NOT NULL, I_CORPLOC CHAR(4) NOT NULL, L_MGMT_TRNEE CHAR(1) NOT NULL, D_CREDTD_SERV INTEGER NOT NULL, D_INACTV_STRT INTEGER NOT NULL, D_WRKD_LAST INTEGER NOT NULL, A_BASE_RATE DECIMAL(8,02) NOT NULL, D_PAY_THRU INTEGER NOT NULL, D_SEN INTEGER NOT NULL, Q_VAC_PD DECIMAL(3,01) NOT NULL, Q_VAC_PD_PREV DECIMAL(3,01) NOT NULL, C_REHIRE_RECMN CHAR(1) NOT NULL, A_AWD DECIMAL(8,02) NOT NULL, I_CLF CHAR(6) NOT NULL, C_CLF_SUFF DECIMAL(3,00) NOT NULL, C_TYP CHAR(1) NOT NULL, D_UPD INTEGER NOT NULL, T_UPD INTEGER NOT NULL, I_LOGON CHAR(7) NOT NULL, N_CMPTRPGM CHAR(8) NOT NULL, D_HIRE INTEGER NOT NULL, D_GAIN_SEN INTEGER NOT NULL, C_EMPL_SHFT CHAR(1) NOT NULL, I_MSTR_CANDN CHAR(5) NOT NULL, C_PHYS_WORK_LOC CHAR(4) NOT NULL, I_SUPVR_GRP CHAR(3) NOT NULL, C_LVL SMALLINT NOT NULL, I_CIMS CHAR(7) NOT NULL, D_PHYS_REVW INTEGER NOT NULL, L_I_9 CHAR(1) NOT NULL, D_PROGN_CALCN INTEGER NOT NULL, I_SKLD_EMPL_RET DECIMAL(4,00) NOT NULL, I_NSKLD_EMPL_SEN DECIMAL(4,00) NOT NULL, L_PLT_ELECTN_REQD CHAR(1) NOT NULL, L_PLT_ELECTN_MADE CHAR(1) NOT NULL, I_BADGE CHAR(8) NOT NULL, D_BADGE INTEGER NOT NULL, C_CLF_PRE CHAR(1) NOT NULL, C_SEPN_RATNG_ALL CHAR(4) NOT NULL, D_120_DAY INTEGER NOT NULL, C_AUTH_CLS CHAR(3) NOT NULL, L_TAX_CR CHAR(1) NOT NULL, L_TAX_CR_FLWP CHAR(1) NOT NULL, L_RED_CRCL CHAR(1) NOT NULL, C_BOND_DENOM CHAR(2) NOT NULL, A_BOND_DED DECIMAL(7,02) NOT NULL, D_NSKLD_SEN INTEGER NOT NULL, D_PROGN_1 INTEGER NOT NULL, D_PROGN_2 INTEGER NOT NULL, D_PROGN_3 INTEGER NOT NULL, D_SKLD_SEN INTEGER NOT NULL, D_ENTRY_UPGRR INTEGER NOT NULL, D_ENTRY_INDTR INTEGER NOT NULL, D_PARNT_SEN INTEGER NOT NULL, C_PARNT_CORPLOC CHAR(4) NOT NULL, C_SHFT_PREFD CHAR(1) NOT NULL, D_SHFT_APPLY INTEGER NOT NULL, D_SHFT_ELIG INTEGER NOT NULL, C_EMPL_TYP CHAR(1) NOT NULL, I_UNION CHAR(5) NOT NULL, I_UNION_LCL CHAR(5) NOT NULL, C_PERS_SUFF CHAR(4) NOT NULL, C_PERS CHAR(2) NOT NULL, D_TRAN_EFFCTV INTEGER NOT NULL, Q_HRS_IN_PGM DECIMAL(4,00) NOT NULL, X_TAX_CR CHAR(30) NOT NULL, C_CLF_ADDON CHAR(1) NOT NULL, A_CLF_ADDON DECIMAL(5,02) NOT NULL, C_CLF_RATE_TYP CHAR(2) NOT NULL, L_ATTDNC_CHRNC CHAR(1) NOT NULL, L_EMPL_SA_CHRNC CHAR(1) NOT NULL, L_EMPL_AMC_PREV CHAR(1) NOT NULL, C_EMPL_SEPN CHAR(2) NOT NULL, D_EMPL_SEPN INTEGER NOT NULL, L_EMPL_BADGE_STAT CHAR(1) NOT NULL, D_EMPL_I_9_EXPRN INTEGER NOT NULL, D_EMPL_I_9_CPLN INTEGER NOT NULL, D_EMPL_I_9_PURG INTEGER NOT NULL, C_EMPL_INCR_NEXT CHAR(2) NOT NULL, C_EMPL_OCCPTL_GRP CHAR(2) NOT NULL, I_UNION_LCL_UNIT CHAR(2) NOT NULL, L_EMPL_PROBTN CHAR(1) NOT NULL, C_LABR_TYP CHAR(1) NOT NULL, L_JOB_TEMPRY_SEN CHAR(1) NOT NULL, C_STRUC_SAL CHAR(2) NOT NULL, A_EMPL_AMC_RECVD DECIMAL(7,02) NOT NULL, D_PERSN_RET_ANTCP DATE, PRIMARY KEY ( C_INTNL_GRP ) )
I get...
Database Connection Information
Database server = DB2/NT 7.2.5 SQL authorization ID = ADMINIST... Local database alias = ORG3
DB20000I The SQL command completed successfully. The input line is too long.
E:\conrad\demo>
Both CONNECT and DROP seemed to be OK. So I went looking for 'how big can a CLP SQL stmt be'? Well, I can't get to my DB2 V7 documentation (dont ask, long ugly story) so I went to DB2 V9 documentation where it says CLP stmts can now be 2M whereas older DB2's were only 64K.
So, given a record of 10K, 3426 of which is SQL stmt (both numbers well under 64K), other smaller DCLGEN's work without problem, my question is why do I get 'The input line is too long'. Something silly I've missed.
Sorry for length of post, any help please, thanks. Graham Hobbs
 Signature Posted via a free Usenet account from http://www.teranews.com
Jan M. Nelken - 26 Jun 2007 05:19 GMT > Until I tried a 'big' DCLGEN. > [quoted text clipped - 8 lines] > DB2 CREATE TABLE U.TEMPL ( I_EMPL INTEGER NOT NULL, X_ASSGND_CURR > CHAR(20) NOT NULL, X_ASSGND_PRIOR CHAR(20) NOT NULL, D_ASSGND_CURR Try edit MYDDL>CMD and remove DB2<blank> from beginning of each line containing it.
Termiante each command line with semicolon (;).
Then run it as DB2 CLP script:
DB2 -tvf MYDDL.CMD -z MYDDL.CMD.OUT
Your MYDDL.CMD should look like this ( I corrected syntax error whereby there was a comma after last column - D_PERSN_RET_ANTCP - definition):
-------------------------------------------------------------------
CONNECT TO ORG3; DROP TABLE U.TEMPL; CREATE TABLE U.TEMPL ( I_EMPL INTEGER NOT NULL, X_ASSGND_CURR CHAR(20) NOT NULL, X_ASSGND_PRIOR CHAR(20) NOT NULL, D_ASSGND_CURR INTEGER NOT NULL, I_TLX_CBL CHAR(20) NOT NULL, D_EXEC_SERV INTEGER NOT NULL, D_INTNL_SERV INTEGER NOT NULL, L_FICA_ELIG CHAR(1) NOT NULL, C_INTNL_ASSGND CHAR(1) NOT NULL, C_INTNL_GRP CHAR(4) NOT NULL, D_INCR INTEGER NOT NULL, C_INCR_TYP CHAR(1) NOT NULL, A_INCR DECIMAL(11,02) NOT NULL, P_INCR DECIMAL(5,02) NOT NULL, L_EMPL_HSHIP CHAR(1) NOT NULL, I_EMERG INTEGER NOT NULL, D_CORP INTEGER NOT NULL, I_DEPT DECIMAL(4,00) NOT NULL, C_CLF CHAR(6) NOT NULL, C_EMPL_GR CHAR(2) NOT NULL, I_GRP CHAR(4) NOT NULL, L_STAT DECIMAL(1,00) NOT NULL, L_INTNL_STAT DECIMAL(1,00) NOT NULL, A_MNTLY_SAL DECIMAL(11,02) NOT NULL, I_CORPLOC CHAR(4) NOT NULL, L_MGMT_TRNEE CHAR(1) NOT NULL, D_CREDTD_SERV INTEGER NOT NULL, D_INACTV_STRT INTEGER NOT NULL, D_WRKD_LAST INTEGER NOT NULL, A_BASE_RATE DECIMAL(8,02) NOT NULL, D_PAY_THRU INTEGER NOT NULL, D_SEN INTEGER NOT NULL, Q_VAC_PD DECIMAL(3,01) NOT NULL, Q_VAC_PD_PREV DECIMAL(3,01) NOT NULL, C_REHIRE_RECMN CHAR(1) NOT NULL, A_AWD DECIMAL(8,02) NOT NULL, I_CLF CHAR(6) NOT NULL, C_CLF_SUFF DECIMAL(3,00) NOT NULL, C_TYP CHAR(1) NOT NULL, D_UPD INTEGER NOT NULL, T_UPD INTEGER NOT NULL, I_LOGON CHAR(7) NOT NULL, N_CMPTRPGM CHAR(8) NOT NULL, D_HIRE INTEGER NOT NULL, D_GAIN_SEN INTEGER NOT NULL, C_EMPL_SHFT CHAR(1) NOT NULL, I_MSTR_CANDN CHAR(5) NOT NULL, C_PHYS_WORK_LOC CHAR(4) NOT NULL, I_SUPVR_GRP CHAR(3) NOT NULL, C_LVL SMALLINT NOT NULL, I_CIMS CHAR(7) NOT NULL, D_PHYS_REVW INTEGER NOT NULL, L_I_9 CHAR(1) NOT NULL, D_PROGN_CALCN INTEGER NOT NULL, I_SKLD_EMPL_RET DECIMAL(4,00) NOT NULL, I_NSKLD_EMPL_SEN DECIMAL(4,00) NOT NULL, L_PLT_ELECTN_REQD CHAR(1) NOT NULL, L_PLT_ELECTN_MADE CHAR(1) NOT NULL, I_BADGE CHAR(8) NOT NULL, D_BADGE INTEGER NOT NULL, C_CLF_PRE CHAR(1) NOT NULL, C_SEPN_RATNG_ALL CHAR(4) NOT NULL, D_120_DAY INTEGER NOT NULL, C_AUTH_CLS CHAR(3) NOT NULL, L_TAX_CR CHAR(1) NOT NULL, L_TAX_CR_FLWP CHAR(1) NOT NULL, L_RED_CRCL CHAR(1) NOT NULL, C_BOND_DENOM CHAR(2) NOT NULL, A_BOND_DED DECIMAL(7,02) NOT NULL, D_NSKLD_SEN INTEGER NOT NULL, D_PROGN_1 INTEGER NOT NULL, D_PROGN_2 INTEGER NOT NULL, D_PROGN_3 INTEGER NOT NULL, D_SKLD_SEN INTEGER NOT NULL, D_ENTRY_UPGRR INTEGER NOT NULL, D_ENTRY_INDTR INTEGER NOT NULL, D_PARNT_SEN INTEGER NOT NULL, C_PARNT_CORPLOC CHAR(4) NOT NULL, C_SHFT_PREFD CHAR(1) NOT NULL, D_SHFT_APPLY INTEGER NOT NULL, D_SHFT_ELIG INTEGER NOT NULL, C_EMPL_TYP CHAR(1) NOT NULL, I_UNION CHAR(5) NOT NULL, I_UNION_LCL CHAR(5) NOT NULL, C_PERS_SUFF CHAR(4) NOT NULL, C_PERS CHAR(2) NOT NULL, D_TRAN_EFFCTV INTEGER NOT NULL, Q_HRS_IN_PGM DECIMAL(4,00) NOT NULL, X_TAX_CR CHAR(30) NOT NULL, C_CLF_ADDON CHAR(1) NOT NULL, A_CLF_ADDON DECIMAL(5,02) NOT NULL, C_CLF_RATE_TYP CHAR(2) NOT NULL, L_ATTDNC_CHRNC CHAR(1) NOT NULL, L_EMPL_SA_CHRNC CHAR(1) NOT NULL, L_EMPL_AMC_PREV CHAR(1) NOT NULL, C_EMPL_SEPN CHAR(2) NOT NULL, D_EMPL_SEPN INTEGER NOT NULL, L_EMPL_BADGE_STAT CHAR(1) NOT NULL, D_EMPL_I_9_EXPRN INTEGER NOT NULL, D_EMPL_I_9_CPLN INTEGER NOT NULL, D_EMPL_I_9_PURG INTEGER NOT NULL, C_EMPL_INCR_NEXT CHAR(2) NOT NULL, C_EMPL_OCCPTL_GRP CHAR(2) NOT NULL, I_UNION_LCL_UNIT CHAR(2) NOT NULL, L_EMPL_PROBTN CHAR(1) NOT NULL, C_LABR_TYP CHAR(1) NOT NULL, L_JOB_TEMPRY_SEN CHAR(1) NOT NULL, C_STRUC_SAL CHAR(2) NOT NULL, A_EMPL_AMC_RECVD DECIMAL(7,02) NOT NULL, D_PERSN_RET_ANTCP DATE PRIMARY KEY ( C_INTNL_GRP ) ); -------------------------------------------------------------------
Graham Hobbs - 28 Jun 2007 00:28 GMT Jan Thanks for the sample - is good. Usually when I start a DB2 CLP I issue a 'quit' so then I'm with a DOS prompt, thus my CMD needs the DB2<space>. You're way never crossed my mind:-( Was still wondering about the 64000 question? Manual says that. Graham PS. this worked with a comma before the PRIMARY DB2 CONNECT TO WCB3 DB2 DROP TABLE SMALL1 DB2 CREATE TABLE SMALL1 ( ABIGINT BIGINT NOT NULL, KYA1 CHAR (4) NOT NULL, KYA2 CHAR (5) NOT NULL, KYB1 CHAR (6) NOT NULL, ATIME TIME NOT NULL WITH DEFAULT, ATIMESTAMP TIMESTAMP WITH DEFAULT, PRIMARY KEY ( KYA1, KYA2 ) ) might a different DB2 version do that.
>> Until I tried a 'big' DCLGEN. >> [quoted text clipped - 143 lines] > ); >-------------------------------------------------------------------
 Signature Posted via a free Usenet account from http://www.teranews.com
|
|
|