A fix is available
APAR status
Closed as program error.
Error description
The WAKEUP (IUCVMSG command has a boundary condition which can cause message DMSCYW2245I to be incorrectly truncated. When a message is received, WAKEUP processing displays message DMSCYW2245I *MSG <userid> <msg text> on the console. When using the command CP MSG USER1 <msg> (userid has a length of five characters) to send a message to the userid (userid has a length of seven characters) running WAKEUP, message is truncated as follows: When length(msg) <= 226 characters, WAKEUP produces console output 'DMSCYW2245I *MSG USERID1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...' as expected. When length(msg) = 227 characters, WAKEUP produces console output '' (null line) When length(msg) = 228 characters, WAKEUP produces console output 'D' When length(msg) = 229 characters, WAKEUP produces console output 'DM' When length(msg) >= 230 characters, WAKEUP produces console output 'DMS' The problem is only with the DMSCYW2245I message; the stacked message data is correct. An additional issue with the WAKEUP command is that SMSGs received through VMCF are limited to 169 characters. While this limit is documented, it seems unnecessary. When using the command CP SMSG USER1 <msg> (userid has a length of five characters) to send a message to the userid (userid has a length of seven characters) running WAKEUP (SMSG, the CP SMSG command fails with HCPMFS057I USER1 not receiving; message too large when the length of the message is 127 characters or longer. When the length of the message is 126 characters or shorter, the command completes successfully as expected.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: Users of the WAKEUP command * **************************************************************** * PROBLEM DESCRIPTION: * **************************************************************** * RECOMMENDATION: APPLY PTF * **************************************************************** The WAKEUP (IUCVMSG command can incorrectly truncate message DMSCYW2245I. WAKEUP processing displays message DMSCYW2245I *MSG <userid> <msg text> on the console when a message is received. When using the command CP MSG USER1 <msg> (userid has a length of five characters) to send a message to the userid (userid has a length of seven characters) running WAKEUP, WAKEUP processing truncates the DMSCYW2245I message when the length of the message is greater than 226 characters. The problem is only with the DMSCYW2245I message; the message data stacked by WAKEUP is correct. The problem is in DTRYWAK ASSEMBLE under label RESVMCF1. The length of the DMSCYW2245I message (both header and text) is limited to 255 characters because DTRYWAK uses the APPLMSG macro with the TEXTA parameter to issue the message. Under label RESVMCF1, the TEXTA length value is stored in R2 by a STC instruction (STC R2,EMSGLEN). When the sum of the length of the header and the length of the message text exceeds 255 (X'FF'), the byte value rolls to 0 (X'0100' or X'00') causing the TEXTA length value to be zero so there's no output for the DMSCYW2245I message. When the byte value rolls to 1 (X'0101' or X'01'), the TEXTA length value is one so the output is only "D" and so on. An additional issue with the WAKEUP command is that SMSGs received through VMCF are limited to 169 characters. This limit is documented, but it is unnecessary. When using the command CP SMSG USER1 <msg> (userid has a length of five characters) to send a message to the userid (userid has a length of seven characters) running WAKEUP (SMSG, the CP SMSG command fails with HCPMFS057I USER1 not receiving; message too large when the length of the message is 127 characters or longer. Again, the code in DTRYWAK ASSEMBLE is causing this behavior. When the VMCPARM control block for the VMCF AUTHORIZE function is built, the code is using value "169" for field VMCPLENA (external interrupt buffer length) which limits the length to 169 (including a fixed message header).
Problem conclusion
DTRYWAK ASSEMBLE and WAKEUP HELPCMS have been updated. In DTRYWAK ASSEMBLE under label RESVMCF1, code has been added to check if the TEXTA message length is greater than 255 (X'FF') and, if it is, to set the length to the maximum length of 255. Also, in DTRYWAK ASSEMBLE, the value for VMCPLENA has been increased from 169 to 280. In help file WAKEUP HELPCMS, the documentation for both the SMSG and VMCF options has been updated to state that the maximum data that WAKEUP can receive through SMSG or SENDX is 280 bytes. THE FOLLOWING CHANGES HAVE BEEN MADE TO THE SYSTEM REFERENCE LIBRARIES: ***START PUBLICATION CHANGE************************************* PUBLICATION TITLE: z/VM CMS Commands and Utilities Reference RELEASE: z/VM 6.4.0 ORDER NUMBER: SC24-6166-06 ------------------------------------------- CHAPTER: 2 PAGES: 1274-1275 ABSTRACT: Update SMSG/SENDX message data byte limit to 280 BODY: Under the SMSG option, change the paragraph When this option is given, WAKEUP will do a VMCF AUTHORIZE for any user ID. The maximum data that WAKEUP can receive through SMSG or SENDX is 169 bytes. to: When this option is given, WAKEUP will do a VMCF AUTHORIZE for any user ID. The maximum data that WAKEUP can receive through SMSG or SENDX is 280 bytes. AND under the VMCF option, change the paragraph When this option is given, WAKEUP issues a VMCF AUTHORIZE for any user ID. The maximum data that WAKEUP can receive through SENDX is 169 bytes. to: When this option is given, WAKEUP issues a VMCF AUTHORIZE for any user ID. The maximum data that WAKEUP can receive through SENDX is 280 bytes. ***END PUBLICATION CHANGE*************************************** ***START PUBLICATION CHANGE************************************* PUBLICATION TITLE: z/VM CMS Commands and Utilities Reference RELEASE: z/VM 7.1.0 ORDER NUMBER: SC24-6260-00 ------------------------------------------- CHAPTER: 2 PAGES: 1216 ABSTRACT: Update SMSG/SENDX message data byte limit to 280 BODY: Under the SMSG option, change the paragraph When this option is given, WAKEUP will do a VMCF AUTHORIZE for any user ID. The maximum data that WAKEUP can receive through SMSG or SENDX is 169 bytes. to: When this option is given, WAKEUP will do a VMCF AUTHORIZE for any user ID. The maximum data that WAKEUP can receive through SMSG or SENDX is 280 bytes. AND under the VMCF option, change the paragraph When this option is given, WAKEUP issues a VMCF AUTHORIZE for any user ID. The maximum data that WAKEUP can receive through SENDX is 169 bytes. to: When this option is given, WAKEUP issues a VMCF AUTHORIZE for any user ID. The maximum data that WAKEUP can receive through SENDX is 280 bytes. ***END PUBLICATION CHANGE***************************************
Temporary fix
FOR RELEASE ES-CMS-640-BASE : PREREQ: NONE CO-REQ: NONE IF-REQ: NONE FOR RELEASE ES-CMS-710-BASE : PREREQ: NONE CO-REQ: NONE IF-REQ: NONE
Comments
APAR Information
APAR number
VM66238
Reported component name
VM CMS
Reported component ID
568411201
Reported release
640
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2018-12-12
Closed date
2019-01-09
Last modified date
2020-12-16
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UM35420 UM35421
Modules/Macros
DTRYWAK WAKEUP
SC24616606 | SC24626000 |
Fix information
Fixed component name
VM CMS
Fixed component ID
568411201
Applicable component levels
Fix is available
Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.
[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG27M","label":"APARs - z\/VM environment"},"Platform":[{"code":"PF054","label":"z\/OS"}],"Version":"640","Line of Business":{"code":"LOB16","label":"Mainframe HW"}}]
Document Information
Modified date:
12 January 2021