Ifort support
authorJustin Lecher <jlec@gentoo.org>
Mon, 5 Apr 2010 21:15:30 +0000 (21:15 +0000)
committerJustin Lecher <jlec@gentoo.org>
Mon, 5 Apr 2010 21:15:30 +0000 (21:15 +0000)
Package-Manager: portage-2.2_rc67/cvs/Linux x86_64

sci-chemistry/cns/ChangeLog
sci-chemistry/cns/Manifest
sci-chemistry/cns/cns-1.2.1-r4.ebuild [new file with mode: 0644]
sci-chemistry/cns/files/1.2.1-ifort.patch [new file with mode: 0644]

index c30aa50ae0ffc3c65e52f3502a6ce0f7bc5be015..07d51acb8a5b2aef8f70ebfbb28ed3958011de63 100644 (file)
@@ -1,6 +1,12 @@
 # ChangeLog for sci-chemistry/cns
 # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/cns/ChangeLog,v 1.22 2010/04/04 07:08:14 jlec Exp $
+# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/cns/ChangeLog,v 1.23 2010/04/05 21:15:30 jlec Exp $
+
+*cns-1.2.1-r4 (05 Apr 2010)
+
+  05 Apr 2010; Justin Lecher <jlec@gentoo.org> +files/1.2.1-ifort.patch,
+  +cns-1.2.1-r4.ebuild:
+  Ifort support
 
   04 Apr 2010; Justin Lecher <jlec@gentoo.org> Manifest:
   distfile digest fix
index c32910e4fea40603724afc1cad8a5a49d7f9fe6f..1af3c73b2618d4e5c360df1e28dea95b58f6964a 100644 (file)
@@ -7,6 +7,7 @@ AUX 1.2.1-allow-gcc-openmp.patch 926 RMD160 b8ccec007a717c53ca15731b1b5637bb067d
 AUX 1.2.1-aria.patch 15006 RMD160 b358747845e8d53f450e654f493dedbe400f537f SHA1 234dde547748ba95eb7b94ffac7bfcc9bfd22991 SHA256 08585a1e88b8b8da0f983e934a2859b128e4cba5e714af3b6ed40f334fdbe982
 AUX 1.2.1-aria2.3.patch 658 RMD160 a372156b7a783cb78c81aadae2eca5c64c9630e5 SHA1 b3cb35d793d7aa01c2c14ea7848a29b81a735bdd SHA256 c393799beabda5f61a7dcad9aaa4d211c14eb17b1ffd5200c3306c7ef71d19f3
 AUX 1.2.1-gentoo.patch 2411 RMD160 a82893524541961a9797fd2bb84982e609fda717 SHA1 7d3168a9cf7622923138022a5683aa65b5d5c34d SHA256 58972606d23d87fdeb08c9e37d9d5c536983e5a1ad4647dedd5b283ef67bc52c
+AUX 1.2.1-ifort.patch 5346 RMD160 106cf7dc7b4e13674fdf34ca0fd9af78effbc84b SHA1 26ccc71740ee2539352009f730b79b2ae20b5047 SHA256 bac35147159fac06fcb3a03a4f09c56224d4ee852b86a771121d98c42f3a9c65
 AUX 1.2.1-parallel.patch 641 RMD160 dffcaf7a4d7c79b9362640b64e677a7fde04ac80 SHA1 5de790cee7acf9ff4a87a61fdc866c330ef6d6f1 SHA256 7cd3312c35d2dbbd2146fdfa977f9866365c4a7be16787b1ba5d9807ff823d31
 AUX cns_solve_env_sh 7070 RMD160 4104b22476a61a80c7adae8a363da1dd4ab4f136 SHA1 30ba978f4862fd94d9fa939cbb7c3eb55ece46cd SHA256 da571cba2a2244e571870b1783fd6cdce1b595e14234cfb43011e9e9eb50151c
 DIST aria2.2.tar.gz 1710084 RMD160 b96a900befd5521649ccce84d4d5b93d30709799 SHA1 faa5ff9e7682026afc334f1c8b3b10259a5e69f9 SHA256 a1695ee11b06a045c4b4bb9f0113d1e48c86e12d4149c0dcb505ca894069d054
