On Thursday, 09/21/2006 at 10:49 AST, Peter Rothman <[EMAIL PROTECTED]> wrote: > We have an application (no source) that uses IUCV to communicate with > TCPIP. > I want to trace the data that gets sent back and forth so I can potentially > change this to use Rexx sockets which we will be able to support. > > I opened a Q&A ETR - they pointed me to ETRACE, TRSOURCE and CPTRACE. > > I looked at these but am having difficulty figuring out how they 'fit > together' so I can get what I want. > I also used the TCPIP IUCV trace option but in this case I did not get > anything displayed to the console.
Try: NETSTAT TRACEONLY userid ENDTRACEONLY NETSTAT OBEY MORETRACE IUCV SOCKET The TRACEONLY is needed to avoid tracing all the apps. But from an application server perspective CP TRACE IUCV CMD D G0 will tell you what function call was issued. 00 - Query 0A - Accept 01 - Test Message 0B - Connect 02 - Retrieve Buffer 0C - Declare Buffer 03 - Describe 0D - Quiesce 04 - Send 0E - Resume 05 - Receive 0F - Sever 06 - Reply 10 - Set Mask 07 - Test Completion 11 - Set Control Mask 08 - Reject 12 - IPOLL 09 - Purge The base register+offset points to the IPARML. Trace trace will hit AFTER the instruction runs, so the IPARML shows the *output* of the IUCV. While I'm at it, output IPRCODEs are as follows: hex decimal 00 00 OK 01 01 Invalid path id 02 02 Path quisced - SEND not allowed 03 03 Function pending / Msglimit exceeded 04 04 Priority msg not allowed on this path 05 05 Receive buffer too short to contain msg 06 06 Fetch protection exception on SEND buffer 07 07 Addresion exception on SEND buffer 08 08 Message id found, but msg class or path id invalid 09 09 Message has been purged 0A 10 Buffer length is negative / Invalid buffer length 0B 11 Resource or gateway not found 0C 12 Partner not enabled for IUCV 0D 13 Your MAXCONN exceeded 0E 14 Partner MAXCONN exceeded 0F 15 Not authorized to connect 10 16 Invalid IUCV system service name 11 17 Invalid function code 12 18 Invalid Msglimit 13 19 Previously declared buffer is still in use 14 20 Originator severed path 15 21 Parameter list data not allowed on this path 16 22 Send/Answer buffer list invalid 17 23 Buffer list element length is negative 18 24 Total length .NE. sum of buffer element lengths 19 25 PRMMSG option invalid with ANSLIST option 1A 26 Buffer list not on doubleword boundary 1B 27 Answer list not on doubleword boundary 1C 28 No control buffer 1D 29 Not authorized for another user 1E 30 APPC/VM function specified on IUCV path 1F 31 IUCV function specified on APPC/VM path 20 32 Not valid from CONNECT state 21 33 Not valid from SEND state 22 34 Not valid from RECEIVE state 23 35 Not valid from CONFIRM state 24 36 Not valid from SEVER state 25 37 Connection established with SYNCLVL=NONE 26 38 Invalid IPSENDOP field 27 39 Invalid connection extension plist length 28 40 Invalid locally known LU name 29 41 Invalid mode name 2F 47 Invalid security subfields in FMH-5 30 48 Partner system service does not support this function 31 49 Partner does not allow SECURITY=NONE 32 50 Invalid allocation data 34 52 No APPCPASS directory statement 35 53 Invalid tpname length 36 54 Invalid tpname 38 56 WAIT=YES specified on function for this machine 39 57 Invalid PIP length 3A 58 Invalid communications server area length 3D 61 Not authorized to specify an alternate user ID 3E 62 Buffers overlap: Control, EIB, IB extension 3F 63 Invalid LUWID length 40 64 Invalid FQ LU name in LUWID 43 67 Both CONFIRM and SYNCPT specified 56 86 Control buffer needed for SYNCPT 59 89 For SYNCPT, resource not found or cannot be reached 5B 91 Paging or storage error on SEND area 5C 92 Paging or storage error on RECEIVE area or buffer 5D 93 Paging or storage error on ANSWER area 5E 94 Paging or storage error on REPLY area 60 96 SEND too large for routing via ISFC 61 97 ANSWER too large for routing via ISFC All of this information is distilled from the CP Programming Reference. The actual data in the buffers is documented in the TCP/IP Programming Reference. My IUCV apps use R10 with offset 0 to point to the IPARML, so my trace looks like CP TRACE IUCV CMD D G0 T0.40;baseA If you need to stop the trace BEFORE the IUCV, then you have to figure out the instruction ahead of the IUCV instruction and stop there. BTW, it is possible to create a data-neutral IUCV passthru "sniffer" that just relays the data and logs it. Alan Altmark z/VM Development IBM Endicott
