Generate DB2 table definition COPYBOOK
2016-11-11 22:55
246 查看
When accessing DB2 table in a COBOL program, usually we need know the table definition COPYBOOK.
Utility DCLGEN could be used to generate this COPYBOOK file.
For example: when table was defined as:
CREATE TABLE TESTTAB(COLA INT, COLB CHAR(10))
JCL JOB
//GENTBCPY JOB (DSNTEP4),'GENTBCPY',REGION=0M,CLASS=2,MSGCLASS=X,
// NOTIFY=&SYSUID
//*=============================================================
//*========GENERATE COPYBOOK FOR DB2 TABLE USING DCLGEN=========
//*=============================================================
//STEPGEN EXEC PGM=IKJEFT01,DYNAMNBR=20
//STEPLIB DD DSN=DSN910.SDSNEXIT,DISP=SHR
// DD DSN=DSN910.SDSNLOAD,DISP=SHR
// DD DSN=DSN910.RUNLIB.LOAD,DISP=SHR
// DD DSN=<DSN>.SDSNEXIT,DISP=SHR
//SYSTSIN DD *
DSN SYS(<DSN>)
DCLGEN TABLE(TESTTAB) -
LIBRARY('<UID>.<TARGET>.<PDS>.COPY(TESTTAB)') -
ACTION(REPLACE) -
APOST -
LANGUAGE(IBMCOB) -
STRUCTURE(TESTTAB-RECORD)
END
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN DD DUMMY
After job execution finished, you can find the generated COPYBOOK in PDS: <UID>.<TARGET>.<PDS>.COPY
This COPYBOOK can later be used directly in COBOL program through:
EXEC SQL INCLUDE TESTTAB END-EXEC.
The content of COPYBOOK TESTTAB may like:
000001 ******************************************************************
000002 * DCLGEN TABLE(TESTTAB) *
000003 * LIBRARY(<UID>.<TARGET>.<PDS>.COPY(TESTTAB)) *
000004 * ACTION(REPLACE) *
000005 * LANGUAGE(COBOL) *
000006 * STRUCTURE(TESTTAB-RECORD) *
000007 * APOST *
000008 * ... IS THE DCLGEN COMMAND THAT MADE THE FOLLOWING STATEMENTS *
000009 ******************************************************************
000010 EXEC SQL DECLARE TESTTAB TABLE
000011 ( COLA INTEGER,
000012 COLB CHAR(10)
000013 ) END-EXEC.
000014 ******************************************************************
000015 * COBOL DECLARATION FOR TABLE TESTTAB *
000016 ******************************************************************
000017 01 TESTTAB-RECORD.
000018 10 COLA PIC S9(9) USAGE COMP.
000019 10 COLB PIC X(10).
000020 ******************************************************************
000021 * THE NUMBER OF COLUMNS DESCRIBED BY THIS DECLARATION IS 2 *
000022 ******************************************************************
Utility DCLGEN could be used to generate this COPYBOOK file.
For example: when table was defined as:
CREATE TABLE TESTTAB(COLA INT, COLB CHAR(10))
JCL JOB
//GENTBCPY JOB (DSNTEP4),'GENTBCPY',REGION=0M,CLASS=2,MSGCLASS=X,
// NOTIFY=&SYSUID
//*=============================================================
//*========GENERATE COPYBOOK FOR DB2 TABLE USING DCLGEN=========
//*=============================================================
//STEPGEN EXEC PGM=IKJEFT01,DYNAMNBR=20
//STEPLIB DD DSN=DSN910.SDSNEXIT,DISP=SHR
// DD DSN=DSN910.SDSNLOAD,DISP=SHR
// DD DSN=DSN910.RUNLIB.LOAD,DISP=SHR
// DD DSN=<DSN>.SDSNEXIT,DISP=SHR
//SYSTSIN DD *
DSN SYS(<DSN>)
DCLGEN TABLE(TESTTAB) -
LIBRARY('<UID>.<TARGET>.<PDS>.COPY(TESTTAB)') -
ACTION(REPLACE) -
APOST -
LANGUAGE(IBMCOB) -
STRUCTURE(TESTTAB-RECORD)
END
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSIN DD DUMMY
After job execution finished, you can find the generated COPYBOOK in PDS: <UID>.<TARGET>.<PDS>.COPY
This COPYBOOK can later be used directly in COBOL program through:
EXEC SQL INCLUDE TESTTAB END-EXEC.
The content of COPYBOOK TESTTAB may like:
000001 ******************************************************************
000002 * DCLGEN TABLE(TESTTAB) *
000003 * LIBRARY(<UID>.<TARGET>.<PDS>.COPY(TESTTAB)) *
000004 * ACTION(REPLACE) *
000005 * LANGUAGE(COBOL) *
000006 * STRUCTURE(TESTTAB-RECORD) *
000007 * APOST *
000008 * ... IS THE DCLGEN COMMAND THAT MADE THE FOLLOWING STATEMENTS *
000009 ******************************************************************
000010 EXEC SQL DECLARE TESTTAB TABLE
000011 ( COLA INTEGER,
000012 COLB CHAR(10)
000013 ) END-EXEC.
000014 ******************************************************************
000015 * COBOL DECLARATION FOR TABLE TESTTAB *
000016 ******************************************************************
000017 01 TESTTAB-RECORD.
000018 10 COLA PIC S9(9) USAGE COMP.
000019 10 COLB PIC X(10).
000020 ******************************************************************
000021 * THE NUMBER OF COLUMNS DESCRIBED BY THIS DECLARATION IS 2 *
000022 ******************************************************************
相关文章推荐
- Life/Asia table struct copybook convert to java pojo automaticlly
- DB2 check table definition
- DB2 mainframe table operation DML
- ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be def
- ORA-01466: unable to read data - table definition has changed
- MySql创建表时插入自动更新时间戳报错:SQL执行错误#1293:Incorrect table definition;there can be only one TIMESTAMP ...
- Script:Generate A DDL Script For A Table
- 1075-Incorrect table definition;there can be only one auto column and it must be defined as a key
- mysql 查询copy to tmp table造成堵塞
- 1293 - Incorrect table definition; there can be only oneTIMESTAMP column with CURRENT_TIMESTAMP
- table_open和table_definition了解
- 安装mysql报错,错误提示:Incorrect definition of table mysql.proc
- ORA-01466: unable to read data - table definition has changed
- 利用SqlBulkCopy一次性把Table数据插入到数据库
- londiste3 copy table' snapshot & PostgreSQL logical replication's snapshot 不同之处
- Table definition on master and slave does not match
- DB2的create table like
- 迁移ASM文件之backup as copy tablespace
- mysql copy data from table to another
- Generate class from database table How can i generate a class from a table at a SQL Server?