@@ -22,14 +23,15 @@ EBUILD cns-1.2-r1.ebuild 4467 RMD160 cc3f1a26a8c28c111f25b74572dc4af3bb1d56c9 SH
 EBUILD cns-1.2.1-r1.ebuild 5531 RMD160 93f382ecb94f6b6a21108182a2aae18547bc704a SHA1 f80f7203f79cd527b2ccdd2755971a21a6b87cba SHA256 0866f9e38ce28d128db71974d1832f7fc6124f0d11b02f90111cd8a5434b075c
 EBUILD cns-1.2.1-r2.ebuild 6085 RMD160 bbf32a77b2c3d84becb95d390704b77943348ac1 SHA1 4e09e5ce780edb8f78eea2456be1aebd0ebef3a9 SHA256 26812e41de70704d1327b5e9abcdd73eb63b03162aa0ff3e340594d1da0506ec
 EBUILD cns-1.2.1-r3.ebuild 6212 RMD160 c42de027f4b43219617f1ff14ee7f2183719ba38 SHA1 d4c2c9155047d1da4225af0f9f8d391ed02b53f9 SHA256 9bb0e75981db8f7feff60465311b4840b398c1f8a095dfe0ebc9a3888d59addc
+EBUILD cns-1.2.1-r4.ebuild 6536 RMD160 2d6ffd2f5d33cb1ee82f1941a845f2880b7196f1 SHA1 862abc4c0324cda2bff4a1624b8172517f7e833e SHA256 c7c92a842e450e203f1098b05edd9a82545c331b008b4b7ece8a63539685774f
 EBUILD cns-1.2.1.ebuild 5574 RMD160 23000fd54ce250a3dbf40ab71d12c539fda0d9fd SHA1 42c852c40d23eeec1280359d5adfe8c51a7ebf24 SHA256 7c1f6871416f516773af3cd23d8be9c2b0e978401898d5932622a2dd2b121301
 EBUILD cns-1.2.ebuild 3497 RMD160 9e097171ebd44f1a7e5dd317beeb6b65aefac2f6 SHA1 3afc4b415d2ef559b717843a05bc6afb8ee651a2 SHA256 1a6094c8bca3797e62c375a2370cc7425e9c1dd1106d20f202681bc5a87da1fc
-MISC ChangeLog 4009 RMD160 128a7099f4c412edfaad7262854e15673d40c83e SHA1 68560988c3e219ea3861064468ca5526471918d1 SHA256 3d0805ba87e9381040bd1c1c6dcea16fafb1a7b67764f863b2ae35c74e05be4a
+MISC ChangeLog 4152 RMD160 3cb037666c2b579e81527d08e8917d72fce107ec SHA1 03d46a719f4af3051e22e004ee9044975d41ad76 SHA256 470bf8329e75d21ddd59f7ea31f3b037f00da24ce6a76bc7ae0d358b888b636f
 MISC metadata.xml 302 RMD160 d60d9cd875115eaba68ad4b504bff76b39a136b0 SHA1 ecdd8feeea2de489927403f1941acfc582c17222 SHA256 a374144760a8ac1f72b1c625c41f98cee3f74511c964133bda119da580664c50
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.14 (GNU/Linux)
 
-iEYEARECAAYFAku4OuQACgkQgAnW8HDreRaHgwCdHYhbgIsFMAHJLLP4uGnENpL5
-GVsAn0OQUTBs9Qp+r32tx4XSex5yNuA7
-=6J6J
+iEYEARECAAYFAku6UvcACgkQgAnW8HDreRYpsgCfXT5xGtA0TaZIx2eFf0wzdIxa
+Ei0AoIbsOb831iB/oM9XBi1f8mqM3h47
+=rN//
 -----END PGP SIGNATURE-----
