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

Compatibility with XL fortran

rssmps
Beginner
1,228 Views
>lslpp -h "*xlf*"
Fileset Level Action Status Date Time
----------------------------------------------------------------------------
Path: /usr/lib/objrepos
xlfrte
7.1.1.0 COMMIT COMPLETE 03/26/03 14:53:06
7.1.1.5 COMMIT COMPLETE 03/03/04 10:09:21
xlfrte.aix43
7.1.1.0 COMMIT COMPLETE 03/26/03 14:51:46
7.1.1.5 COMMIT COMPLETE 03/03/04 10:09:20
xlfrte.aix51
7.1.1.0 COMMIT COMPLETE 03/26/03 14:52:10
7.1.1.5 COMMIT COMPLETE 03/03/04 10:09:20
xlfrte.msg.en_US
7.1.1.0 COMMIT COMPLETE 03/26/03 14:53:28
I've got some F90 compilied under CVF 6.6C3. However when I brought it over to unix with the above installed fortran compiler, I got some errors that I'm not sure what is going on.
for example, these 2 errors:
"ifemsa.f", line 500.9: 1514-195 (E) Invalid attribute specified for a component declaration statement. Attribute is ignored.
"ifemsa.f", line 500.25: 1514-199 (S) Array gm is a deferred-shape array but does not have the POINTER or ALLOCATABLE attributes.
occurred in the line in red below:
type RBE2TYPE
character(8) :: NAME
INTEGER :: EID
INTEGER :: GN
INTEGER :: CM
INTEGER,ALLOCATABLE :: GM(:)
INTEGER :: NUM_GM
end type RBE2TYPE
type( RBE2TYPE ), ALLOCATABLE :: RBE2(:), tempRBE2(:), RBE2LIST(:), RBE2IGNORE(:), ResidualRBE2(:), tempResidualRBE2(:), connectedRBE2(:)
Is there some options that I need to turn on/off?
Does anyone know if the unix compiler I have is XL Fotran 5.1? I'm not sure how to read the above results?
Thanks!
0 Kudos
6 Replies
Steven_L_Intel1
Employee
1,228 Views
You're using a feature of Fortran 2003 that is supported by CVF, but apparently not by the version of XLF you are using. You may want to replace the ALLOCATABLE by POINTER and see if that works for your application. There are some semantic differences, especially regarding assignment of derived types.
0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,228 Views
In particular, POINTER component can create a memory leak and must be DEALLOCATEd explicitly, whilst ALLOCATABLE one is leak-safe. As Steve pointed out, assignment of one variable to another will create a "deep" copy for ALLOCATABLEs (allocate new instance), but a "shallow" copy for POINTERs (just repoint the new pointer to the same target).

Best, see if there's a newer version of XLF which supports ALLOCATABLE components (Standard extension called TR15581) (most modern compilers do).

Jugoslav
0 Kudos
rssmps
Beginner
1,228 Views
This was what I was afraid of. As for upgrading our computers.....that might take a while.
is there a way to figure out what standards the XLF compiler will support?
Does CVF then have a way of limiting to only using thosethat are supported?
I'm running into a problem with even the most basic commands.
Code:
if(.not.EOF(1)) then
  ! do something
end if

compiler tells me that "Entity eof has undefined type."
how do you check for end of file without using eof?

Message Edited by rssmps on 01-18-2006 12:35 PM

0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,228 Views
EOF is VF extension. The standard way for eof-hit test is to include END=label or IOSTAT=integer-variable specifier in READ statement. When eof is encountered, the code on label will be executed in 1st case, and integer-variable will receive a non-zero (negative) value in 2nd case.

For CVF, there is "Fortran standard check" combo-box somewhere, if I recall correctly "Project/Settings/Fortran/Fortran language". If you select "F95" you will get warnings for all non-standard constructs.

As for ALLOCATABLE components, you can change them to POINTER and hope for the best. The code will probably work, but you may easily get memory leak(s).

Jugoslav
0 Kudos
rssmps
Beginner
1,228 Views
I'll check on the settings.
Thanks!
0 Kudos
Jugoslav_Dujic
Valued Contributor II
1,228 Views

For what it's worth, last version of XLF appears to be 8.1 or so and, having a glance over the .pdf manual, it seems to support TR 15581. Judging on your version number, 5.x seems to be quite old. However, I know how upgrading requests usually end up in big companies -- sometimes it's easier to get an approval for 1-month paid vacation on Hawaii than to get a newer software installed ;-).

Jugoslav

0 Kudos
Reply