PRB: LEN_TRIM Appears to Return Incorrect String Length (89131)
The information in this article applies to:
- Microsoft FORTRAN Compiler for MS-DOS 5.0
- Microsoft FORTRAN Compiler for MS-DOS 5.1
- Microsoft FORTRAN compiler for OS/2 5.0
- Microsoft FORTRAN compiler for OS/2 5.1
- Microsoft FORTRAN PowerStation for MS-DOS 1.0
- Microsoft FORTRAN PowerStation for MS-DOS 1.0a
- Microsoft Fortran Powerstation 32 for Windows NT 1.0
- Microsoft Fortran Powerstation 32 for Windows NT 4.0
This article was previously published under Q89131 SYMPTOMS
LEN_TRIM may appear to return an incorrect trimmed string length. This
occurs when the string in the calling routine is not initialized and the
subprogram's formal argument declares the character string smaller than the
original string's length.
CAUSE
All bytes in uninitialized strings are set to zero (null characters). When
a string is initialized, any unused bytes are padded with spaces to the end
of the string. The padding is done to the size that is declared in the
routine in which the string is initialized. If a string is passed to a
routine that declares the string size to be smaller then it was defined,
the string will be incompletely padded with spaces. Upon return to the
routine where the string was declared, the string will still have null
characters at the end. The LEN_TRIM intrinsic function only parses for
spaces and will stop immediately when it detects the final null character.
This will appear to be incorrect because most editors display null
characters as blanks.
RESOLUTION
LEN_TRIM works correctly if the string lengths are declared equal in all
routines that the use the string. Also, initializing the string to all
spaces in the routine in which it is originally declared will also correct
the problem.
Modification Type: | Major | Last Reviewed: | 12/1/2003 |
---|
Keywords: | kbLangFortran KB89131 |
---|
|