Posted: Sat Oct 13, 2007 3:44 pm Post subject: How to view SVCTABLE
Does anyone know of an easy way to view the SVCTABLE? I need to see if certain SVCs are restricted or not. I DO NOT have access to any auditing tools such as CA Examine. Thanks.
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
Posted: Sun Oct 14, 2007 12:52 am Post subject:
TASID might be able to help (not sure what you mean by restricted), as might SHOWMVS on the CBT tape. If you need TASID for an unsupported version of [MVS, OS/390, z/OS], you can get it here but 5.14 has a fix in the SVC list that shows SVC 255 if it exists. There may be an operator (console) command you can use too, but I could not find it quickly. Or, if you really want to, you can write your own Assembler, Rexx, COBOL, etc routine using this info as a starting point. _________________ New members are encouraged to read the How To Ask Questions The Smart Way FAQ at http://www.catb.org/~esr/faqs/smart-questions.html.
Thanks semigeezer. By restricted, I meant APF protected. I am hoping to find an operator command as I am doing an audit with limited access and cannot request that they install new tools. Unfortunately, I do not have the programming skills to write my own routine.
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
Posted: Mon Oct 15, 2007 9:52 pm Post subject:
Assuming it hasn't changed in a few years, you could allocate this file to ddname ISRDDN and then type
Code:
TSO ISRDDN ; B SVCTABLE
to view the storage for the SVC table, but that is just raw data. The ARRAY command in ISRDDN could format it somewhat but you'd still have to interpret it per the book. Also, some SVC numbers have multiple SVCs associated with them so you'd need to chase those too. It has been a long time since I looked at that but it is theoretically possible but it would be less than ideal. On the other hand, once you issue the B SVCTABLE command, you might be able to give the locater string shown in the short message to a Rexx programmer and have him/her turn that into a small program to display the storage in a formatted fashion. Not a trivial exercise, but maybe an intermediate level. If anyone is interested in the formatting within ISRDDN, I can try it later and give the command (maybe something like ARRAY 8 but I can't test it right now). _________________ New members are encouraged to read the How To Ask Questions The Smart Way FAQ at http://www.catb.org/~esr/faqs/smart-questions.html.
Joined: 03 Jan 2003 Posts: 1014 Topics: 13 Location: Atlantis
Posted: Mon Oct 15, 2007 11:39 pm Post subject:
I got intrigued and decided to give it a quick try.... This is an example of how to do this in Rexx. Not all info is presented and I only used the primary entries -- not showing extended SVCs (ESRs), but this is a start. The report is shown in VIEW so you have to run it as a command within ISPF. Not well tested or verified.
Code:
/* Rexx - show SVC table in View. ESRs not expanded */
/* ref: http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/iea2v260/1.4.2 */
cvt=ptr(16) /* Get CVT */
scvt=ptr(cvt+200) /* Get scvt */
svctable=ptr(scvt+132) /* Get addr of SVC table */
'ALLOC F(SVCXXX) NEW DEL RECF(F B) LREC(80) SPA(3) TRA UNI(SYSDA) REU'
Do queued();Pull;End
Do a = 0 to 255
Parse Value '_-_ _-_ __--__ __--__' With apf ext pre ast
entry = stg(svctable+a*8 ,8) /* get whole entry */
flags= substr(entry,5,1) /* get svctable flags */
If bitand(entry,'000000007fffffff'x) <> '0000000000000000'x Then
Do
typebits = bitand(flags,'11100000'b)
authbit = bitand(flags,'00001000'b)
extbit = bitand(flags,'00000100'b)
nprebit = bitand(flags,'00000010'b)
assistbit = bitand(flags,'00000001'b)
If typebits='00'x Then type='1 '
If typebits='80'x Then type='2 '
If typebits='C0'x Then type='3/4'
If typebits='20'x Then type='6 '
If authbit <> '00'x Then apf='APF'
If extbit <> '00'x Then ext='ESR'
If nprebit <> '00'x Then pre='Nonpre'
If assistbit <> '00'x Then ast='Assist'
line='SVC '''right(d2x(a),2,'0')'''x ('right(a,3)'):'
line=line c2x(substr(entry,1,4)) c2x(substr(entry,5,4))
line=line ' Type='type apf ext pre ast
Queue translate(line,' ','_')
End
End
'EXECIO 'queued()' DISKW SVCXXX (FINIS'
Address ispexec 'LMINIT DATAID(SVC) DDNAME(SVCXXX)'
Address ispexec 'VIEW DATAID(&SVC)'
Address ispexec 'LMFREE DATAID(&SVC)'
'FREE F(SVCXXX)'
Exit
ptr: Return c2d(storage(d2x(Arg(1)),4)) /* Return a pointer */
stg: Return storage(d2x(Arg(1)),Arg(2)) /* Return storage */
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum