Smart questions
Smart answers
Smart people
INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Member Login




Remember Me
Forgot Password?
Join Us!

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips now!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

Join Tek-Tips
*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Donate Today!

Do you enjoy these
technical forums?
Donate Today! Click Here

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.
Jobs from Indeed

Link To This Forum!

Partner Button
Add Stickiness To Your Site By Linking To This Professionally Managed Technical Forum.
Just copy and paste the
code below into your site.

jerold (Programmer)
11 Jan 02 3:18
1. Does anyone knows wbesites that discuss
return codes when accessing/reading DATACOM-DB?

2. What does RC=16 mean after issuing
   a REDKX request command?
ootybalu (Programmer)
17 May 02 1:55
Hi Jerold,
 Me too am facing problems like you. When I searched thro web I got a link
http://uconnmvs.uconn.edu/cgi-bin/bookmgr/bookmgr.cmd/BOOKS/C90C1OM/16.0?SHELF=CAC90C1O

 But Iam not able to acess this link.. check out if you are able to acess this link..and let me know.. My id is ootybaly@yahoo.com

Thanks
Balu here
DaveCouch99 (Programmer)
19 Nov 03 5:52
try http://www.datacomuserforum.co.uk/DatacomRC.htm

But rc=16 is not a datacom return code.  
rc=16 is an MVS fatal error
bdiaz (TechnicalUser)
28 Nov 03 1:45
Datacom RC 16 means exclusive control interlock btwen two transactions.

You can get Datacom manuals from CA website, but you need a client number (and password).
ricka49 (MIS)
3 Feb 04 22:39
here is some info on rc 16

If two applications attempt to read the same rows for update in the following sequence...

Task-1 reads row-1 for update successfully.

Task-2 reads row-2 for update successfully (this row will usually be in a different table).

Task-1 then tries to read row-2 for update, but can't because task-2 has it locked.

Task-2 tries to read row-1 for update, but can't because task-1 has it locked.

 ... then Datacom detects this Deadly Embrace condition and cancels one of the tasks with RC 16(12). So if we see one of these RC 16's, how do we find out which applications are causing the conflict?

 Datacom RC 16 automatically causes a dump to be written to the PXX area. This can be printed using DBUTLTY REPORT AREA=PXX,DUMPS=FULL. Here's how to interpret the dump for a RC 16:

 1. Finding the right dump

The PXX report may contain more than one dump. Search for a heading which looks like this...  

 

DATE:    5/04/99     ***************************************************************************************   PAGE:  3

                              *                                                    CA-DATECOM/DB        GENERAL UTILITY                                                     *

TIME:    9.01.25       *                                                                                                                                                                         *

                       *             (C) 1990, 1996 COMPUTER ASSOCIATES INTERNATIONAL, INC                               RELEASE 9.0.0.    *

                             ***************************************************************************************   DMP  1  1    

 

DATA BASE SPECIAL MVS MASTER LIST                                                                                                                            5/04/99       6.37.54

                                                                                                                         

                   REASON--ERROR 16(012)    JOB-47004-USTMP295  TASK-039          

                                  

This tells us that batch job USTMP295 received a RC 16(12) and the Datacom internal task-id was 39.

2. Finding the task which failed with RC 16.

Now search for the internal task-id found above, in our case "RWTSA-39"...

06C7E800 D9E6E3E2 C160F3F9 0915CA80 06C4A010  40000000 800102DC 00000000 00000000   *RWTSA-39.....D..   ...............*

06C7E820 00-SAME-                                                                                                       

06C7E840 00000000 00000000 40000000 00270027  00020004 06C7E800 000CE73C 06C7F47D   *........ .......  .....GY...X..G4.*

06C7E860 06C7F400 00DF7EDC 00000001 0000801E  50804200 007F0001 0002D0F0 00000000   *.G4.............  &..........0....*

06C7E880 0002D0F0 000738C0 00000000 00000DB4  00000002 0000019A 00060900 000E2F64   *...0............  ................*

06C7E8A0 00000000 00000000 00000000 00000000  08FAED84 06C7F400 06C7EE68 00000000   *................  .....G4..G......*

06C7E8C0 0A68B9C0 06B89800 00000000 00000000  0A6EE000 0915CFB4 0A68B8E0 00000000   *................  ................*

06C7E8E0 0A68B950 003180FB 0A6EE000 06B310E0  06B310E0 FFFFFF00 06B30000 0031ABFC   *...&............  ................*

06C7E900 E2C5D3C6 D9C6F0F1 40404040 40F1F60C  007F0001 0002D0F0 00FF000B D7C3C9C3   *SELFRF01     16.  .......0....PCIC*

06C7E920 E2F2F040 0046013D 00000000 E7D50000  D5000001 00000000 00000000 00000008   *S20 ........XN..  N...............*

06C7E940 00000000 00000000 011E0000 00DF7EDC  0010F06B 007FC6F0 F100D7D9 C4000000   *................  ..0...F01.PRD...*

06C7E960 F9F9F0F5 F0F4F0F6 F3F70000 00000000  00000000 00000000 00000000 00000000   *9905040637......  ................*

06C7E980 00-SAME-                                                                                                        

06C7EA00 00010000 0000000E 00000015 0A68BAA0  095B14AF 0A6EE000 00000000 88E575C4   *................  .$...........V.D*

06C7EA20 09315022 09315000 00000000 00000000  00000000 097790D4 00000000 00000079   *..&...&.........  .......M........*

06C7EA40 00000222 00220046 013D001E 00012299  10001E01 00000000 40404000 00000004   *................  ........   .....*

06C7EA60 140000F0 017D011E 00000000 000002C0  00000000 00000000 00000002 00000004   *...0............  ................*

06C7EA80 0000001A 00613A00 00613A20 0041007D  C000C300 00000110 007F0005 00000000   *...../.../......  ..C.............*

06C7EAA0 00000000 00058B00 E4E2E3D4 D7F2F9F5  D0084800 170A0003 003C0097 00151000   *........USTMP295  ................*

06C7EAC0 095B14AF 017D011F 00000000 00000000  04DB0028 00000000 093BA00A 00000000   *.$..............  ................*

06C7EAE0 00000000 00000000 00000000 00000000  00001000 7FFFFFFF 0000002D 00000000   *................  ................*

06C7EB00 00000000 00000000 00000000 0000613A  00000000 00000000 00000000 00000000   *............../.  ................*

06C7EB20 00000000 40000000 00000000 00000000  00000000 00000000 00000000 00000000   *.... ...........  ................*

06C7EB40 40404040 40404040 40404040 40404040  40400000 00000000 017D011F 88E7D0A0   *                    ...........X..*

06C7EB60 00-SAME-                                                                                                       

06C7EBE0 00000000 00000000 00000000 00000000  00000000 00000000 00010000 00080000   *................  ................*

06C7EC00 02D0F0A4 007F0001 0002D0F0 00000000  00000000 00000000 00000000 0915DC00   *..0........0....  ................*

06C7EC20 00000000 00000000 00000000 06C38C28  06C7E800 0915D680 07000000 00010358   *.............C..  .GY...O.........*

06C7EC40 0005D27C 00000000 00000000 00000000  00000000 00000000 00000000 00000000   *..K.............  ................*

06C7EC60 00-SAME-                                                                                                        

06C7ECC0 00000000 00000000 00000000 00000000  00000000 00000000 E4E2E3D4 C2C3C840   *................  ........USTMBCH *

06C7ECE0 5C404040 40404040 40404040 40404040  D3D6C3C1 D3404040 00000000 00000000   **                 LOCAL   ........*

06C7ED00 00-SAME-                                                                                                       

06C7ED20 00000000 00000000 00000000 00000000  F2000000 00000000 00000000 00000000   *................  2...............*

06C7ED40 00000000 0020206F 00000000 00000000  00000000 0915E680 0915D200 00000000   *................  ......W...K.....*

06C7ED60 00-SAME-                                                                                                        

06C7ED80 80008000 000EC1F0 F1F0F9F0 40400000  0915CA80 00000000 0915D680 00000000   *......A01090  ..  ..........O.....*

06C7EDA0 00000002 00000001 00000000 40404040  40404040 40404040 40404040 40400000   *............                    ..*

06C7EDC0 00000000 00000000 00000000 00000000  0000000B 00000000 00000000 0AA9F000   *................  ..............0.*

06C7EDE0 8E071000 01000000 00000000 0748C6F0  F1D2F0F0 F0F7007F 0000000C F92C0001   *..............F0  1K0007......9...*

06C7EE00 42B00000 80604000 0000D7D9 C44040E6  E2D44BE6 E2D4D7F0 F8F0404D F0F7F45D   *.....- ...PRD  W  SM.WSMP080 .074.*

06C7EE20 40F0F6F9 F5F0F031 326F0001 88E164D2  00000000 00000000 00000000 08FB2000   * 069500........K  ................*

This tells us that the command was a SELFR (that is, an Ideal or MetaCOBOL+ "FOR" construct) against table F01 in database x'007F' (found at offset x'110'). Converting x'007F' to decimal we have DBID=127.

