Problem Note 64671: The FCMP procedure in a DBCS-encoded session for SAS® 9.4M6 (TS1M6) truncates the return length value to 8 bytes
Running PROC FCMP in a double-byte character set (DBCS) encoded session in SAS 9.4M6 truncates the length of any return value to 8 bytes.
The following code example demonstrates this problem:
options cmplib=(work.funcs);
proc fcmp outlib=work.funcs.test trace;
function test_func();
array inputargs[1] $32;
array outputargs[1] $32;
_ret = .;
call test_sub(inputargs, outputargs);
put "--outputargs after subroutine call";
put outputargs[1]=;
return(_ret);
endsub;
subroutine test_sub(inargs_list[1] $, outargs_list[1] $);
outargs outargs_list;
/* length outargs_list $ 32; */ /* Uncomment this line for a workaround */
outargs_list[1] = "I_am_an_output_value";
endsub;
quit;
data temp;
a=test_func();
run;
The code returns the truncated value as shown here:
--outputargs after subroutine call
outputargs[1]=I_am_an_
The following is the expected, correct output:
--outputargs after subroutine call
outputargs[1]=I_am_an_output_value
A workaround is to explicitly set the length of any OUTARGS statements. In the above code example, when the highlighted LENGTH statement is uncommented, the values are not truncated.
This issue does not affect single-byte encoded SAS sessions.
Click the Hot Fix tab in this note to access the hot fix for this issue.
Operating System and Release Information
SAS System | Base SAS | z/OS | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
z/OS 64-bit | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft® Windows® for x64 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows 8 Enterprise 32-bit | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows 8 Enterprise x64 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows 8 Pro 32-bit | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows 8 Pro x64 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows 8.1 Enterprise 32-bit | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows 8.1 Enterprise x64 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows 8.1 Pro 32-bit | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows 8.1 Pro x64 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows 10 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows Server 2012 Datacenter | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows Server 2012 R2 Datacenter | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows Server 2012 R2 Std | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows Server 2012 Std | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows Server 2016 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Microsoft Windows Server 2019 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Windows 7 Enterprise 32 bit | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Windows 7 Enterprise x64 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Windows 7 Home Premium 32 bit | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Windows 7 Home Premium x64 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Windows 7 Professional 32 bit | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Windows 7 Professional x64 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Windows 7 Ultimate 32 bit | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Windows 7 Ultimate x64 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
64-bit Enabled AIX | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
64-bit Enabled Solaris | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
HP-UX IPF | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Linux for x64 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
Solaris for x64 | 9.4_M6 | 9.4_M6 | 9.4 TS1M6 | 9.4 TS1M6 |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.
Type: | Problem Note |
Priority: | high |
Date Modified: | 2019-09-16 09:15:43 |
Date Created: | 2019-08-23 01:07:00 |