Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

trim() function behavior

dannycat
New Contributor I
2,444 Views
I quite often use the trim() function when concatenating string together so that spacing can be controlled (used often for creation filenames for example) however I noticed that if the variable being trimmed is blank none of the strings following are added to the string. Is this expected?

eg

character*20 :: var1,var2,var3
character*132 :: string

var1 = '250.0'
var2 = 'millimetres'
var3 = 'tagline'

string = trim(var1)//' '//trim(var2)//' '//trim(var3)

string would be '250.0 millimetres tagline'

however if:

var2 = ' '

string would be just '250.0'

where I would expect '250.0 tagline'

I've only noticed this recently so may have been introduced in one of the later XE compiler updates.

0 Kudos
4 Replies
mecej4
Honored Contributor III
2,444 Views
Please report the specific compiler version which exhibits this behavior. Version 12.1.0.233 (32-bit and 64-bit) on Windows prints:

250.0 tagline
0 Kudos
Steven_L_Intel1
Employee
2,444 Views
I get:

250.0 tagline

in Update 9 (12.1.330)

Please show a complete program that demonstrates the problem and a command prompt log showing the build and run with the bad results.
0 Kudos
dannycat
New Contributor I
2,444 Views
Hi Steve,

I'm running on Update 9 (12.1.330).

After some investigation the problem I flagged up occurs when thevar2 substring has not been initialised at all. This is down to bad programming practice on my part so apologies for that. However I would be interested to know if the behavoir of the function is as expected.

I know that len_trim() function does not like C strings with trailing char(0)/ Should these founctions still work even if they containare NULL characters using the first encountered NULL as the end of the string?

Thanks for your quick response.
0 Kudos
Steven_L_Intel1
Employee
2,444 Views
TRIM and LEN_TRIM remove blanks only - not other characters. the NUL character has no special meaning in Fortran.
0 Kudos
Reply