[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[McIDAS #AHC-658709]: McIDAS 2015 build issue on Solaris 11.3/Studio 12.3



Hi Robert,

re:
> I am having an issue building McIDAS 2015 on Solaris 11.3/Studio 12.3. I 
> realize you
> guys are back on Solaris 10/Studio 11. It fails at m0pirdec.for and seems to 
> have an
> issue with the syntax. I could go back and recompile with gcc/g77 but would 
> prefer to
> stick with the Studio compilers if possible.
> 
> 
> NOTICE: Invoking 
> /home/setup/SolarisStudio12.3-solaris-x86-bin/solarisstudio12.3/bin/f90 -f77 
> -ftrap=%none -c -g -O0 m0pirdec.f
> m0pirdec.f:
> m0pirdec:
> makpir:
> dcdair:
> cvttur:
> dcdpir:
> decice:
> dectur:
> deccld:
> fltlvl:
> dcdaca:
> ratoll:
> 
> &                 type(sptr+1) .eq. ACHAR .and.
> ^
> "m0pirdec.f", Line = 1512, Column = 28: ERROR: Unexpected syntax: ")" was 
> expected but found "(".
> ^
> "m0pirdec.f", Line = 1512, Column = 28: ERROR: A defined operator is missing 
> the "." delimiter.
> 
> f90comp: 10687 SOURCE LINES
> f90comp: 2 ERRORS, 0 WARNINGS, 0 OTHER MESSAGES, 0 ANSI
> compile m0pirdec.for:           FAILED

Interesting.  Apparently, the Fortran compiler you are using is interpreting 
'type' as
a known operator, and not as an array.  Why the error is not showing up before 
line
1512 is pretty mysterious as 'type' is used as an array a number of times 
before this
in the subroutine in which this line is found.

A quick check shows that the line before the one causing the error is
greater than 72 characters in length:

               elseif (type(sptr) .eq. ADIGIT .and.
     &                (numch(sptr) .ge. 2 .and. numch(sptr) .le. 5) .and.
     &                 type(sptr+1) .eq. ACHAR .and.
     &                 numch(sptr+1) .eq. 1)then
                                                                        ^ 
column 73

In order to test whether or not the problem is actually that the Fortran
compiler is obeying the 72 column limit (recall that columns > 72 are
historically treated as comments), please try the following:

- edit m0pirdec.for and remove some white space between the '&' and 
'(numch(sptr)'

<as 'mcidas'>
cd ~/mcidas2015/src
cp -p m0pirdec.for m0pirdec.for.orig
vi m0pirdec.for

change:

               elseif (type(sptr) .eq. ADIGIT .and.
     &                (numch(sptr) .ge. 2 .and. numch(sptr) .le. 5) .and.
     &                 type(sptr+1) .eq. ACHAR .and.
     &                 numch(sptr+1) .eq. 1)then

to:

               elseif (type(sptr) .eq. ADIGIT .and.
     &           (numch(sptr) .ge. 2 .and. numch(sptr) .le. 5) .and.
     &                 type(sptr+1) .eq. ACHAR .and.
     &                 numch(sptr+1) .eq. 1)then


After making the change, you should be able to continue with your build,
or you could rebuild from scratch.

Comment:

- if the '.and.' clause extending into columns > 72 really is the problem,
  there are likely to be many, many more problems in the build

  Problems that may not show up as errors/warnings in the build 'makelog',
  but would show up at runtime.  If this is the case, then investigation
  needs to be made of the flags supported by the Fortran compiler that
  tell it to accept long line lengths.

Question:

- is there any chance I could login to your machine to take a look?

Cheers,

Tom
--
****************************************************************************
Unidata User Support                                    UCAR Unidata Program
(303) 497-8642                                                 P.O. Box 3000
address@hidden                                   Boulder, CO 80307
----------------------------------------------------------------------------
Unidata HomePage                       http://www.unidata.ucar.edu
****************************************************************************


Ticket Details
===================
Ticket ID: AHC-658709
Department: Support McIDAS
Priority: Normal
Status: Closed