This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
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