©
steven e.bacher@newsgroup
Das Programm kann benutzt werden, um eine beliebige Tabelle anzuzeigen.
/* REXX
Here's yet another REXX exec to print the contents of a table.
This one includes support for extension variables, without which
you won't get much useful info about ISPCMDS.
Note that you'll probably have to copy ISPCMDS into a junk member
of your table library and then run this exec against that.
- seb
signal on failure
signal on halt
signal on novalue
*/
parse value "" with ,
cdate ctime udate utime user rowcreat rowcurr rowupd tableupd ,
service retcode status1 status2 status3 library ,
keys names rownum keynum namenum position
/* "XPROC 1 TABLENAME" ; if rc -= 0 then exit rc */
parse upper arg tablename .
address ISPEXEC "CONTROL ERRORS RETURN"
address ISPEXEC "TBCLOSE" tablename
address ISPEXEC "TBOPEN" tablename
if translate(zerrsm) = "TABLE ALREADY OPEN" then nop
else if rc = 8 then do
say "Table does not exist:" tablename
exit 8
end
else if rc > 0 then signal ispferror
call ispf "TBSTATS" tablename ,
"CDATE(CDATE) CTIME(CTIME) UDATE(UDATE) UTIME(UTIME)",
"USER(USER) ROWCREAT(ROWCREAT) ROWCURR(ROWCURR)",
"ROWUPD(ROWUPD) TABLEUPD(TABLEUPD) SERVICE(SERVICE)",
"RETCODE(RETCODE) STATUS1(STATUS1) STATUS2(STATUS2)",
"STATUS3(STATUS3) LIBRARY(LIBRARY)"
say
say "Data from TBSTATS"
say
say "Creation date......." cdate
say "Creation time......." ctime
say "Date last updated..." udate
say "Time last updated..." utime
say "Last updated by....." user
say "Rows at creation...." rowcreat
say "Current rows........" rowcurr
say "Rows updated........" rowupd
say "Table updates......." tableupd
/*
say "Last ISPF service..." service
say "Last ISPF retcode..." retcode
say "Status in input library........" status1
say "Status in logical screen......." status2
say "Status of write availability..." status3
say "Alternate input library........" library
*/
call ispf "TBQUERY" tablename ,
"KEYS(KEYS) NAMES(NAMES) ROWNUM(ROWNUM) KEYNUM(KEYNUM)" ,
"NAMENUM(NAMENUM) POSITION(POSITION)"
say
say "Data from TBQUERY"
say
say "Key variables............." keys
say "Row variables............." names
say "Number of rows............" rownum
say "Number of key variables..." keynum
say "Number of row variables..." namenum
/*
say "Current row number........" position
*/
if keynum = 0 then call dumpUnkeyedTable tablename, names
else call dumpKeyedTable tablename, names, keys
halt:
call ispf "TBCLOSE" tablename
exit 0
dumpUnkeyedTable: procedure
parse arg tablename, variablenames
variablenames = translate(variablenames," ","()")
variablecount = words(variablenames)
call ispf "TBTOP" tablename
do forever
call ispf "TBSKIP" tablename
if result = 8 then leave
parse value "" with savename rowid position
call ispf "TBGET" tablename ,
"SAVENAME(SAVENAME) ROWID(ROWID) POSITION(POSITION)"
if result > 0 then leave
say
say "Table row:" rowid+0
/*
say
say "savename...." savename
say "rowid......." rowid
say "position...." position
*/
say
say "Row variables:"
say
do variableindex = 1 to variablecount
call showvar word(variablenames,variableindex)
end
extensionvariablenames = translate(savename," ","()")
extensionvariablecount = words(extensionvariablenames)
if extensionvariablecount > 0 then do
say
say "Extension variables:"
say
do extensionindex = 1 to extensionvariablecount
call showvar word(extensionvariablenames,extensionindex)
end
end
end
return 0
dumpKeyedTable: procedure
parse arg tablename, variablenames, keyvariablenames
variablenames = translate(variablenames," ","()")
variablecount = words(variablenames)
keyvariablenames = translate(keyvariablenames," ","()")
keyvariablecount = words(keyvariablenames)
call ispf "TBTOP" tablename
do forever
parse value "" with savename rowid position
call ispf "TBSKIP" tablename ,
"SAVENAME(SAVENAME) ROWID(ROWID) POSITION(POSITION)"
if result = 8 then leave
say
say "Table row:" rowid+0
/*
say
say "savename...." savename
say "rowid......." rowid
say "position...." position
*/
say
say "Key variables:"
say
do keyvariableindex = 1 to keyvariablecount
call showvar word(keyvariablenames,keyvariableindex)
end
say
say "Row variables:"
say
do variableindex = 1 to variablecount
call showvar word(variablenames,variableindex)
end
extensionvariablenames = translate(savename," ","()")
extensionvariablecount = words(extensionvariablenames)
if extensionvariablecount > 0 then do
say
say "Extension variables:"
say
do extensionindex = 1 to extensionvariablecount
call showvar word(extensionvariablenames,extensionindex)
end
end
end
return 0
showvar: parse arg variable
say left(variable,16,".")"--"value(variable)
return 0
ispf: parse arg icmd
zerrsm =
zerrlm =
zerrhm =
zerralrm =
address ispexec icmd
irc = rc
if irc >= 9 then do
say word(icmd,1)": rc = " rc
if zerrsm <> "" then signal ispferror
end
return irc
ispferror:
ispfrc = rc
address ISPEXEC "DISPLAY PANEL(ISPTERM)"
exit ispfrc
zurück zu REXX mit Dialog Manager