Return to Mainframe Utilities Page
Module
PROC 1 TABLE
ISPEXEC CONTROL ERRORS RETURN
ISPEXEC VGET (DBGSWTCH) PROFILE
IF &DBGSWTCH = &STR(ON) THEN +
CONTROL MSG LIST CONLIST SYMLIST NOFLUSH
ELSE CONTROL NOMSG NOLIST NOFLUSH NOPROMPT
IF &HELP = HELP THEN GOTO HELPSEC
/**********************************************************************
/* UTILITY : TBINFO *
/* AUTHOR : DAVID LEIGH *
/* FUNCTION : LOAD INFORMATION ABOUT A TABLE INTO A FILE TO BE EDITED *
/* OR READ PROGRAMATICALLY. *
/**********************************************************************
ISPEXEC TBSTATS &TABLE CDATE(CDATNAME) CTIME(CTIMNAME) +
UDATE(UDATNAME) UTIME(UTIMNAME) +
USER(USERNAME) ROWCREAT(RCRTNAME) +
ROWCURR(RCURNAME) ROWUPD(RUPDNAME) +
TABLEUPD(TUPDNAME) SERVICE(SERVNAME) +
RETCODE(RETCNAME) STATUS1(STA1NAME) +
STATUS2(STA2NAME) STATUS3(STA3NAME)
IF &STR(&CDATNAME) = THEN +
DO
ISPEXEC TBSTATS &TABLE CDATE(CDATNAME) CTIME(CTIMNAME) +
UDATE(UDATNAME) UTIME(UTIMNAME) +
USER(USERNAME) ROWCREAT(RCRTNAME) +
ROWCURR(RCURNAME) ROWUPD(RUPDNAME) +
TABLEUPD(TUPDNAME) SERVICE(SERVNAME) +
RETCODE(RETCNAME) STATUS1(STA1NAME) +
STATUS2(STA2NAME) STATUS3(STA3NAME) +
LIBRARY(ISPPROF)
IF &STR(&CDATNAME) = THEN +
DO
SET ZEDLMSG = &STR(*** TABLE "&TABLE" NOT FOUND ***)
ISPEXEC SETMSG MSG(UTLZ001)
EXIT CODE(8)
END
ELSE +
DO
ISPEXEC TBOPEN &TABLE NOWRITE SHARE LIBRARY(ISPPROF)
SET OPENCC = &LASTCC
ISPEXEC SELECT CMD(%FINDMOD &TABLE ISPPROF BATCH)
IF &LASTCC = 0 THEN +
DO
ISPEXEC VGET DSN SHARED
SET XUTFILE = &STR(PHYSICAL TABLE LOCATION: +
&DSN)
END
END
END
ELSE +
DO
ISPEXEC TBOPEN &TABLE NOWRITE SHARE
SET OPENCC = &LASTCC
ISPEXEC SELECT CMD(%FINDMOD &TABLE ISPTLIB BATCH)
IF &LASTCC = 0 THEN +
DO
ISPEXEC VGET DSN SHARED
SET XUTFILE = &STR(PHYSICAL TABLE LOCATION: &DSN)
END
END
SET TEMPFILE = &STR(&SYSUID..TEMP.TBINFO.&TABLE)
FREE DDNAME(OUTFILE)
DELETE '&TEMPFILE'
ALLOC DD(OUTFILE) DSN('&TEMPFILE') +
NEW CATALOG +
UNIT(SYSDA) VOLUME(WRK$$$) +
SPACE(1,1) TRACKS RELEASE +
RECFM(F B) LRECL(80) BLKSIZE(23440) DSORG(PS)
OPENFILE OUTFILE OUTPUT
ISPEXEC TBQUERY &TABLE KEYS(TBKEYS) +
NAMES(TBNAMES) +
ROWNUM(TBROWNUM) +
KEYNUM(TBKEYNUM) +
NAMENUM(TBNAMNUM) +
POSITION(TBCRPNAM)
IF &STR(&TBKEYS) > THEN +
DO
SET A = &LENGTH(&STR(&TBKEYS))
SET A = &A - 1
SET SYSDVAL = &SUBSTR(2:&A,&STR(&TBKEYS))
END
IF &STR(&TBNAMES) > THEN +
DO
SET A = &LENGTH(&STR(&TBNAMES))
SET A = &A - 1
IF &STR(&SYSDVAL) > THEN +
SET SYSDVAL = &STR(&SYSDVAL &SUBSTR(2:&A,&STR(&TBNAMES)))
ELSE +
SET SYSDVAL = &SUBSTR(2:&A,&STR(&TBNAMES))
END
READDVAL F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 +
F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 +
F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 +
F31 F32 F33 F34 F35 F36 F37 F38 F39 F40 +
F41 F42 F43 F44 F45 F46 F47 F48 F49 F50 +
F51 F52 F53 F54 F55 F56 F57 F58 F59 F60 +
F61 F62 F63 F64 F65 F66 F67 F68 F69 F70 +
F71 F72 F73 F74 F75 F76 F77 F78 F79 F80 +
F81 F82 F83 F84 F85 F86 F87 F88 F89 F90 +
F91 F92 F93 F94 F95 F96 F97 F98 F99 F100
SET OUTFILE = &STR(&XUTFILE)
PUTFILE OUTFILE
SET OUTFILE = &STR(NUMBER OF KEY FIELDS: &TBKEYNUM)
PUTFILE OUTFILE
SET I = 1
DO &I = &I TO &TBKEYNUM
SET X = &&F&I
SET OUTFILE = &STR(FIELD NAME &I (KEY): )&X
PUTFILE OUTFILE
END
SET OUTFILE = &STR(NUMBER OF NAME FIELDS: &TBNAMNUM)
PUTFILE OUTFILE
DO &I = &I TO &TBNAMNUM
SET X = &&F&I
SET OUTFILE = &STR(FIELD NAME &I.: )&X
PUTFILE OUTFILE
END
SET OUTFILE = &STR(TOTAL NUMBER OF FIELDS: &EVAL(&TBNAMNUM + &TBKEYNUM))
PUTFILE OUTFILE
SET OUTFILE = &STR(ROW CURRENTLY BEING POINTED TO: &TBCRPNAM)
PUTFILE OUTFILE
SET OUTFILE = &STR(CREATION DATE: &CDATNAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(CREATION TIME: &CTIMNAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(LAST UPDATE DATE: &UDATNAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(LAST UPDATE TIME: &UTIMNAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(LAST UPDATE USER: &USERNAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(INITIAL ROW COUNT: &RCRTNAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(CURRENT ROW COUNT: &RCURNAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(NUMBER OF UPDATED ROWS: &RUPDNAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(NUMBER OF TIMES TABLE HAS BEEN UPDATED: &TUPDNAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(LAST TABLE SERVICES COMMAND: &SERVNAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(LAST TABLE SERVICES RETURN CODE: &RETCNAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(TABLE STATUS IN INPUT LIBRARY: &STA1NAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(TABLE STATUS IN THIS LOGICAL SCREEN: &STA2NAME)
PUTFILE OUTFILE
SET OUTFILE = &STR(TABLE STATUS FOR WRITE MODE USE: &STA3NAME)
PUTFILE OUTFILE
IF &OPENCC = 0 THEN ISPEXEC TBEND &TABLE
CLOSFILE OUTFILE
FREE DD(OUTFILE)
ISPEXEC EDIT DATASET('&TEMPFILE')
EXIT
HELPSEC: + 02480000
ISPEXEC SELECT PGM(ISPTUTOR) PARM(HELPSHEL) 02490000
SET ZEDLMSG = &STR(*** HELP DISPLAYED FOR TBINFO UTILITY + 02490000
*** NO PROCESSING PERFORMED ***) 02490000
ISPEXEC SETMSG MSG(UTLZ000) 02490000
EXIT
Documentation
The TBINFO utility uses standard ISPF table service calls and the WHEREIS
utility to gather information about an ISPF table. The information is
organized and placed into a file. In interactive execution, the user is then
taken into an edit session on the results file.
The information stored is all the information that can be gathered by the
TBQUERY and TBSTATS ISPF service calls. Additionally, WHEREIS finds what
library the table resides in within the ISPTLIB concatenation.

0 Comments