I have a couple queries I run with DBSQLPR that return .csv files of column and key information.
//*
//DBSQLPR1 EXEC PGM=DBSQLPR
// INCLUDE MEMBER=INCMUFT1
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//STDOUT DD DSN=ISTST.COMMADEL.TABLE,
// DISP=(,CATLG,DELETE),
// UNIT=(SYSDA,3),SPACE=(TRK,(150,50),RLSE)
//SYSOUT DD SYSOUT=*
//OPTIONS DD *
AUTHID=SYSUSR
NOPAGEHDR
NOTYPE
NOECHO
SQUISH
DATASEPARATOR=,
PRTFORMAT=WIDE
PRTWIDTH=279
//SYSIN DD *
SELECT FLD.SQLNAME AS COLUMN_NAME,
FLD.TYPE AS COLUMN_TYPE,
FLD.SIGN,
FLD.LENGTH AS COLUMN_LENGTH,
FLD.DECIMALS COLUMN_DECIMALS,
TBL.TABLE_NAME,
TBL.TABLE_SQLNAME,
SQL_AUTHID AS SCHEMA,
DB.OCCURRENCE AS DATABASE_NAME,
DB.DBID,
DB.DIR_NAME,
FLD.SEQNO AS COLUMN_SEQ_NUMBER,
FLD.DISP_IN_TABLE
FROM SYSADM.DIR_TABLE TBL
INNER JOIN SYSADM.DIR_DATABASE DB
ON TBL.DBID = DB.DBID
AND TBL.STATUS = DB.STATUS
AND TBL.DBID = INTEGER(001)
AND TBL.STATUS = 'P'
AND TBL.TABLE_NAME = 'POL'
INNER JOIN SYSADM.FIELD FLD
ON FLD.AGR_SQLNAME = TBL.TABLE_SQLNAME
AND FLD.STATUS = 'P'
AND FLD.ELM_NAME = ' '
AND FLD.SEQNO <> 0
AND FLD.STATUS = TBL.STATUS
AND FLD.STATUS = DB.STATUS
WHERE TBL.DBID = INTEGER(001)
AND TBL.STATUS = 'P'
ORDER BY FLD.SEQNO
;
/*
//*
//DBSQLPR2 EXEC PGM=DBSQLPR
// INCLUDE MEMBER=INCMUFT1
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//STDOUT DD DSN=ISTST.COMMADEL.KEY,
// DISP=(,CATLG,DELETE),
// UNIT=(SYSDA,3),SPACE=(TRK,(150,50),RLSE)
//SYSOUT DD SYSOUT=*
//OPTIONS DD *
AUTHID=SYSUSR
NOPAGEHDR
NOTYPE
NOECHO
SQUISH
DATASEPARATOR=,
PRTFORMAT=WIDE
PRTWIDTH=279
//SYSIN DD *
SELECT FLD.SQLNAME AS COLUMN_NAME,
FLD.TYPE AS COLUMN_TYPE,
FLD.SIGN,
FLD.LENGTH AS COLUMN_LENGTH,
FLD.DECIMALS COLUMN_DECIMALS,
TBL.TABLE_NAME,
TBL.TABLE_SQLNAME,
SQL_AUTHID AS SCHEMA,
DB.OCCURRENCE AS DATABASE_NAME,
DB.DBID,
DB.DIR_NAME,
KEY.KEY_NAME,
KEY.KEY_FIELD_SEQ
FROM SYSADM.DIR_TABLE TBL
INNER JOIN SYSADM.DIR_DATABASE DB
ON TBL.DBID = DB.DBID
AND TBL.STATUS = DB.STATUS
AND TBL.DBID = INTEGER(001)
AND TBL.STATUS = 'P'
AND TBL.TABLE_NAME = 'POL'
INNER JOIN SYSADM.FIELD FLD
ON FLD.AGR_SQLNAME = TBL.TABLE_SQLNAME
AND FLD.STATUS = 'P'
AND FLD.ELM_NAME = ' '
AND FLD.SEQNO <> 0
AND FLD.STATUS = TBL.STATUS
AND FLD.STATUS = DB.STATUS
INNER JOIN SYSADM.DIR_KEY_FIELD KEY
ON KEY.TABLE_NAME = TBL.TABLE_NAME
AND KEY.DBID = TBL.DBID
AND KEY.OCCURRENCE = FLD.ENTITY_NAME
AND KEY.STATUS = 'P'
WHERE TBL.DBID = INTEGER(001)
AND TBL.STATUS = 'P'
ORDER BY DB.DBID, TBL.TABLE_NAME, KEY.KEY_NAME, KEY.KEY_FIELD_SEQ
;
/*
//*
These are the resulting files:
COLUMN_NAME,COLUMN_TYPE,SIGN,COLUMN_LENGTH,COLUMN_DECIMALS,TABLE_NAME,TABLE_SQLNAME,SCHEMA,DATABASE_NAME,DBID,DIR_NAME,COLUMN_SEQ_NUMBER,DISP_IN_TABLE
PO,N,N,5,0,POL,DEMO_DEM_POL,SYSUSR,HUMAN-RESOURCE,1,TESTCXX,1,0
LI,N,N,3,0,POL,DEMO_DEM_POL,SYSUSR,HUMAN-RESOURCE,1,TESTCXX,2,5
PN,C,N,3,0,POL,DEMO_DEM_POL,SYSUSR,HUMAN-RESOURCE,1,TESTCXX,3,8
QTY,N,N,3,0,POL,DEMO_DEM_POL,SYSUSR,HUMAN-RESOURCE,1,TESTCXX,4,11
UCOST,N,N,5,2,POL,DEMO_DEM_POL,SYSUSR,HUMAN-RESOURCE,1,TESTCXX,5,14
COLUMN_NAME,COLUMN_TYPE,SIGN,COLUMN_LENGTH,COLUMN_DECIMALS,TABLE_NAME,TABLE_SQLNAME,SCHEMA,DATABASE_NAME,DBID,DIR_NAME,COLUMN_SEQ_NUMBER,DISP_IN_TABLE
PO,N,N,5,0,POL,DEMO_DEM_POL,SYSUSR,HUMAN-RESOURCE,1,TESTCXX,1,0
LI,N,N,3,0,POL,DEMO_DEM_POL,SYSUSR,HUMAN-RESOURCE,1,TESTCXX,2,5
PN,C,N,3,0,POL,DEMO_DEM_POL,SYSUSR,HUMAN-RESOURCE,1,TESTCXX,3,8
QTY,N,N,3,0,POL,DEMO_DEM_POL,SYSUSR,HUMAN-RESOURCE,1,TESTCXX,4,11
UCOST,N,N,5,2,POL,DEMO_DEM_POL,SYSUSR,HUMAN-RESOURCE,1,TESTCXX,5,14
Original Message:
Sent: 04-27-2020 09:33 AM
From: David Butler
Subject: Source table/field metadata from datadictionary for CDC purposes
We have been running CDC for a number of years and looking to develop our solution further.
One of the requests from the project team is that they wish to obtain the meta data for our table and fields from the datadictionary. We currently provide the table layout by printing out the dataview structures to a dataset for the developers to browse.
However they want something more more parseable (e.g. no pagination headers, field delimiters) most ideally JSON if possible. Can anyone make any suggestions as to what they use?
------------------------------
Snr. Mainframe Database Administrator
AXA Ireland
------------------------------