Add offset x'60A' to the start address of the RWTSA. In this case x'6C7E800' + x'60A' = x'6C7EE0A' and go to that address. For an Ideal or MetaCOBOL+ program, this tells you the 3-character userid who signed on (In this case, PRD is user PRD000) followed by the Ideal system/program/version/statement (In this case, System=WSM Program=WSMP080 Version=074 and statement=069500). For a non-Ideal/MetaCOBOL+ program (where the UIB information at offset x'60A' may not be useful), look at offset x'338' which will show the program name for this CICS task (for batch this offset is always blank). For a CICS transaction offset x'4D8' shows the userid who received the return code 16, offset x'5FA' shows the CICS transaction-id, offset x'5FE' shows the terminal-id, and offset x'602' shows the 3-character CICS opid.

3. Finding the conflicting task.

It also tells us that the conflicting application was using task x'000B' (found at offset x'11A'), and the jobname was PCICS20 (found at offset x'11C'). So in this case it was an online CICS application. Converting the task-id x'000B' to decimal we have internal task-id 11. So search for "RWTSA-11".

(Note that the RWTSA's are always listed in ascending sequence in the dump, so in this case we will need to search backwards for RWTSA-11 from RWTSA-39. Searching forwards would possibly find RWTSA-11 in the next dump in the PXX).

The resulting display is as follows...

06B89800 D9E6E3E2 C160F1F1 09118680 06B89810  40000000 88E2946C 00000000 00000000   *RWTSA-11........   ....S..........*

06B89820 00-SAME-                                                                                                        

06B89840 00000000 00000000 80000000 000B000B  00800002 06B89800 0042E870 06B8A454   *................  ..........Y.....*

06B89860 06B8A400 00DF7E9B 00000019 0000001F  50804200 007F0002 0000002D 00000000   *................  &...............*

06B89880 0000002D 00037EC0 00000000 00000007  00000000 00000006 000738C0 00413260   *................  ...............-*

06B898A0 00000000 00000000 00000000 00000000  08FAD7DC 06B8A400 06B89E64 00000000   *................  ..P.............*

06B898C0 0A68BAA0 00000000 00000000 00000000  0AB0B048 09118BB4 0A68B8E0 00000000   *................  ................*

06B898E0 0A68BA30 003152B2 0AB0B048 06B30D60  06B30D60 FFFFFF00 06B30000 00317D59   *...............-  ...-............*

06B89900 E2C5D3C6 D9C6F0F2 40404040 40404000  007F0002 0000002D 00FF0000 000E0000   *SELFRF02       .  ................*

06B89920 003D038D 03960138 00000001 E7D50000  D5000001 00000026 00000000 00000002   *............XN..  N...............*

06B89940 00000000 00000000 01080000 E7E7E7E7  F0F8F040 00020000 00000000 00000000   *............XXXX  080 ............*

06B89960 00-SAME-                                                                                                       

06B89A00 00000000 0000000A 00000FC9 000738C0  0947400E 0AB0B054 00000000 00000029   *...........I....  .. .............*

06B89A20 0978883E 06B8A400 00000000 00000000  00000000 09779154 00000000 0000000E   *................  ................*

06B89A40 0000003D 038D0396 01380008 000167AC  10000801 00000000 40404000 00000002   *................  ........   .....*

06B89A60 280000F0 017D0887 00000000 00000240  00000000 00000000 00000000 00000003   *...0...........   ................*

06B89A80 00000003 00637200 00637260 00110054  C000C300 00000210 007F0005 00000000   *...........-....  ..C.............*

06B89AA0 00011FE9 00000000 D7C3C9C3 E2F2F040  D0084800 170A0003 000C0035 00351000   *...Z....PCICS20   ................*

06B89AC0 09474002 017D0887 00000000 00000000  04DB0012 00000000 093CE00A 00000000   *.. .............  ................*

06B89AE0 00000000 00000000 00000000 00000000  00001000 7FFFFFFF 00000000 00000000   *................  ................*

06B89B00 00000000 00000000 00000000 00006372  00000000 00000000 00000000 00000000   *................  ................*

06B89B20 00000000 40000000 00000000 00000000  00000000 00000000 E5D7C5C8 D1C5F3F3   *.... ...........  ........VPEHJE33*

06B89B40 40404040 40404040 40404040 40404040  40400000 00000000 017D0887 88E7D040   *                    ...........X. *

06B89B60 00-SAME-                                                                                                       

06B89BE0 00000000 00000000 00000000 00000000  00000000 00000000 00020000 00020000   *................  ................*

06B89C00 00002DA4 007F0002 0000002D 00000000  00000000 00000000 00000000 09119800   *................  ................*

06B89C20 00000000 00000000 00000000 00000000  06B89800 00000000 0A000100 0000FC40   *................  ............... *

06B89C40 0002A77C 00000000 00000000 00000000  00000000 00000000 00000000 00000000   *................  ................*

06B89C60 00-SAME-                                                                                                       

06B89CC0 00000000 00000000 00000000 00000000  00000000 00000000 C4C9E2F5 F5F24040   *................  ........DIS552  *

06B89CE0 5C404040 40404040 40404040 40404040  D3D6C3C1 D3404040 00000000 00000000   **                 LOCAL   ........*

06B89D00 00-SAME-                                                                                                        

06B89D20 00000000 00000000 00000000 0009616C  0A6E40C4 00000000 00000000 00000000   *............../.  .. D............*

06B89D40 00000000 000D6300 00000000 00000000  00000000 0911A280 09118E00 00000000   *................  ................*

06B89D60 00000258 00000000 00000000 0000000C  00000000 00000654 00000000 00000000   *................  ................*

06B89D80 80008000 000EC1F0 F5F2F5F1 40400000  09118680 00000000 09119280 00000000   *......A05251  ..  ................*

06B89DA0 00000001 00000000 00000000 40404040  40404040 40404040 40404040 40400000   *............                    ..*

06B89DC0 00000000 00000000 00000000 00000000  00400027 00000000 00000000 00000000   *................  . ..............*

06B89DE0 1F071000 02000000 00000067 0548C6F0  F2000000 0000007F 0226E6D7 D3D7D7C2   *..............F0  2.........WPLPPB*

06B89E00 F0F4D3F0 F257617C 9000D3F0 F24040E6  E2D44BE6 E2D4D7D7 D3D7404D F0F1F85D   *04L02./...L02  W  SM.WSMPPLP .018.*

06B89E20 40F0F7F1 F0F0F031 704F0001 88E164D2  00000000 000AF8A8 00000000 08FB2000   * 071000........K  ......8.........*

06B89E40 00000000 88E1722A 88E17252 0AB0B048  00670015 017D011F 09118800 00000000   *................  ................*

06B89E60 00000000 808BA27B 00000000 00000000  88E08670 00000000 0974F4AF 00000000   *................  ..........4.....*

06B89E80 00000000 10000000 7F000200 00002D00  D7D4E4C6 F0F04040 00000000 00000000   *................  PMUF00  ........*

06B89EA0 00000000 00000000 00000000 00000004  B2312066 26F637AD 00000000 023252FC   *................  .....6..........*

06B89EC0 B2312066 2700E73D 00000000 000053F0  00000000 0A68A534 0A68A5FC 0AAB4078   *......X........0  .............. .*

06B89EE0 00000E2A 06B89E64 06C7E8C4 00010005  00000000 00000035 00000000 00000000   *.........GYD....  ................*

06B89F00 00000000 80000000 0000C900 E800E8E8  00000000 00000000 0000E800 00000000   *..........I.Y.YY  ..........Y.....*

06B89F20 000A0000 00000000 0981D000 08E02E88  00000000 00000000 C4C2E2D2 C5E8007F   *................  ........DBSKEY..*

06B89F40 00010002 E6E2D4D7 F0F8F040 F0F7F4F0  F0F0F0F0 7C000000 00000000 00000000   *....WSMP080 0740  0000............*

  

Add offset x'60A' to the start address of the RWTSA. In this case x'6B89800' + x'60A' = x'6B89E0A' and go to that address. For an Ideal or MetaCOBOL+ program, this tells you the 3-character userid who signed on (In this case, L02 is user DIS552) followed by the Ideal system/program/version/statement (In this case, System=WSM Program=WSMPPLP Version=018 and statement=071000). For a non-Ideal/MetaCOBOL+ program (where the UIB information at offset x'60A' may not be useful), look at offset x'338' which will show the program name for this CICS task (for batch this offset is always blank). For a CICS transaction offset x'4D8' shows the conflicting userid who caused the return code 16, offset x'5FA' shows the CICS transaction-id, offset x'5FE' shows the terminal-id, and offset x'602' shows the 3-character CICS opid.

 4. Review program source to find conflict.

 Now that we have the two program names we can review the source to find the conflict.

 In this case WSMPPLP wrote a new PL-RQST row, and then tried to read a row in BKGD-PGM for update, but couldn't because WSMP080 already had that row. WSMP080 read the same row from BKGD-PGM for update and then tried to read the PL-RQST row (just written by WSMPPLP) for update. This was a deadly embrace and so the RC 16 was issued.

 The fix is to recode one application so that it reads the tables in the same order as the other application. That way any conflict will simply cause the second task to wait for the first one to complete.

 Sometimes we find that an application is reading the rows for update unnecessarily, in which case the fix is to convert one to read-only.

 Sometimes (as with this program) we find that an application is reading the row for update, but only updating it under certain circumstances (eg. as the result of an 'IF' test). In which case the fix is to move the IF test to become part of the WHERE clause (if possible). Or use CHECKPOINT to release the rows at a suitable point.

 

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members!

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close