diff --git a/sci-chemistry/cns/cns-1.2.1-r4.ebuild b/sci-chemistry/cns/cns-1.2.1-r4.ebuild
new file mode 100644 (file)
index 0000000..47f07c3
--- /dev/null
@@ -0,0 +1,222 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/cns/cns-1.2.1-r4.ebuild,v 1.1 2010/04/05 21:15:30 jlec Exp $
+
+EAPI="3"
+
+inherit eutils fortran toolchain-funcs versionator flag-o-matic
+
+MY_PN="${PN}_solve"
+MY_PV="$(delete_version_separator 2)"
+MY_P="${MY_PN}_${MY_PV}"
+
+DESCRIPTION="Crystallography and NMR System"
+HOMEPAGE="http://cns.csb.yale.edu/"
+SRC_URI="${MY_P}_all-mp.tar.gz
+       aria? ( aria2.3.1.tar.gz )"
+
+SLOT="0"
+LICENSE="cns"
+KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="aria openmp"
+
+RDEPEND="app-shells/tcsh
+       !app-text/dos2unix"
+DEPEND="${RDEPEND}"
+PDEPEND="aria? ( ~sci-chemistry/aria-2.3.1 )"
+
+RESTRICT="fetch"
+S="${WORKDIR}/${MY_P}"
+
+FORTRAN="gfortran ifc"
+
+pkg_nofetch() {
+       elog "Fill out the form at http://cns.csb.yale.edu/cns_request/"
+       use aria && elog "and http://aria.pasteur.fr/"
+       elog "and place these files:"
+       elog ${A}
+       elog "in ${DISTDIR}."
+}
+
+pkg_setup() {
+       fortran_pkg_setup
+
+       if [[ $(tc-getCC) == *gcc* ]] &&
+               ( [[ $(gcc-major-version)$(gcc-minor-version) -lt 42 ]] ||
+               ! built_with_use sys-devel/gcc openmp )
+       then
+               ewarn "You are using gcc and OpenMP is only available with gcc >= 4.2 "
+               ewarn "Switch CC to an OpenMP capable compiler"
+       fi
+}
+
+src_prepare() {
+       epatch "${FILESDIR}"/${PV}-gentoo.patch
+       epatch "${FILESDIR}"/${PV}-parallel.patch
+
+       if use aria; then
+       pushd "${WORKDIR}"/aria* >& /dev/null
+               # Update the cns sources in aria for version 1.2.1
+               epatch "${FILESDIR}"/1.2.1-aria2.3.patch
+
+               # Update the code with aria specific things
+               cp -rf cns/src/* "${S}"/source/
+       popd >& /dev/null
+       fi
+
+       # the code uses Intel-compiler-specific directives
+       if [[ ${FORTRANC} == gfortran ]]; then
+               epatch "${FILESDIR}"/${PV}-allow-gcc-openmp.patch
+               use openmp && \
+                       OMPLIB="-lgomp" && append-flags -fopenmp
+               COMP="gfortran"
+               use amd64 && \
+                       append-fflags -fdefault-integer-8
+       else
+               epatch "${FILESDIR}"/${PV}-ifort.patch
+               use openmp && OMPLIB="-lgomp" && \
+                       append-flags -openmp && append-ldflags -openmp
+               COMP="ifort"
+               use amd64 && append-fflags -i8
+               append-fflags -Vaxlib
+               append-ldflags -Vaxlib
+       fi
+
+       use amd64 && \
+               append-cflags "-DINTEGER='long long int'"
+
+       # Set up location for the build directory
+       # Uses obsolete `sort` syntax, so we set _POSIX2_VERSION
+       cp "${FILESDIR}"/cns_solve_env_sh "${T}"/
+       sed -i \
+               -e "s:_CNSsolve_location_:${S}:g" \
+               -e "17 s:\(.*\):\1\nsetenv _POSIX2_VERSION 199209:g" \
+               "${S}"/cns_solve_env
+       sed -i \
+               -e "s:_CNSsolve_location_:${S}:g" \
+               -e "17 s:\(.*\):\1\nexport _POSIX2_VERSION; _POSIX2_VERSION=199209:g" \
+               "${T}"/cns_solve_env_sh
+
+       einfo "Fixing shebangs..."
+       find "${S}" -type f \
+               -exec sed "s:/bin/csh:${EPREFIX}/bin/csh:g" -i '{}' \; || die
+}
+
+src_compile() {
+       local GLOBALS
+       local MALIGN
+       if [[ ${FORTRANC} = g77 ]]; then
+               GLOBALS="-fno-globals"
+               MALIGN='\$(CNS_MALIGN_I86)'
+       fi
+
+       # Set up the compiler to use
+       pushd instlib/machine/unsupported/g77-unix 2>/dev/null
+       ln -s Makefile.header Makefile.header.${FORTRANC} || die
+       popd 2>/dev/null
+
+       # make install really means build, since it's expected to be used in-place
+       # -j1 doesn't mean we do no respect MAKEOPTS!
+       emake -j1 \
+               CC="$(tc-getCC)" \
+               F77="${FORTRANC}" \
+               LD="${FORTRANC}" \
+               CCFLAGS="${CFLAGS} -DCNS_ARCH_TYPE_\$(CNS_ARCH_TYPE) \$(EXT_CCFLAGS)" \
+               LDFLAGS="${LDFLAGS}" \
+               F77OPT="${FFLAGS:- -O2} ${MALIGN}" \
+               F77STD="${GLOBALS}" \
+               OMPLIB="${OMPLIB}" \
+               compiler="${COMP}" \
+               install \
+               || die "emake failed"
+
+}
+
+src_test() {
+       # We need to force on g77 manually, because we can't get aliases working
+       # when we source in a -c
+       einfo "Running tests ..."
+       sh -c \
+               "export CNS_G77=ON; source ${T}/cns_solve_env_sh; make run_tests" \
+               || die "tests failed"
+       einfo "Displaying test results ..."
+       cat "${S}"/*_g77/test/*.diff-test
+}
+
+src_install() {
+       # Install to locations resembling FHS
+       sed -i \
+               -e "s:${S}:usr:g" \
+               -e "s:^\(setenv CNS_SOLVE.*\):\1\nsetenv CNS_ROOT ${EPREFIX}/usr:g" \
+               -e "s:^\(setenv CNS_SOLVE.*\):\1\nsetenv CNS_DATA \$CNS_ROOT/share/cns:g" \
+               -e "s:^\(setenv CNS_SOLVE.*\):\1\nsetenv CNS_DOC \$CNS_ROOT/share/doc/${PF}:g" \
+               -e "s:CNS_LIB \$CNS_SOLVE/libraries:CNS_LIB \$CNS_DATA/libraries:g" \
+               -e "s:CNS_MODULE \$CNS_SOLVE/modules:CNS_MODULE \$CNS_DATA/modules:g" \
+               -e "s:CNS_HELPLIB \$CNS_SOLVE/helplib:CNS_HELPLIB \$CNS_DATA/helplib:g" \
+               -e "s:\$CNS_SOLVE/bin/cns_info:\$CNS_DATA/cns_info:g" \
+               "${S}"/cns_solve_env
+       # I don't entirely understand why the sh version requires a leading /
+       # for CNS_SOLVE and CNS_ROOT, but it does
+       sed -i \
+               -e "s:${S}:/usr:g" \
+               -e "s:^\(^[[:space:]]*CNS_SOLVE=.*\):\1\nexport CNS_ROOT=${EPREFIX}/usr:g" \
+               -e "s:^\(^[[:space:]]*CNS_SOLVE=.*\):\1\nexport CNS_DATA=\$CNS_ROOT/share/cns:g" \
+               -e "s:^\(^[[:space:]]*CNS_SOLVE=.*\):\1\nexport CNS_DOC=\$CNS_ROOT/share/doc/${PF}:g" \
+               -e "s:CNS_LIB=\$CNS_SOLVE/libraries:CNS_LIB=\$CNS_DATA/libraries:g" \
+               -e "s:CNS_MODULE=\$CNS_SOLVE/modules:CNS_MODULE=\$CNS_DATA/modules:g" \
+               -e "s:CNS_HELPLIB=\$CNS_SOLVE/helplib:CNS_HELPLIB=\$CNS_DATA/helplib:g" \
+               -e "s:\$CNS_SOLVE/bin/cns_info:\$CNS_DATA/cns_info:g" \
+               "${T}"/cns_solve_env_sh
+
+       # Get rid of setup stuff we don't need in the installed script
+       sed -i \
+               -e "83,$ d" \
+               -e "37,46 d" \
+               "${S}"/cns_solve_env
+       sed -i \
+               -e "84,$ d" \
+               -e "39,50 d" \
+               "${T}"/cns_solve_env_sh
+
+       newbin "${S}"/*linux*/bin/cns_solve* cns_solve \
+               || die "install cns_solve failed"
+
+       # Can be run by either cns_solve or cns
+       dosym cns_solve /usr/bin/cns
+
+       # Don't want to install this
+       rm -f "${S}"/*linux*/utils/Makefile
+
+       dobin "${S}"/*linux*/utils/* || die "install utils failed"
+
+       sed -i \
+               -e "s:\$CNS_SOLVE/doc/:\$CNS_SOLVE/share/doc/${PF}/:g" \
+               "${S}"/bin/cns_web || die
+
+       dobin "${S}"/bin/cns_{edit,header,transfer,web} || die "install bin failed"
+
+       insinto /usr/share/cns
+       doins -r "${S}"/libraries "${S}"/modules "${S}"/helplib || die
+       doins "${S}"/bin/cns_info || die
+
+       insinto /etc/profile.d
+       newins "${S}"/cns_solve_env cns_solve_env.csh || die
+       newins "${T}"/cns_solve_env_sh cns_solve_env.sh || die
+
+       dohtml \
+               -A iq,cgi,csh,cv,def,fm,gif,hkl,inp,jpeg,lib,link,list,mask,mtf,param,pdb,pdf,pl,ps,sc,sca,sdb,seq,tbl,top \
+               -f all_cns_info_template,omac,def \
+               -r doc/html/* || die
+}
+
+pkg_info() {
+       if use openmp; then
+               elog "Set OMP_NUM_THREADS to the number of threads you want."
+               elog "If you get segfaults on large structures, set the GOMP_STACKSIZE"
+               elog "variable if using gcc (16384 should be good)."
+       fi
+}
+
+pkg_postinst() {
+       pkg_info
+}
diff --git a/sci-chemistry/cns/files/1.2.1-ifort.patch b/sci-chemistry/cns/files/1.2.1-ifort.patch
new file mode 100644 (file)
index 0000000..ba44beb
--- /dev/null
@@ -0,0 +1,126 @@
+diff --git a/source/angledb.f b/source/angledb.f
+index 28ad657..eaa847d 100644
+--- a/source/angledb.f
++++ b/source/angledb.f
+@@ -1416,10 +1416,10 @@ C include files
+ C local variables
+       INTEGER COUNT, SPTR, OLDCLASS, OLDMAXANGLEDBS
+       INTEGER THETYPE, CURPSIS, CURPHIS
+-      INTEGER CLASSINDEX
++      INTEGER CLASINDEX
+       DOUBLE PRECISION K1, CUTOFF
+       CHARACTER*4 THENAME
+-      CHARACTER*20 CLASSNAME
++      CHARACTER*20 CLASNAME
+ C begin
+ C
+       IF (ANGLEDBFLAG) THEN
+@@ -1450,10 +1450,10 @@ C
+            ELSE IF (WD(1:4).EQ.'CLAS') THEN
+                 OLDCLASS = CURANGLEDBCLASS
+                 CALL NEXTWD('class name =')
+-                CLASSNAME = WD(1:20)
++                CLASNAME = WD(1:20)
+                 ANGLEDBMODE = NEW
+                 DO COUNT = 1, NANGLEDBCLASSES
+-                     IF (ANGDBCLASSNAMES(COUNT).EQ.CLASSNAME) THEN
++                     IF (ANGDBCLASSNAMES(COUNT).EQ.CLASNAME) THEN
+                           ANGLEDBMODE = UPDATE
+                           CURANGLEDBCLASS = COUNT
+                      END IF
+@@ -1472,7 +1472,7 @@ C
+                      END IF
+                      NANGLEDBCLASSES = NANGLEDBCLASSES + 1
+                      CURANGLEDBCLASS = NANGLEDBCLASSES
+-                     ANGDBCLASSNAMES(CURANGLEDBCLASS) = CLASSNAME
++                     ANGDBCLASSNAMES(CURANGLEDBCLASS) = CLASNAME
+                      ANGLEDBASSNDX(CURANGLEDBCLASS) = NANGLEDBS
+                 END IF
+ C
+@@ -1733,16 +1733,16 @@ C
+      &                         HEAP(ANGLEDBTPTR))
+                      ELSE IF (WD(1:4).EQ.'CLAS') THEN
+                           CALL NEXTWD('Class name>')
+-                          CLASSNAME = WD(1:20)
+-                          CLASSINDEX = 0
++                          CLASNAME = WD(1:20)
++                          CLASINDEX = 0
+                           DO COUNT = 1, NANGLEDBCLASSES
+                                IF (ANGDBCLASSNAMES(COUNT).EQ.
+-     &                              CLASSNAME) THEN
++     &                              CLASNAME) THEN
+                                     PRINTTHISCLASS(COUNT) = .TRUE.
+-                                    CLASSINDEX = COUNT
++                                    CLASINDEX = COUNT
+                                END IF
+                           END DO
+-                          IF (CLASSINDEX.EQ.0) THEN
++                          IF (CLASINDEX.EQ.0) THEN
+                                CALL DSPERR('ANGLEDB',
+      &                              'unknown class. Using first.')
+                                PRINTTHISCLASS(1) = .TRUE.
+diff --git a/source/rama.f b/source/rama.f
+index c5d14f2..3063e7b 100644
+--- a/source/rama.f
++++ b/source/rama.f
+@@ -1468,11 +1468,11 @@ C include files
+ C local variables
+       INTEGER COUNT, SPTR, OLDCLASS, OLDMAXRAMAS,
+      &     THETYPE, CURPSIS, CURPHIS,
+-     &     CURCHIS, CURTHTS, CLASSINDEX
++     &     CURCHIS, CURTHTS, CLASINDEX
+       INTEGER CLEN
+       DOUBLE PRECISION K1, CUTOFF
+       CHARACTER*4 THENAME
+-      CHARACTER*50 CLASSNAME
++      CHARACTER*50 CLASNAME
+ C begin
+ C
+ C this is used by READRAMA2 to hold the selection
+@@ -1503,10 +1503,10 @@ C
+            ELSE IF (WD(1:4).EQ.'CLAS') THEN
+                 OLDCLASS = CURRAMACLASS
+                 CALL NEXTWD('class name =')
+-                CLASSNAME = WD(1:50)
++                CLASNAME = WD(1:50)
+                 RAMAMODE = NEW
+                 DO COUNT = 1, NRAMACLASSES
+-                     IF (RAMACLASSNAMES(COUNT).EQ.CLASSNAME) THEN
++                     IF (RAMACLASSNAMES(COUNT).EQ.CLASNAME) THEN
+                           RAMAMODE = UPDATE
+                           CURRAMACLASS = COUNT
+                      END IF
+@@ -1525,7 +1525,7 @@ C
+                      END IF
+                      NRAMACLASSES = NRAMACLASSES + 1
+                      CURRAMACLASS = NRAMACLASSES
+-                     RAMACLASSNAMES(CURRAMACLASS) = CLASSNAME
++                     RAMACLASSNAMES(CURRAMACLASS) = CLASNAME
+                 END IF
+ C
+ C set force constant for current class,
+@@ -1954,18 +1954,18 @@ C
+      &                         HEAP(RAMAATOMPTR), 0)
+                      ELSE IF (WD(1:4).EQ.'CLAS') THEN
+                           CALL NEXTWD('Class name>')
+-                          CLASSINDEX = 0
++                          CLASINDEX = 0
+                           DO COUNT = 1, NRAMACLASSES
+-                               IF (RAMACLASSNAMES(COUNT).EQ.CLASSNAME)
+-     &                              CLASSINDEX = COUNT
++                               IF (RAMACLASSNAMES(COUNT).EQ.CLASNAME)
++     &                              CLASINDEX = COUNT
+                           END DO
+-                          IF (CLASSINDEX.EQ.0) THEN
++                          IF (CLASINDEX.EQ.0) THEN
+                                CALL DSPERR('RAMA',
+      &                              'unknown class. Using first.')
+-                               CLASSINDEX = 1
++                               CLASINDEX = 1
+                           END IF
+                           CALL PRINTRAMAS(CUTOFF, HEAP(CALCRAMAPTR),
+-     &                         HEAP(RAMAATOMPTR), CLASSINDEX)
++     &                         HEAP(RAMAATOMPTR), CLASINDEX)
+                      ELSE
+                           CALL DSPERR('RAMA',
+      &                         'Expected ALL or CLASs.')