Browse Source

New release 2020b

Super Pierre-Yves Barriat 4 years ago
parent
commit
b36d610a4c
46 changed files with 7120 additions and 0 deletions
  1. 33 0
      foss-2020b/CDO-1.9.9-gompi-2020b.eb
  2. 28 0
      foss-2020b/Doxygen-1.8.20-GCCcore-10.2.0.eb
  3. 133 0
      foss-2020b/ELIC_Python-1-foss-2020b-Python-3.8.6.eb
  4. 31 0
      foss-2020b/ESMF-8.0.1-foss-2020b.eb
  5. 23 0
      foss-2020b/Eigen-3.3.8-GCCcore-10.2.0.eb
  6. 17 0
      foss-2020b/FFTW-3.3.8-gompi-2020b.eb
  7. 57 0
      foss-2020b/GDAL-3.2.0-foss-2020b-Python-3.8.6.eb
  8. 33 0
      foss-2020b/GEOS-3.8.1-GCC-10.2.0-Python-3.8.6.eb
  9. 25 0
      foss-2020b/GSL-2.6-GCC-10.2.0.eb
  10. 49 0
      foss-2020b/HDF-4.2.15-GCCcore-10.2.0.eb
  11. 21 0
      foss-2020b/HDF5-1.10.7-gompi-2020b.eb
  12. 21 0
      foss-2020b/HPL-2.3-foss-2020b.eb
  13. 49 0
      foss-2020b/NCL-6.6.2-foss-2020b.eb
  14. 35 0
      foss-2020b/NCO-4.9.5-gompi-2020b.eb
  15. 28 0
      foss-2020b/OpenBLAS-0.3.12-GCC-10.2.0.eb
  16. 41 0
      foss-2020b/PROJ-7.2.0-GCCcore-10.2.0.eb
  17. 23 0
      foss-2020b/SWIG-4.0.2-GCCcore-10.2.0.eb
  18. 23 0
      foss-2020b/ScaLAPACK-2.1.0-gompi-2020b.eb
  19. 5683 0
      foss-2020b/ScaLAPACK-2.1.0_fix-GCC-10.patch
  20. 49 0
      foss-2020b/SciPy-bundle-2020.11-foss-2020b.eb
  21. 41 0
      foss-2020b/UDUNITS-2.2.26-GCCcore-10.2.0.eb
  22. 36 0
      foss-2020b/ecCodes-2.19.1-foss-2020b-Python-3.8.6.eb
  23. 33 0
      foss-2020b/ecCodes-2.19.1-gompi-2020b.eb
  24. 27 0
      foss-2020b/foss-2020b.eb
  25. 27 0
      foss-2020b/g2clib-1.6.0-GCCcore-10.2.0.eb
  26. 36 0
      foss-2020b/g2lib-3.1.0-GCCcore-10.2.0.eb
  27. 12 0
      foss-2020b/g2lib-3.1.0-int.patch
  28. 20 0
      foss-2020b/gompi-2020b.eb
  29. 35 0
      foss-2020b/libgeotiff-1.6.0-GCCcore-10.2.0.eb
  30. 23 0
      foss-2020b/libiconv-1.16-GCCcore-10.2.0.eb
  31. 33 0
      foss-2020b/libmo_unpack-3.1.2-GCCcore-10.2.0.eb
  32. 25 0
      foss-2020b/libmo_unpack-3.1.2-foss-2020b.eb
  33. 9 0
      foss-2020b/libmo_unpack-3.1.2_cmake_have_stdint.patch
  34. 28 0
      foss-2020b/libtirpc-1.2.6-GCCcore-10.2.0.eb
  35. 26 0
      foss-2020b/makedepend-1.0.6-GCCcore-10.2.0.eb
  36. 42 0
      foss-2020b/ncview-2.1.7-gompi-2020b.eb
  37. 34 0
      foss-2020b/netCDF-4.7.4-gompi-2020b.eb
  38. 17 0
      foss-2020b/netCDF-4.7.4_fix-ocdebug.patch
  39. 25 0
      foss-2020b/netCDF-C++4-4.3.1-gompi-2020b.eb
  40. 25 0
      foss-2020b/netCDF-Fortran-4.5.3-gompi-2020b.eb
  41. 23 0
      foss-2020b/pybind11-2.6.0-GCCcore-10.2.0.eb
  42. 29 0
      foss-2020b/xproto-7.0.31-GCCcore-10.2.0.eb
  43. 21 0
      intel-2019b/JasPer-1.900.1-iimpi-2019b.eb
  44. 37 0
      intel-2019b/grib_api-1.28.0-iimpi-2019b.eb
  45. 41 0
      intel-2020b/iccifort-2020.4.304.eb
  46. 13 0
      intel-2020b/iccifort-2020.4.304_no_mpi_rt_dependency.patch

+ 33 - 0
foss-2020b/CDO-1.9.9-gompi-2020b.eb

@@ -0,0 +1,33 @@
+easyblock = 'ConfigureMake'
+
+name = 'CDO'
+version = '1.9.9'
+
+homepage = 'https://code.zmaw.de/projects/cdo'
+description = """CDO is a collection of command line Operators to manipulate and analyse Climate and NWP model Data."""
+
+toolchain = {'name': 'gompi', 'version': '2020b'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://code.mpimet.mpg.de/attachments/download/20826/']
+sources = [SOURCELOWER_TAR_GZ]
+
+dependencies = [
+    ('HDF5', '1.10.7'),
+    ('netCDF', '4.7.4'),
+    ('YAXT', '0.6.2'),
+    ('ecCodes', '2.15.0'),
+    ('PROJ', '6.2.1'),
+]
+
+configopts = "--with-hdf5=$EBROOTHDF5 --with-netcdf=$EBROOTNETCDF --with-eccodes=$EBROOTECCODES --with-proj=$EBROOTPROJ"
+
+# fix for linking issues with HDF5 libraries for libcdi, should link with both -lnetcdf and -lhdf5_hl -lhdf5
+prebuildopts = "find libcdi -name Makefile | xargs sed -i 's/-lnetcdf -lnetcdf/-lnetcdf -lhdf5_hl -lhdf5/g' && "
+
+sanity_check_paths = {
+    'files': ['bin/cdo'],
+    'dirs': [],
+}
+
+moduleclass = 'data'

+ 28 - 0
foss-2020b/Doxygen-1.8.20-GCCcore-10.2.0.eb

@@ -0,0 +1,28 @@
+name = 'Doxygen'
+version = '1.8.20'
+
+homepage = 'https://www.doxygen.org'
+description = """
+ Doxygen is a documentation system for C++, C, Java, Objective-C, Python,
+ IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP, C#, and to some
+ extent D.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+
+source_urls = [SOURCEFORGE_SOURCE]
+sources = ['%(namelower)s-%(version)s.src.tar.gz']
+checksums = ['e0db6979286fd7ccd3a99af9f97397f2bae50532e4ecb312aa18862f8401ddec']
+
+builddependencies = [
+    ('binutils', '2.35'),
+    ('Bison', '3.7.1'),
+    ('CMake', '3.18.4'),
+    ('flex', '2.6.4'),
+    ('pkg-config', '0.29.2'),
+]
+dependencies = [('libiconv', '1.16')]
+
+configopts = "-DICONV_DIR=$EBROOTLIBICONV -DICONV_IN_GLIBC=OFF"
+
+moduleclass = 'devel'

+ 133 - 0
foss-2020b/ELIC_Python-1-foss-2020b-Python-3.8.6.eb

@@ -0,0 +1,133 @@
+easyblock = 'PythonBundle'
+
+name = 'ELIC_Python'
+version = '1'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://gogs.elic.ucl.ac.be'
+description = """This repo provides additional Python and R extensions for ELIC ecosystem."""
+
+toolchain = {'name': 'foss', 'version': '2020b'}
+
+builddependencies = [
+    ('pkg-config', '0.29.2'),
+]
+
+dependencies = [
+    ('Python', '3.8.6'),
+    ('SciPy-bundle', '2020.11'),
+    #('matplotlib', '3.1.1', versionsuffix),
+    ('GDAL', '3.2.0', versionsuffix),
+    ('NCL', '6.6.2'),
+    #('CDO', '1.9.9'),
+    #('NCO', '4.9.5'),
+    ('ncview', '2.1.7'),
+    ('libmo_unpack', '3.1.2'),
+    #('orca', '1.3.0'),
+]
+
+exts_defaultclass = 'PythonPackage'
+exts_default_options = {
+    'source_tmpl': '%(name)s-%(version)s.tar.gz',
+}
+
+exts_list = [
+    # Python deps, order is important!
+    ('pip', '20.2.4', {
+        'modulename': 'pip',
+        'source_tmpl': '%(version)s.tar.gz',
+        'source_urls': ['https://github.com/pypa/pip/archive/'],
+    }),
+    ('PyKE', '1.1.1', {
+        'modulename': 'pyke',
+        'source_tmpl': 'pyke3-%(version)s.zip',
+        'source_urls': ['https://sourceforge.net/projects/%(name)s/files/%(name)s/%(version)s'],
+        'use_pip': True,
+    }),
+    ('stratify', '0.1.1', {
+        'modulename': 'stratify',
+        'source_tmpl': 'v%(version)s.tar.gz',
+        'source_urls': ['https://github.com/SciTools-incubator/python-stratify/archive/'],
+    }),
+    #('mo_pack', '0.2.0', {
+    #    'source_tmpl': 'v%(version)s.tar.gz',
+    #    'source_urls': ['https://github.com/SciTools/mo_pack/archive/'],
+    #    'checksums': ['4aa70e1f846b666670843bc2514435dedf7393203e88abaf74d48f8f2717a726'],
+    #}),
+    #('basemap', '1.2.1rel', {
+    #    'modulename': 'mpl_toolkits',
+    #    'source_tmpl': 'v%(version)s.tar.gz',
+    #    'source_urls': ['https://github.com/matplotlib/basemap/archive'],
+    #    'use_pip': True,
+    #}),
+]
+
+modextrapaths = {
+    'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages',
+    'PYTHONUSERBASE': '',
+}
+
+postinstallcmds = [
+    "cd %(installdir)s && " +
+    'pip install setuptools --upgrade && ' +
+    'pip install olefile Pillow pyproj pyshp chardet urllib3 --install-option "--prefix=%(installdir)s" && ' +
+    'pip install OWSLib ' +
+                'netCDF4 ' +
+                'dask ' +
+                'cf-units ' +
+                'Cartopy ' +
+                #'Shapely ' +
+                #'astropy ' +
+                #'tqdm ' +
+                #'cf-units ' +
+                #'cftime ' +
+                #'singledispatch ' +
+                #'backports_abc ' +
+                #'tornado ' +
+                #'toolz ' +
+                #'patsy ' +
+                #'statsmodels ' +
+                #'nc-time-axis ' +
+                #'yamale ' +
+                #'affine ' +
+                #'boto3 ' +
+                #'botocore ' +
+                #'click-plugins ' +
+                #'cligj ' +
+                #'cloudpickle ' +
+                #'fiona ' +
+                #'geopandas ' +
+                #'jmespath ' +
+                #'munch ' +
+                #'networkx ' +
+                #'python-utils ' +
+                #'rasterio ' +
+                #'s3transfer ' +
+                #'snuggs ' +
+                #'xarray ' +
+                #'PyWavelets ' +
+                #'progressbar2 ' +
+                #'scikit-image ' +
+                #'descartes ' +
+                #'graphviz ' +
+                #'Bottleneck ' +
+                #'pickleshare ' +
+                #'prompt_toolkit ' +
+                #'ptyprocess ' +
+                #'pexpect ' +
+                #'typelib ' +
+                #'testpath ' +
+                #'parso ' +
+                #'jedi ' +
+                #'scikit-learn ' +
+                #'ldap3 ' +
+                #'skills ' +
+                #'XlsxWriter ' +
+                #'pyrsistent ' +
+                #'jsonschema ' +
+                #'plotly-charts ' +
+                #'rpy2 ' +
+                '--install-option "--prefix=%(installdir)s" '
+]
+
+moduleclass = 'numlib'

+ 31 - 0
foss-2020b/ESMF-8.0.1-foss-2020b.eb

@@ -0,0 +1,31 @@
+name = 'ESMF'
+version = '8.0.1'
+
+homepage = 'https://www.earthsystemcog.org/projects/esmf/'
+description = """The Earth System Modeling Framework (ESMF) is a suite of software tools for developing
+ high-performance, multi-component Earth science modeling applications."""
+
+toolchain = {'name': 'foss', 'version': '2020b'}
+toolchainopts = {'usempi': True}
+
+source_urls = ['https://github.com/esmf-org/esmf/archive/']
+sources = ['%%(name)s_%s.tar.gz' % '_'.join(version.split('.'))]
+patches = ['ESMF-6.1.1_libopts.patch']
+checksums = [
+    '9172fb73f3fe95c8188d889ee72fdadb4f978b1d969e1d8e401e8d106def1d84',  # ESMF_8_0_1.tar.gz
+    '3851627f07c32a7da55d99072d619942bd3a1d9dd002e1557716158e7aacdaf4',  # ESMF-6.1.1_libopts.patch
+]
+
+dependencies = [
+    ('netCDF', '4.7.4'),
+    ('netCDF-Fortran', '4.5.3'),
+    ('netCDF-C++4', '4.3.1'),
+]
+
+buildopts = 'ESMF_NETCDF_INCLUDE=$EBROOTNETCDFMINFORTRAN/include '
+buildopts += 'ESMF_NETCDF_LIBS="`nc-config --libs` `nf-config --flibs` `ncxx4-config --libs`"'
+
+# too parallel causes the build to become really slow
+maxparallel = 8
+
+moduleclass = 'geo'

+ 23 - 0
foss-2020b/Eigen-3.3.8-GCCcore-10.2.0.eb

@@ -0,0 +1,23 @@
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+
+name = 'Eigen'
+version = '3.3.8'
+
+homepage = 'https://eigen.tuxfamily.org'
+description = """Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers,
+ and related algorithms."""
+
+# only includes header files, but requires CMake so using non-system toolchain
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+
+source_urls = ['https://gitlab.com/libeigen/eigen/-/archive/%(version)s']
+sources = [SOURCELOWER_TAR_BZ2]
+checksums = ['0215c6593c4ee9f1f7f28238c4e8995584ebf3b556e9dbf933d84feb98d5b9ef']
+
+# using CMake built with GCCcore to avoid relying on the system compiler to build it
+builddependencies = [
+    ('binutils', '2.35'),  # to make CMake compiler health check pass on old systems
+    ('CMake', '3.18.4'),
+]
+
+moduleclass = 'math'

+ 17 - 0
foss-2020b/FFTW-3.3.8-gompi-2020b.eb

@@ -0,0 +1,17 @@
+name = 'FFTW'
+version = '3.3.8'
+
+homepage = 'http://www.fftw.org'
+description = """FFTW is a C subroutine library for computing the discrete Fourier transform (DFT)
+ in one or more dimensions, of arbitrary input size, and of both real and complex data."""
+
+toolchain = {'name': 'gompi', 'version': '2020b'}
+toolchainopts = {'pic': True}
+
+source_urls = [homepage]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['6113262f6e92c5bd474f2875fa1b01054c4ad5040f6b0da7c03c98821d9ae303']
+
+runtest = 'check'
+
+moduleclass = 'numlib'

+ 57 - 0
foss-2020b/GDAL-3.2.0-foss-2020b-Python-3.8.6.eb

@@ -0,0 +1,57 @@
+easyblock = 'ConfigureMake'
+
+name = 'GDAL'
+version = '3.2.0'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://www.gdal.org'
+description = """GDAL is a translator library for raster geospatial data formats that is released under an X/MIT style
+ Open Source license by the Open Source Geospatial Foundation. As a library, it presents a single abstract data model
+ to the calling application for all supported formats. It also comes with a variety of useful commandline utilities for
+ data translation and processing."""
+
+toolchain = {'name': 'foss', 'version': '2020b'}
+toolchainopts = {'usempi': True}
+
+source_urls = ['https://download.osgeo.org/gdal/%(version)s/']
+sources = [SOURCELOWER_TAR_XZ]
+patches = ['GDAL-3.0.0_fix-python-CC-CXX.patch']
+
+dependencies = [
+    ('Python', '3.8.6'),
+    ('netCDF', '4.7.4'),
+    ('expat', '2.2.9'),
+    ('GEOS', '3.8.1', versionsuffix),
+    ('SQLite', '3.33.0'),
+    ('libxml2', '2.9.10'),
+    ('libpng', '1.6.37'),
+    ('libjpeg-turbo', '2.0.5'),
+    ('JasPer', '2.0.14'),
+    ('LibTIFF', '4.1.0'),
+    ('zlib', '1.2.11'),
+    ('cURL', '7.72.0'),
+    ('PCRE', '8.44'),
+    ('PROJ', '7.2.0'),
+    ('libgeotiff', '1.6.0'),
+    ('SciPy-bundle', '2020.11'),
+    ('HDF5', '1.10.7'),
+]
+
+preconfigopts = "sed -e 's/-llapack/\$LIBLAPACK/g' -i.eb configure && "
+configopts = '--with-expat=$EBROOTEXPAT --with-libz=$EBROOTLIBZ'
+configopts += ' --without-hdf4 --with-hdf5=$EBROOTHDF5 --with-netcdf=$EBROOTNETCDF'
+configopts += ' --with-xml2=yes --with-geos=$EBROOTGEOS/bin/geos-config --with-jpeg=$EBROOTLIBJPEGMINTURBO'
+configopts += ' --with-png=$EBROOTLIBPNG --with-sqlite3=$EBROOTSQLITE --with-jasper=$EBROOTJASPER'
+configopts += ' --with-libtiff=$EBROOTLIBTIFF --with-pcre=$EBROOTPCRE --with-python=$EBROOTPYTHON/bin/python'
+configopts += ' --with-libgeotiff=$EBROOTLIBGEOTIFF'
+
+modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'}
+
+sanity_check_paths = {
+    'files': ['lib/libgdal.a', 'lib/libgdal.%s' % SHLIB_EXT],
+    'dirs': ['bin', 'include', 'lib/python%(pyshortver)s/site-packages']
+}
+
+sanity_check_commands = ["python -c 'from osgeo import gdal'"]
+
+moduleclass = 'data'

+ 33 - 0
foss-2020b/GEOS-3.8.1-GCC-10.2.0-Python-3.8.6.eb

@@ -0,0 +1,33 @@
+easyblock = 'ConfigureMake'
+
+name = 'GEOS'
+version = '3.8.1'
+versionsuffix = '-Python-%(pyver)s'
+
+homepage = 'https://trac.osgeo.org/geos'
+description = """GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS)"""
+
+toolchain = {'name': 'GCC', 'version': '10.2.0'}
+
+source_urls = ['https://download.osgeo.org/geos/']
+sources = [SOURCELOWER_TAR_BZ2]
+patches = ['GEOS-3.7.2_fix-Python3.patch']
+checksums = [
+    '4258af4308deb9dbb5047379026b4cd9838513627cb943a44e16c40e42ae17f7',  # geos-3.8.1.tar.bz2
+    'e14b54796d9d41261caae64b5a106b4bd8a77f37a51aa9b8ada30d87d208e2e0',  # GEOS-3.7.2_fix-Python3.patch
+]
+
+dependencies = [('Python', '3.8.6')]
+
+builddependencies = [('SWIG', '4.0.2')]
+
+configopts = '--enable-python'
+
+modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'}
+
+sanity_check_paths = {
+    'files': ['bin/geos-config', 'lib/libgeos.%s' % SHLIB_EXT, 'lib/libgeos.a', 'include/geos.h'],
+    'dirs': ['lib/python%(pyshortver)s/site-packages/geos'],
+}
+
+moduleclass = 'math'

+ 25 - 0
foss-2020b/GSL-2.6-GCC-10.2.0.eb

@@ -0,0 +1,25 @@
+easyblock = 'ConfigureMake'
+
+name = 'GSL'
+version = '2.6'
+
+homepage = 'https://www.gnu.org/software/gsl/'
+description = """The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers.
+ The library provides a wide range of mathematical routines such as random number generators, special functions
+ and least-squares fitting."""
+
+toolchain = {'name': 'GCC', 'version': '10.2.0'}
+toolchainopts = {'unroll': True, 'pic': True}
+
+source_urls = [GNU_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['b782339fc7a38fe17689cb39966c4d821236c28018b6593ddb6fd59ee40786a8']
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in ['gsl-config', 'gsl-histogram', 'gsl-randist']] +
+             ['include/gsl/gsl_types.h'] +
+             ['lib/lib%s.%s' % (x, SHLIB_EXT) for x in ['gsl', 'gslcblas']],
+    'dirs': [],
+}
+
+moduleclass = 'numlib'

+ 49 - 0
foss-2020b/HDF-4.2.15-GCCcore-10.2.0.eb

@@ -0,0 +1,49 @@
+easyblock = 'ConfigureMake'
+
+name = 'HDF'
+version = '4.2.15'
+
+homepage = 'https://www.hdfgroup.org/products/hdf4/'
+
+description = """
+ HDF (also known as HDF4) is a library and multi-object file format for
+ storing and managing data between machines.
+"""
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['http://www.hdfgroup.org/ftp/HDF/releases/HDF%(version)s/src/']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['dbeeef525af7c2d01539906c28953f0fdab7dba603d1bc1ec4a5af60d002c459']
+
+builddependencies = [
+    ('binutils', '2.35'),
+    ('Bison', '3.7.1'),
+    ('flex', '2.6.4'),
+]
+
+dependencies = [
+    ('libjpeg-turbo', '2.0.5'),
+    ('Szip', '2.1.1'),
+    ('zlib', '1.2.11'),
+    ('libtirpc', '1.2.6'),
+]
+
+preconfigopts = "LIBS='-ltirpc' "
+configopts = '--with-szlib=$EBROOTSZIP '
+configopts += '--includedir=%(installdir)s/include/%(namelower)s '
+
+modextrapaths = {'CPATH': 'include/hdf'}
+
+sanity_check_paths = {
+    'files': ['bin/h4cc', 'bin/ncdump', 'lib/libdf.a', 'lib/libhdf4.settings', 'lib/libmfhdf.a'],
+    'dirs': ['include/hdf'],
+}
+
+sanity_check_commands = [
+    "h4cc --help",
+    "ncdump -V",
+]
+
+moduleclass = 'data'

+ 21 - 0
foss-2020b/HDF5-1.10.7-gompi-2020b.eb

@@ -0,0 +1,21 @@
+name = 'HDF5'
+version = '1.10.7'
+
+homepage = 'https://portal.hdfgroup.org/display/support'
+description = """HDF5 is a data model, library, and file format for storing and managing data.
+ It supports an unlimited variety of datatypes, and is designed for flexible
+ and efficient I/O and for high volume and complex data."""
+
+toolchain = {'name': 'gompi', 'version': '2020b'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-%(version_major_minor)s/hdf5-%(version)s/src']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['7a1a0a54371275ce2dfc5cd093775bb025c365846512961e7e5ceaecb437ef15']
+
+dependencies = [
+    ('zlib', '1.2.11'),
+    ('Szip', '2.1.1'),
+]
+
+moduleclass = 'data'

+ 21 - 0
foss-2020b/HPL-2.3-foss-2020b.eb

@@ -0,0 +1,21 @@
+name = 'HPL'
+version = '2.3'
+
+homepage = 'https://www.netlib.org/benchmark/hpl/'
+description = """HPL is a software package that solves a (random) dense linear system in double precision (64 bits)
+ arithmetic on distributed-memory computers. It can thus be regarded as a portable as well as freely available
+ implementation of the High Performance Computing Linpack Benchmark."""
+
+toolchain = {'name': 'foss', 'version': '2020b'}
+toolchainopts = {'usempi': True}
+
+source_urls = ['https://www.netlib.org/benchmark/%(namelower)s']
+sources = [SOURCELOWER_TAR_GZ]
+# fix Make dependencies, so parallel build also works
+patches = ['HPL_parallel-make.patch']
+checksums = [
+    '32c5c17d22330e6f2337b681aded51637fb6008d3f0eb7c277b163fadd612830',  # hpl-2.3.tar.gz
+    '2a5bf9c4f328049828ddecec7ba3f05a9e25d236f4212747c53bd22fea80c5e6',  # HPL_parallel-make.patch
+]
+
+moduleclass = 'tools'

+ 49 - 0
foss-2020b/NCL-6.6.2-foss-2020b.eb

@@ -0,0 +1,49 @@
+name = 'NCL'
+version = '6.6.2'
+
+homepage = 'https://www.ncl.ucar.edu'
+description = "NCL is an interpreted language designed specifically for scientific data analysis and visualization."
+
+toolchain = {'name': 'foss', 'version': '2020b'}
+toolchainopts = {'cstd': 'c99', 'openmp': True, 'pic': True}
+
+source_urls = ['https://github.com/NCAR/ncl/archive/']
+sources = ['%(version)s.tar.gz']
+patches = ['NCL-6.4.0_fix-types.patch']
+checksums = [
+    'cad4ee47fbb744269146e64298f9efa206bc03e7b86671e9729d8986bb4bc30e',  # 6.6.2.tar.gz
+    'f6dfaf95e5de9045745e122cb44f9c035f81fab92f5892991ddfe93945891c8f',  # NCL-6.4.0_fix-types.patch
+]
+
+builddependencies = [
+    ('makedepend', '1.0.6'),
+    ('Bison', '3.7.1'),
+    ('flex', '2.6.4'),
+]
+osdependencies = [
+    ('csh')
+]
+dependencies = [
+    ('cURL', '7.72.0'),
+    ('JasPer', '2.0.14'),
+    ('g2lib', '3.1.0'),
+    ('g2clib', '1.6.0'),
+    ('HDF', '4.2.15'),
+    ('HDF5', '1.10.7'),
+    ('netCDF', '4.7.4'),
+    ('netCDF-Fortran', '4.5.3'),
+    ('Szip', '2.1.1'),
+    ('freetype', '2.10.3'),
+    ('zlib', '1.2.11'),
+    ('GDAL', '3.2.0', '-Python-3.8.6'),
+    ('UDUNITS', '2.2.26'),
+    ('ESMF', '8.0.1'),
+    ('bzip2', '1.0.8'),
+    ('cairo', '1.16.0'),
+    ('libiconv', '1.16'),
+    ('GSL', '2.6'),
+    ('libpng', '1.6.37'),
+    ('libjpeg-turbo', '2.0.5'),
+]
+
+moduleclass = 'data'

+ 35 - 0
foss-2020b/NCO-4.9.5-gompi-2020b.eb

@@ -0,0 +1,35 @@
+easyblock = 'ConfigureMake'
+
+name = 'NCO'
+version = '4.9.5'
+
+homepage = "https://nco.sourceforge.net"
+description = """manipulates and analyzes data stored in netCDF-accessible formats, including DAP, HDF4, and HDF5"""
+
+toolchain = {'name': 'gompi', 'version': '2020b'}
+
+source_urls = ['https://github.com/nco/nco/archive/']
+sources = ['%(version)s.tar.gz']
+
+builddependencies = [
+    ('Bison', '3.7.1'),
+    ('flex', '2.6.4'),
+]
+
+dependencies = [
+    ('UDUNITS', '2.2.26'),
+    ('expat', '2.2.7'),
+    ('ANTLR', '2.7.7', '-Java-11'),
+    ('libdap', '3.20.6'),
+    ('GSL', '2.6'),
+    ('netCDF', '4.7.4'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/nc%s' % x for x in ('ap2', 'atted', 'bo', 'diff', 'ea', 'ecat', 'es',
+                                       'flint', 'ks', 'pdq', 'ra', 'rcat', 'rename', 'wa')] +
+             ['lib/libnco.a', 'lib/libnco.%s' % SHLIB_EXT, 'lib/libnco_c++.a', 'lib/libnco_c++.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+moduleclass = 'tools'

+ 28 - 0
foss-2020b/OpenBLAS-0.3.12-GCC-10.2.0.eb

@@ -0,0 +1,28 @@
+name = 'OpenBLAS'
+version = '0.3.12'
+
+homepage = 'https://xianyi.github.com/OpenBLAS/'
+description = "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version."
+
+toolchain = {'name': 'GCC', 'version': '10.2.0'}
+
+source_urls = [
+    # order matters, trying to download the large.tgz/timing.tgz LAPACK tarballs from GitHub causes trouble
+    'https://www.netlib.org/lapack/timing/',
+    'https://github.com/xianyi/OpenBLAS/archive/',
+]
+sources = ['v%(version)s.tar.gz']
+patches = [
+    ('large.tgz', '.'),
+    ('timing.tgz', '.'),
+]
+checksums = [
+    '65a7d3a4010a4e3bd5c0baa41a234797cd3a1735449a4a5902129152601dc57b',  # v0.3.12.tar.gz
+    'f328d88b7fa97722f271d7d0cfea1c220e0f8e5ed5ff01d8ef1eb51d6f4243a1',  # large.tgz
+    '999c65f8ea8bd4eac7f1c7f3463d4946917afd20a997807300fe35d70122f3af',  # timing.tgz
+]
+
+# extensive testing can be enabled by uncommenting the line below
+# runtest = 'PATH=.:$PATH lapack-timing'
+
+moduleclass = 'numlib'

+ 41 - 0
foss-2020b/PROJ-7.2.0-GCCcore-10.2.0.eb

@@ -0,0 +1,41 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+#
+# Copyright:: Copyright 2014-2015 The Cyprus Institute
+# Authors:: Thekla Loizou <t.loizou@cyi.ac.cy>
+# License:: MIT/GPL
+#
+##
+easyblock = 'ConfigureMake'
+
+name = 'PROJ'
+version = '7.2.0'
+
+homepage = 'https://proj.org'
+description = """Program proj is a standard Unix filter function which converts
+geographic longitude and latitude coordinates into cartesian coordinates"""
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://download.osgeo.org/proj/']
+sources = [SOURCELOWER_TAR_GZ]
+
+builddependencies = [
+    ('pkg-config', '0.29.2'),
+    ('binutils', '2.35'),
+]
+
+dependencies = [
+    ('SQLite', '3.33.0'),
+    ('LibTIFF', '4.1.0'),
+    ('cURL', '7.72.0'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/cct', 'bin/cs2cs', 'bin/geod', 'bin/gie', 'bin/proj', 'bin/projinfo',
+              'lib/libproj.a', 'lib/libproj.%s' % SHLIB_EXT],
+    'dirs': ['include'],
+}
+
+moduleclass = 'lib'

+ 23 - 0
foss-2020b/SWIG-4.0.2-GCCcore-10.2.0.eb

@@ -0,0 +1,23 @@
+name = 'SWIG'
+version = '4.0.2'
+
+homepage = 'http://www.swig.org/'
+description = """SWIG is a software development tool that connects programs written in C and C++ with
+ a variety of high-level programming languages."""
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+toolchainopts = {'pic': True}
+
+source_urls = [SOURCEFORGE_SOURCE]
+sources = [SOURCELOWER_TAR_GZ]
+
+builddependencies = [('binutils', '2.35')]
+
+dependencies = [
+    ('zlib', '1.2.11'),
+    ('PCRE', '8.44'),
+]
+
+configopts = '--without-alllang --with-boost=no'
+
+moduleclass = 'devel'

+ 23 - 0
foss-2020b/ScaLAPACK-2.1.0-gompi-2020b.eb

@@ -0,0 +1,23 @@
+name = 'ScaLAPACK'
+version = '2.1.0'
+
+homepage = 'https://www.netlib.org/scalapack/'
+description = """The ScaLAPACK (or Scalable LAPACK) library includes a subset of LAPACK routines
+ redesigned for distributed memory MIMD parallel computers."""
+
+toolchain = {'name': 'gompi', 'version': '2020b'}
+toolchainopts = {'pic': True}
+
+source_urls = [homepage]
+sources = [SOURCELOWER_TGZ]
+patches = ['ScaLAPACK-%(version)s_fix-GCC-10.patch']
+checksums = [
+    '61d9216cf81d246944720cfce96255878a3f85dec13b9351f1fa0fd6768220a6',  # scalapack-2.1.0.tgz
+    'bbb713c9fcabac802811c7f2c3a957c2d5d19dfd118ed1f6578c1436b82c7c43',  # ScaLAPACK-2.1.0_fix-GCC-10.patch
+]
+
+builddependencies = [('CMake', '3.18.4')]
+
+dependencies = [('OpenBLAS', '0.3.12')]
+
+moduleclass = 'numlib'

+ 5683 - 0
foss-2020b/ScaLAPACK-2.1.0_fix-GCC-10.patch

@@ -0,0 +1,5683 @@
+fix compilation errors with GCC 10
+see https://github.com/Reference-ScaLAPACK/scalapack/pull/26 and https://github.com/Reference-ScaLAPACK/scalapack/issues/21
+
+From 9c909f06cf51a3d00252323ce52aba46cc64ab41 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tiziano=20M=C3=BCller?= <tiziano.mueller@chem.uzh.ch>
+Date: Thu, 25 Jun 2020 18:36:46 +0200
+Subject: [PATCH 1/2] fix argument mismatches in the SRC
+
+---
+ SRC/pclarf.f   |  80 +++++++++++++++++-----------------
+ SRC/pclarfc.f  |  88 ++++++++++++++++++-------------------
+ SRC/pclarz.f   | 111 ++++++++++++++++++++++++-----------------------
+ SRC/pclarzc.f  | 115 +++++++++++++++++++++++++------------------------
+ SRC/pclattrs.f |  55 +++++++++++------------
+ SRC/pclawil.f  |  53 +++++++++++------------
+ SRC/pctrevc.f  |  20 +++++----
+ SRC/pdhseqr.f  |  36 ++++++++--------
+ SRC/pdlacon.f  |  36 ++++++++--------
+ SRC/pdlarf.f   |  80 +++++++++++++++++-----------------
+ SRC/pdlarz.f   | 100 +++++++++++++++++++++---------------------
+ SRC/pdlawil.f  |  48 ++++++++++-----------
+ SRC/pdstebz.f  |  20 ++++-----
+ SRC/pdtrord.f  |  43 +++++++++++-------
+ SRC/pdtrsen.f  |  24 ++++++-----
+ SRC/pshseqr.f  |  36 ++++++++--------
+ SRC/pslacon.f  |  36 +++++++++-------
+ SRC/pslarf.f   |  80 +++++++++++++++++-----------------
+ SRC/pslarz.f   | 100 +++++++++++++++++++++---------------------
+ SRC/pslawil.f  |  50 +++++++++++----------
+ SRC/psstebz.f  |  20 ++++-----
+ SRC/pstrord.f  |  45 +++++++++++--------
+ SRC/pstrsen.f  |  22 ++++++----
+ SRC/pzlarf.f   |  80 +++++++++++++++++-----------------
+ SRC/pzlarfc.f  |  88 ++++++++++++++++++-------------------
+ SRC/pzlarz.f   | 103 +++++++++++++++++++++----------------------
+ SRC/pzlarzc.f  | 111 ++++++++++++++++++++++++-----------------------
+ SRC/pzlattrs.f |  55 +++++++++++------------
+ SRC/pzlawil.f  |  49 +++++++++++----------
+ SRC/pztrevc.f  |  20 +++++----
+ 30 files changed, 927 insertions(+), 877 deletions(-)
+
+diff --git a/SRC/pclarf.f b/SRC/pclarf.f
+index f941e46..371f710 100644
+--- a/SRC/pclarf.f
++++ b/SRC/pclarf.f
+@@ -242,7 +242,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+      $                   IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC,
+      $                   LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW,
+      $                   NQ, RDEST
+-      COMPLEX            TAULOC
++      COMPLEX            TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, CCOPY, CGEBR2D, CGEBS2D,
+@@ -336,7 +336,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+                   ELSE
+ *
+@@ -345,7 +345,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -363,8 +363,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+-                     CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                           1, C( IOFFC ), LDC )
++                     CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                           WORK( IPW ), 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -379,9 +379,9 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYCOL.EQ.ICCOL ) THEN
+ *
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -398,7 +398,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL CGERC( MP, NQ, -TAULOC, V( IOFFV ), 1,
++                        CALL CGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1,
+      $                              WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -421,9 +421,9 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = MP+1
+                      CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -441,7 +441,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL CGERC( MP, NQ, -TAULOC, WORK, 1,
++                        CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                              WORK( IPW ), 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -471,7 +471,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+@@ -480,7 +480,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -500,8 +500,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                           1, C( IOFFC ), LDC )
++     $               CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                           WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -516,18 +516,18 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( JJV )
+                   CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+                   IPW = MP+1
+                   CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -547,8 +547,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                           1, C( IOFFC ), LDC )
++     $               CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                           WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+@@ -577,9 +577,9 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYROW.EQ.ICROW ) THEN
+ *
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -597,7 +597,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+                         IF( IOFFV.GT.0 .AND. IOFFC.GT.0 )
+-     $                     CALL CGERC( MP, NQ, -TAULOC, WORK, 1,
++     $                     CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                                 V( IOFFV ), LDV, C( IOFFC ),
+      $                                 LDC )
+                      END IF
+@@ -621,9 +621,9 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = NQ+1
+                      CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -641,8 +641,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1,
+-     $                              WORK, 1, C( IOFFC ), LDC )
++                        CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ),
++     $                              1, WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -667,7 +667,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+                   ELSE
+ *
+@@ -676,7 +676,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -694,8 +694,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                           1, C( IOFFC ), LDC )
++                     CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                           WORK, 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -720,18 +720,18 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( IIV )
+                   CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+                   IPW = NQ+1
+                   CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -750,8 +750,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                           1, C( IOFFC ), LDC )
++     $               CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                           WORK, 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -770,7 +770,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+@@ -779,7 +779,7 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -797,8 +797,8 @@ SUBROUTINE PCLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1,
+-     $                        C( IOFFC ), LDC )
++                  CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pclarfc.f b/SRC/pclarfc.f
+index d6a2d3b..f84c493 100644
+--- a/SRC/pclarfc.f
++++ b/SRC/pclarfc.f
+@@ -242,7 +242,7 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+      $                   IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC,
+      $                   LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW,
+      $                   NQ, RDEST
+-      COMPLEX            TAULOC
++      COMPLEX            TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, CCOPY, CGEBR2D, CGEBS2D,
+@@ -336,17 +336,17 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = CONJG( TAU( IIV ) )
++                     TAULOC( 1 ) = CONJG( TAU( IIV ) )
+ *
+                   ELSE
+ *
+                      CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAULOC, 1, IVROW, MYCOL )
+-                     TAULOC = CONJG( TAULOC )
++                     TAULOC( 1 ) = CONJG( TAULOC( 1 ) )
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -364,8 +364,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+-                     CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                           1, C( IOFFC ), LDC )
++                     CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                           WORK( IPW ), 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -380,9 +380,9 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYCOL.EQ.ICCOL ) THEN
+ *
+-                     TAULOC = CONJG( TAU( JJV ) )
++                     TAULOC( 1 ) = CONJG( TAU( JJV ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -399,7 +399,7 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL CGERC( MP, NQ, -TAULOC, V( IOFFV ), 1,
++                        CALL CGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1,
+      $                              WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -422,9 +422,9 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = MP+1
+                      CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = CONJG( WORK( IPW ) )
++                     TAULOC( 1 ) = CONJG( WORK( IPW ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -442,7 +442,7 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL CGERC( MP, NQ, -TAULOC, WORK, 1,
++                        CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                              WORK( IPW ), 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -472,17 +472,17 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = CONJG( TAU( IIV ) )
++                  TAULOC( 1 ) = CONJG( TAU( IIV ) )
+ *
+                ELSE
+ *
+                   CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC,
+      $                          1, IVROW, MYCOL )
+-                  TAULOC = CONJG( TAULOC )
++                  TAULOC( 1 ) = CONJG( TAULOC( 1 ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -500,8 +500,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+-                  CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1,
+-     $                        C( IOFFC ), LDC )
++                  CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -516,18 +516,18 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( JJV )
+                   CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = CONJG( TAU( JJV ) )
++                  TAULOC( 1 ) = CONJG( TAU( JJV ) )
+ *
+                ELSE
+ *
+                   IPW = MP+1
+                   CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = CONJG( WORK( IPW ) )
++                  TAULOC( 1 ) = CONJG( WORK( IPW ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -545,8 +545,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+-                  CALL CGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1,
+-     $                        C( IOFFC ), LDC )
++                  CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+@@ -575,9 +575,9 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYROW.EQ.ICROW ) THEN
+ *
+-                     TAULOC = CONJG( TAU( IIV ) )
++                     TAULOC( 1 ) = CONJG( TAU( IIV ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -594,7 +594,7 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL CGERC( MP, NQ, -TAULOC, WORK, 1,
++                        CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                              V( IOFFV ), LDV, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -617,9 +617,9 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = NQ+1
+                      CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = CONJG( WORK( IPW ) )
++                     TAULOC( 1 ) = CONJG( WORK( IPW ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -637,8 +637,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1,
+-     $                              WORK, 1, C( IOFFC ), LDC )
++                        CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ),
++     $                              1, WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -663,17 +663,17 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = CONJG( TAU( JJV ) )
++                     TAULOC( 1 ) = CONJG( TAU( JJV ) )
+ *
+                   ELSE
+ *
+                      CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC,
+      $                             1, MYROW, IVCOL )
+-                     TAULOC = CONJG( TAULOC )
++                     TAULOC( 1 ) = CONJG( TAULOC( 1 ) )
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -691,8 +691,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                           1, C( IOFFC ), LDC )
++                     CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                           WORK, 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -716,18 +716,18 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( IIV )
+                   CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = CONJG( TAU( IIV ) )
++                  TAULOC( 1 ) = CONJG( TAU( IIV ) )
+ *
+                ELSE
+ *
+                   IPW = NQ+1
+                   CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = CONJG( WORK( IPW ) )
++                  TAULOC( 1 ) = CONJG( WORK( IPW ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -745,8 +745,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1,
+-     $                        C( IOFFC ), LDC )
++                  CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -765,17 +765,17 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = CONJG( TAU( JJV ) )
++                  TAULOC( 1 ) = CONJG( TAU( JJV ) )
+ *
+                ELSE
+ *
+                   CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1,
+      $                          MYROW, IVCOL )
+-                  TAULOC = CONJG( TAULOC )
++                  TAULOC( 1 ) = CONJG( TAULOC( 1 ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -793,8 +793,8 @@ SUBROUTINE PCLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL CGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1,
+-     $                        C( IOFFC ), LDC )
++                  CALL CGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pclarz.f b/SRC/pclarz.f
+index 9ba730c..673860a 100644
+--- a/SRC/pclarz.f
++++ b/SRC/pclarz.f
+@@ -251,7 +251,7 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                   IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2,
+      $                   MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW,
+      $                   NQC2, NQV, RDEST
+-      COMPLEX            TAULOC
++      COMPLEX            TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, CAXPY, CCOPY, CGEBR2D,
+@@ -370,7 +370,7 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+                   ELSE
+ *
+@@ -379,7 +379,7 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -402,9 +402,9 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+                      IF( MYROW.EQ.ICROW1 )
+-     $                  CALL CAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                  CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                              MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                     CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1,
++                     CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                           WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+@@ -420,9 +420,9 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYCOL.EQ.ICCOL2 ) THEN
+ *
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -445,11 +445,11 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL CAXPY( NQC2, -TAULOC, WORK,
++     $                     CALL CAXPY( NQC2, -TAULOC( 1 ), WORK,
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL CGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1,
+-     $                              WORK, 1, C( IOFFC2 ), LDC )
++                        CALL CGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ),
++     $                              1, WORK, 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -471,9 +471,9 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = MPV+1
+                      CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -496,10 +496,10 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL CAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                     CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1,
++                        CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                              WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+@@ -530,16 +530,16 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+-                  CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC,
+-     $                          1, IVROW, MYCOL )
++                  CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1,
++     $                          TAULOC( 1 ), 1, IVROW, MYCOL )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -562,10 +562,10 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL CAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -580,18 +580,18 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( JJV )
+                   CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+                   IPW = MPV+1
+                   CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -614,10 +614,10 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL CAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+@@ -646,9 +646,9 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYROW.EQ.ICROW2 ) THEN
+ *
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -669,13 +669,13 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                               ICCOL2 )
+ *
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL CAXPY( MPC2, -TAULOC, WORK, 1,
++     $                     CALL CAXPY( MPC2, -TAULOC( 1 ), WORK, 1,
+      $                                 C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+                         IF( MPC2.GT.0 .AND. NQV.GT.0 )
+-     $                     CALL CGERC( MPC2, NQV, -TAULOC, WORK, 1,
++     $                     CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1,
+      $                                 V( IOFFV ), LDV, C( IOFFC2 ),
+      $                                 LDC )
+                      END IF
+@@ -699,9 +699,9 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = NQV+1
+                      CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -720,13 +720,14 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                                WORK( IPW ), MAX( 1, MPC2 ),
+      $                                RDEST, ICCOL2 )
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
+-     $                                 C( IOFFC1 ), 1 )
++     $                     CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ),
++     $                                 1, C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
+-     $                              WORK, 1, C( IOFFC2 ), LDC )
++                        CALL CGERC( MPC2, NQV, -TAULOC( 1 ),
++     $                              WORK( IPW ), 1, WORK, 1,
++     $                              C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -751,16 +752,16 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+                   ELSE
+ *
+-                     CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC,
+-     $                             1, MYROW, IVCOL )
++                     CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1,
++     $                             TAULOC( 1 ), 1, MYROW, IVCOL )
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -779,13 +780,13 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                             WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                             ICCOL2 )
+                      IF( MYCOL.EQ.ICCOL1 )
+-     $                  CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $                  CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                              C( IOFFC1 ), 1 )
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
+-     $                           WORK, 1, C( IOFFC2 ), LDC )
++                     CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ),
++     $                           1, WORK, 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+                END IF
+@@ -809,18 +810,18 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( IIV )
+                   CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+                   IPW = NQV+1
+                   CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -840,13 +841,13 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -865,7 +866,7 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+@@ -874,7 +875,7 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -893,13 +894,13 @@ SUBROUTINE PCLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pclarzc.f b/SRC/pclarzc.f
+index f1bc21e..b6d3b6d 100644
+--- a/SRC/pclarzc.f
++++ b/SRC/pclarzc.f
+@@ -251,7 +251,7 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                   IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2,
+      $                   MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW,
+      $                   NQC2, NQV, RDEST
+-      COMPLEX            TAULOC
++      COMPLEX            TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, CAXPY, CCOPY, CGEBR2D,
+@@ -370,17 +370,17 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = CONJG( TAU( IIV ) )
++                     TAULOC( 1 ) = CONJG( TAU( IIV ) )
+ *
+                   ELSE
+ *
+                      CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAULOC, 1, IVROW, MYCOL )
+-                     TAULOC = CONJG( TAULOC )
++                     TAULOC( 1 ) = CONJG( TAULOC( 1 ) )
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -403,9 +403,9 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+                      IF( MYROW.EQ.ICROW1 )
+-     $                  CALL CAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                  CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                              MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                     CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1,
++                     CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                           WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+@@ -421,9 +421,9 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYCOL.EQ.ICCOL2 ) THEN
+ *
+-                     TAULOC = CONJG( TAU( JJV ) )
++                     TAULOC( 1 ) = CONJG( TAU( JJV ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -446,11 +446,11 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL CAXPY( NQC2, -TAULOC, WORK,
++     $                     CALL CAXPY( NQC2, -TAULOC( 1 ), WORK,
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL CGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1,
+-     $                              WORK, 1, C( IOFFC2 ), LDC )
++                        CALL CGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ),
++     $                              1, WORK, 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -472,9 +472,9 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = MPV+1
+                      CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = CONJG( WORK( IPW ) )
++                     TAULOC( 1 ) = CONJG( WORK( IPW ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -497,10 +497,10 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL CAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                     CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1,
++                        CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                              WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+@@ -531,17 +531,17 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL CGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = CONJG( TAU( IIV ) )
++                  TAULOC( 1 ) = CONJG( TAU( IIV ) )
+ *
+                ELSE
+ *
+                   CALL CGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC,
+      $                          1, IVROW, MYCOL )
+-                  TAULOC = CONJG( TAULOC )
++                  TAULOC( 1 ) = CONJG( TAULOC( 1 ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -564,10 +564,10 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL CAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -582,18 +582,18 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( JJV )
+                   CALL CGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = CONJG( TAU( JJV ) )
++                  TAULOC( 1 ) = CONJG( TAU( JJV ) )
+ *
+                ELSE
+ *
+                   IPW = MPV+1
+                   CALL CGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = CONJG( WORK( IPW ) )
++                  TAULOC( 1 ) = CONJG( WORK( IPW ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -616,10 +616,10 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL CAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL CAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL CGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL CGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+@@ -648,9 +648,9 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYROW.EQ.ICROW2 ) THEN
+ *
+-                     TAULOC = CONJG( TAU( IIV ) )
++                     TAULOC( 1 ) = CONJG( TAU( IIV ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -671,12 +671,12 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                               ICCOL2 )
+ *
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL CAXPY( MPC2, -TAULOC, WORK, 1,
++     $                     CALL CAXPY( MPC2, -TAULOC( 1 ), WORK, 1,
+      $                                 C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL CGERC( MPC2, NQV, -TAULOC, WORK, 1,
++                        CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1,
+      $                              V( IOFFV ), LDV, C( IOFFC2 ), LDC )
+                      END IF
+ *
+@@ -699,9 +699,9 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = NQV+1
+                      CALL CGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = CONJG( WORK( IPW ) )
++                     TAULOC( 1 ) = CONJG( WORK( IPW ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -720,13 +720,14 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                                WORK( IPW ), MAX( 1, MPC2 ),
+      $                                RDEST, ICCOL2 )
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
+-     $                                 C( IOFFC1 ), 1 )
++     $                     CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ),
++     $                                 1, C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
+-     $                              WORK, 1, C( IOFFC2 ), LDC )
++                        CALL CGERC( MPC2, NQV, -TAULOC( 1 ),
++     $                              WORK( IPW ), 1, WORK, 1,
++     $                              C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -751,17 +752,17 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = CONJG( TAU( JJV ) )
++                     TAULOC( 1 ) = CONJG( TAU( JJV ) )
+ *
+                   ELSE
+ *
+                      CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC,
+      $                             1, MYROW, IVCOL )
+-                     TAULOC = CONJG( TAULOC )
++                     TAULOC( 1 ) = CONJG( TAULOC( 1 ) )
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -780,13 +781,13 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                             WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                             ICCOL2 )
+                      IF( MYCOL.EQ.ICCOL1 )
+-     $                  CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $                  CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                              C( IOFFC1 ), 1 )
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
+-     $                           WORK, 1, C( IOFFC2 ), LDC )
++                     CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ),
++     $                           1, WORK, 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+                END IF
+@@ -810,18 +811,18 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( IIV )
+                   CALL CGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = CONJG( TAU( IIV ) )
++                  TAULOC( 1 ) = CONJG( TAU( IIV ) )
+ *
+                ELSE
+ *
+                   IPW = NQV+1
+                   CALL CGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = CONJG( WORK( IPW ) )
++                  TAULOC( 1 ) = CONJG( WORK( IPW ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -841,13 +842,13 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -866,17 +867,17 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL CGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = CONJG( TAU( JJV ) )
++                  TAULOC( 1 ) = CONJG( TAU( JJV ) )
+ *
+                ELSE
+ *
+-                  CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1,
+-     $                          MYROW, IVCOL )
+-                  TAULOC = CONJG( TAULOC )
++                  CALL CGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1,
++     $                          TAULOC( 1 ), 1, MYROW, IVCOL )
++                  TAULOC( 1 ) = CONJG( TAULOC( 1 ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -895,13 +896,13 @@ SUBROUTINE PCLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL CAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL CAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL CGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL CGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pclattrs.f b/SRC/pclattrs.f
+index c744aea..0d12a8b 100644
+--- a/SRC/pclattrs.f
++++ b/SRC/pclattrs.f
+@@ -271,7 +271,8 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+      $                   JINC, JLAST, LDA, LDX, MB, MYCOL, MYROW, NB,
+      $                   NPCOL, NPROW, RSRC
+       REAL               BIGNUM, GROW, REC, SMLNUM, TJJ, TMAX, TSCAL,
+-     $                   XBND, XJ, XMAX
++     $                   XBND, XJ
++      REAL               XMAX( 1 )
+       COMPLEX            CSUMJ, TJJS, USCAL, XJTMP, ZDUM
+ *     ..
+ *     .. External Functions ..
+@@ -391,11 +392,11 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+ *     Compute a bound on the computed solution vector to see if the
+ *     Level 2 PBLAS routine PCTRSV can be used.
+ *
+-      XMAX = ZERO
++      XMAX( 1 ) = ZERO
+       CALL PCAMAX( N, ZDUM, IMAX, X, IX, JX, DESCX, 1 )
+-      XMAX = CABS2( ZDUM )
++      XMAX( 1 ) = CABS2( ZDUM )
+       CALL SGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, -1, -1 )
+-      XBND = XMAX
++      XBND = XMAX( 1 )
+ *
+       IF( NOTRAN ) THEN
+ *
+@@ -590,16 +591,16 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+ *
+ *        Use a Level 1 PBLAS solve, scaling intermediate results.
+ *
+-         IF( XMAX.GT.BIGNUM*HALF ) THEN
++         IF( XMAX( 1 ).GT.BIGNUM*HALF ) THEN
+ *
+ *           Scale X so that its components are less than or equal to
+ *           BIGNUM in absolute value.
+ *
+-            SCALE = ( BIGNUM*HALF ) / XMAX
++            SCALE = ( BIGNUM*HALF ) / XMAX( 1 )
+             CALL PCSSCAL( N, SCALE, X, IX, JX, DESCX, 1 )
+-            XMAX = BIGNUM
++            XMAX( 1 ) = BIGNUM
+          ELSE
+-            XMAX = XMAX*TWO
++            XMAX( 1 ) = XMAX( 1 )*TWO
+          END IF
+ *
+          IF( NOTRAN ) THEN
+@@ -651,7 +652,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                         CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                         XJTMP = XJTMP*REC
+                         SCALE = SCALE*REC
+-                        XMAX = XMAX*REC
++                        XMAX( 1 ) = XMAX( 1 )*REC
+                      END IF
+                   END IF
+ *                 X( J ) = CLADIV( X( J ), TJJS )
+@@ -682,7 +683,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                      XJTMP = XJTMP*REC
+                      SCALE = SCALE*REC
+-                     XMAX = XMAX*REC
++                     XMAX( 1 ) = XMAX( 1 )*REC
+                   END IF
+ *                 X( J ) = CLADIV( X( J ), TJJS )
+ *                 XJ = CABS1( X( J ) )
+@@ -706,7 +707,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                   XJTMP = CONE
+                   XJ = ONE
+                   SCALE = ZERO
+-                  XMAX = ZERO
++                  XMAX( 1 ) = ZERO
+                END IF
+    90          CONTINUE
+ *
+@@ -715,7 +716,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+ *
+                IF( XJ.GT.ONE ) THEN
+                   REC = ONE / XJ
+-                  IF( CNORM( J ).GT.( BIGNUM-XMAX )*REC ) THEN
++                  IF( CNORM( J ).GT.( BIGNUM-XMAX( 1 ) )*REC ) THEN
+ *
+ *                    Scale x by 1/(2*abs(x(j))).
+ *
+@@ -724,7 +725,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      XJTMP = XJTMP*REC
+                      SCALE = SCALE*REC
+                   END IF
+-               ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX ) ) THEN
++               ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX( 1 ) ) ) THEN
+ *
+ *                 Scale x by 1/2.
+ *
+@@ -743,7 +744,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      CALL PCAXPY( J-1, ZDUM, A, IA, JA+J-1, DESCA, 1, X,
+      $                            IX, JX, DESCX, 1 )
+                      CALL PCAMAX( J-1, ZDUM, IMAX, X, IX, JX, DESCX, 1 )
+-                     XMAX = CABS1( ZDUM )
++                     XMAX( 1 ) = CABS1( ZDUM )
+                      CALL SGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1,
+      $                             -1, -1 )
+                   END IF
+@@ -757,7 +758,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      CALL PCAXPY( N-J, ZDUM, A, IA+J, JA+J-1, DESCA, 1,
+      $                            X, IX+J, JX, DESCX, 1 )
+                      CALL PCAMAX( N-J, ZDUM, I, X, IX+J, JX, DESCX, 1 )
+-                     XMAX = CABS1( ZDUM )
++                     XMAX( 1 ) = CABS1( ZDUM )
+                      CALL SGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1,
+      $                             -1, -1 )
+                   END IF
+@@ -785,7 +786,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                END IF
+                XJ = CABS1( XJTMP )
+                USCAL = CMPLX( TSCAL )
+-               REC = ONE / MAX( XMAX, ONE )
++               REC = ONE / MAX( XMAX( 1 ), ONE )
+                IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN
+ *
+ *                 If x(j) could overflow, scale x by 1/(2*XMAX).
+@@ -820,7 +821,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                      XJTMP = XJTMP*REC
+                      SCALE = SCALE*REC
+-                     XMAX = XMAX*REC
++                     XMAX( 1 ) = XMAX( 1 )*REC
+                   END IF
+                END IF
+ *
+@@ -924,7 +925,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                            CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                            XJTMP = XJTMP*REC
+                            SCALE = SCALE*REC
+-                           XMAX = XMAX*REC
++                           XMAX( 1 ) = XMAX( 1 )*REC
+                         END IF
+                      END IF
+ *                    X( J ) = CLADIV( X( J ), TJJS )
+@@ -945,7 +946,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                         CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                         XJTMP = XJTMP*REC
+                         SCALE = SCALE*REC
+-                        XMAX = XMAX*REC
++                        XMAX( 1 ) = XMAX( 1 )*REC
+                      END IF
+ *                    X( J ) = CLADIV( X( J ), TJJS )
+                      XJTMP = CLADIV( XJTMP, TJJS )
+@@ -966,7 +967,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      END IF
+                      XJTMP = CONE
+                      SCALE = ZERO
+-                     XMAX = ZERO
++                     XMAX( 1 ) = ZERO
+                   END IF
+   110             CONTINUE
+                ELSE
+@@ -981,7 +982,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      X( IROWX ) = XJTMP
+                   END IF
+                END IF
+-               XMAX = MAX( XMAX, CABS1( XJTMP ) )
++               XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) )
+   120       CONTINUE
+ *
+          ELSE
+@@ -1004,7 +1005,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                END IF
+                XJ = CABS1( XJTMP )
+                USCAL = TSCAL
+-               REC = ONE / MAX( XMAX, ONE )
++               REC = ONE / MAX( XMAX( 1 ), ONE )
+                IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN
+ *
+ *                 If x(j) could overflow, scale x by 1/(2*XMAX).
+@@ -1039,7 +1040,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                      XJTMP = XJTMP*REC
+                      SCALE = SCALE*REC
+-                     XMAX = XMAX*REC
++                     XMAX( 1 ) = XMAX( 1 )*REC
+                   END IF
+                END IF
+ *
+@@ -1145,7 +1146,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                            CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                            XJTMP = XJTMP*REC
+                            SCALE = SCALE*REC
+-                           XMAX = XMAX*REC
++                           XMAX( 1 ) = XMAX( 1 )*REC
+                         END IF
+                      END IF
+ *                    X( J ) = CLADIV( X( J ), TJJS )
+@@ -1164,7 +1165,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                         CALL PCSSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                         XJTMP = XJTMP*REC
+                         SCALE = SCALE*REC
+-                        XMAX = XMAX*REC
++                        XMAX( 1 ) = XMAX( 1 )*REC
+                      END IF
+ *                    X( J ) = CLADIV( X( J ), TJJS )
+                      XJTMP = CLADIV( XJTMP, TJJS )
+@@ -1181,7 +1182,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+      $                  X( IROWX ) = CONE
+                      XJTMP = CONE
+                      SCALE = ZERO
+-                     XMAX = ZERO
++                     XMAX( 1 ) = ZERO
+                   END IF
+   130             CONTINUE
+                ELSE
+@@ -1194,7 +1195,7 @@ SUBROUTINE PCLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                   IF( ( MYROW.EQ.ITMP1X ) .AND. ( MYCOL.EQ.ITMP2X ) )
+      $               X( IROWX ) = XJTMP
+                END IF
+-               XMAX = MAX( XMAX, CABS1( XJTMP ) )
++               XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) )
+   140       CONTINUE
+          END IF
+          SCALE = SCALE / TSCAL
+diff --git a/SRC/pclawil.f b/SRC/pclawil.f
+index 24a49b9..b33b3b1 100644
+--- a/SRC/pclawil.f
++++ b/SRC/pclawil.f
+@@ -124,11 +124,10 @@ SUBROUTINE PCLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+      $                   MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT,
+      $                   RSRC, UP
+       REAL               S
+-      COMPLEX            CDUM, H11, H12, H21, H22, H33S, H44S, V1, V2,
+-     $                   V3
++      COMPLEX            CDUM, H22, H33S, H44S, V1, V2
+ *     ..
+ *     .. Local Arrays ..
+-      COMPLEX            BUF( 4 )
++      COMPLEX            BUF( 4 ), V3( 1 ), H11( 1 ), H12( 1 ), H21( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, INFOG2L, CGERV2D, CGESD2D
+@@ -181,18 +180,18 @@ SUBROUTINE PCLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+             IF( NPCOL.GT.1 ) THEN
+                CALL CGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT )
+             ELSE
+-               V3 = A( ( ICOL-2 )*LDA+IROW )
++               V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+             END IF
+             IF( NUM.GT.1 ) THEN
+                CALL CGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT )
+-               H11 = BUF( 1 )
+-               H21 = BUF( 2 )
+-               H12 = BUF( 3 )
++               H11( 1 ) = BUF( 1 )
++               H21( 1 ) = BUF( 2 )
++               H12( 1 ) = BUF( 3 )
+                H22 = BUF( 4 )
+             ELSE
+-               H11 = A( ( ICOL-3 )*LDA+IROW-2 )
+-               H21 = A( ( ICOL-3 )*LDA+IROW-1 )
+-               H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++               H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
++               H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
++               H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+                H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+             END IF
+          END IF
+@@ -223,22 +222,22 @@ SUBROUTINE PCLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+             CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL,
+      $                    IROW, ICOL, RSRC, JSRC )
+             IF( NUM.GT.1 ) THEN
+-               CALL CGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT )
++               CALL CGERV2D( CONTXT, 1, 1, H11( 1 ), 1, UP, LEFT )
+             ELSE
+-               H11 = A( ( ICOL-3 )*LDA+IROW-2 )
++               H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
+             END IF
+             IF( NPROW.GT.1 ) THEN
+                CALL CGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL )
+             ELSE
+-               H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++               H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+             END IF
+             IF( NPCOL.GT.1 ) THEN
+-               CALL CGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT )
++               CALL CGERV2D( CONTXT, 1, 1, H21( 1 ), 1, MYROW, LEFT )
+             ELSE
+-               H21 = A( ( ICOL-3 )*LDA+IROW-1 )
++               H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
+             END IF
+             H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+-            V3 = A( ( ICOL-2 )*LDA+IROW )
++            V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+          END IF
+       END IF
+       IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) )
+@@ -247,24 +246,24 @@ SUBROUTINE PCLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+       IF( MODKM1.GT.1 ) THEN
+          CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL,
+      $                 IROW, ICOL, RSRC, JSRC )
+-         H11 = A( ( ICOL-3 )*LDA+IROW-2 )
+-         H21 = A( ( ICOL-3 )*LDA+IROW-1 )
+-         H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++         H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
++         H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
++         H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+          H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+-         V3 = A( ( ICOL-2 )*LDA+IROW )
++         V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+       END IF
+ *
+-      H44S = H44 - H11
+-      H33S = H33 - H11
+-      V1 = ( H33S*H44S-H43H34 ) / H21 + H12
+-      V2 = H22 - H11 - H33S - H44S
+-      S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 )
++      H44S = H44 - H11( 1 )
++      H33S = H33 - H11( 1 )
++      V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 )
++      V2 = H22 - H11( 1 ) - H33S - H44S
++      S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3( 1 ) )
+       V1 = V1 / S
+       V2 = V2 / S
+-      V3 = V3 / S
++      V3( 1 ) = V3( 1 ) / S
+       V( 1 ) = V1
+       V( 2 ) = V2
+-      V( 3 ) = V3
++      V( 3 ) = V3( 1 )
+ *
+       RETURN
+ *
+diff --git a/SRC/pctrevc.f b/SRC/pctrevc.f
+index d0a3043..bf6c52b 100644
+--- a/SRC/pctrevc.f
++++ b/SRC/pctrevc.f
+@@ -218,11 +218,12 @@ SUBROUTINE PCTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL,
+      $                   ITMP2, J, K, KI, LDT, LDVL, LDVR, LDW, MB,
+      $                   MYCOL, MYROW, NB, NPCOL, NPROW, RSRC
+       REAL               SELF
+-      REAL               OVFL, REMAXD, SCALE, SMIN, SMLNUM, ULP, UNFL
++      REAL               OVFL, REMAXD, SCALE, SMLNUM, ULP, UNFL
+       COMPLEX            CDUM, REMAXC, SHIFT
+ *     ..
+ *     .. Local Arrays ..
+       INTEGER            DESCW( DLEN_ )
++      REAL               SMIN( 1 )
+ *     ..
+ *     .. External Functions ..
+       LOGICAL            LSAME
+@@ -355,13 +356,13 @@ SUBROUTINE PCTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL,
+      $            GO TO 70
+             END IF
+ *
+-            SMIN = ZERO
++            SMIN( 1 ) = ZERO
+             SHIFT = CZERO
+             CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL,
+      $                    IROW, ICOL, ITMP1, ITMP2 )
+             IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN
+                SHIFT = T( ( ICOL-1 )*LDT+IROW )
+-               SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM )
++               SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM )
+             END IF
+             CALL SGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 )
+             CALL CGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 )
+@@ -396,8 +397,9 @@ SUBROUTINE PCTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL,
+                IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN
+                   T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) -
+      $               SHIFT
+-                  IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN ) THEN
+-                     T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN )
++                  IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) )
++     $            THEN
++                     T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN( 1 ) )
+                   END IF
+                END IF
+    50       CONTINUE
+@@ -467,13 +469,13 @@ SUBROUTINE PCTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL,
+      $            GO TO 110
+             END IF
+ *
+-            SMIN = ZERO
++            SMIN( 1 ) = ZERO
+             SHIFT = CZERO
+             CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL,
+      $                    IROW, ICOL, ITMP1, ITMP2 )
+             IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN
+                SHIFT = T( ( ICOL-1 )*LDT+IROW )
+-               SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM )
++               SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM )
+             END IF
+             CALL SGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 )
+             CALL CGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 )
+@@ -507,8 +509,8 @@ SUBROUTINE PCTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL,
+                IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN
+                   T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) -
+      $               SHIFT
+-                  IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN )
+-     $               T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN )
++                  IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) )
++     $               T( ( ICOL-1 )*LDT+IROW ) = CMPLX( SMIN( 1 ) )
+                END IF
+    90       CONTINUE
+ *
+diff --git a/SRC/pdhseqr.f b/SRC/pdhseqr.f
+index ffc3652..6e0f751 100644
+--- a/SRC/pdhseqr.f
++++ b/SRC/pdhseqr.f
+@@ -259,11 +259,12 @@ SUBROUTINE PDHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z,
+      $                   HRSRC4, HCSRC4, LIWKOPT
+       LOGICAL            INITZ, LQUERY, WANTT, WANTZ, PAIR, BORDER
+       DOUBLE PRECISION   TMP1, TMP2, TMP3, TMP4, DUM1, DUM2, DUM3,
+-     $                   DUM4, ELEM1, ELEM2, ELEM3, ELEM4,
++     $                   DUM4, ELEM1, ELEM4,
+      $                   CS, SN, ELEM5, TMP, LWKOPT
+ *     ..
+ *     .. Local Arrays ..
+       INTEGER            DESCH2( DLEN_ )
++      DOUBLE PRECISION   ELEM2( 1 ), ELEM3( 1 )
+ *     ..
+ *     .. External Functions ..
+       INTEGER            PILAENVX, NUMROC, ICEIL
+@@ -566,28 +567,28 @@ SUBROUTINE PDHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z,
+                   IF( MYROW.EQ.HRSRC1 .AND. MYCOL.EQ.HCSRC1 ) THEN
+                      ELEM1 = H((JLOC1-1)*LLDH+ILOC1)
+                      IF( K.LT.N ) THEN
+-                        ELEM3 = H((JLOC1-1)*LLDH+ILOC1+1)
++                        ELEM3( 1 ) = H((JLOC1-1)*LLDH+ILOC1+1)
+                      ELSE
+-                        ELEM3 = ZERO
++                        ELEM3( 1 ) = ZERO
+                      END IF
+-                     IF( ELEM3.NE.ZERO ) THEN
+-                        ELEM2 = H((JLOC1)*LLDH+ILOC1)
++                     IF( ELEM3( 1 ).NE.ZERO ) THEN
++                        ELEM2( 1 ) = H((JLOC1)*LLDH+ILOC1)
+                         ELEM4 = H((JLOC1)*LLDH+ILOC1+1)
+-                        CALL DLANV2( ELEM1, ELEM2, ELEM3, ELEM4,
+-     $                       WR( K ), WI( K ), WR( K+1 ), WI( K+1 ),
+-     $                       SN, CS )
++                        CALL DLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ),
++     $                       ELEM4, WR( K ), WI( K ), WR( K+1 ),
++     $                       WI( K+1 ), SN, CS )
+                         PAIR = .TRUE.
+                      ELSE
+                         IF( K.GT.1 ) THEN
+                            TMP = H((JLOC1-2)*LLDH+ILOC1)
+                            IF( TMP.NE.ZERO ) THEN
+                               ELEM1 = H((JLOC1-2)*LLDH+ILOC1-1)
+-                              ELEM2 = H((JLOC1-1)*LLDH+ILOC1-1)
+-                              ELEM3 = H((JLOC1-2)*LLDH+ILOC1)
++                              ELEM2( 1 ) = H((JLOC1-1)*LLDH+ILOC1-1)
++                              ELEM3( 1 ) = H((JLOC1-2)*LLDH+ILOC1)
+                               ELEM4 = H((JLOC1-1)*LLDH+ILOC1)
+-                              CALL DLANV2( ELEM1, ELEM2, ELEM3,
+-     $                             ELEM4, WR( K-1 ), WI( K-1 ),
+-     $                             WR( K ), WI( K ), SN, CS )
++                              CALL DLANV2( ELEM1, ELEM2( 1 ),
++     $                             ELEM3( 1 ), ELEM4, WR( K-1 ),
++     $                             WI( K-1 ), WR( K ), WI( K ), SN, CS )
+                            ELSE
+                               WR( K ) = ELEM1
+                            END IF
+@@ -620,12 +621,12 @@ SUBROUTINE PDHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z,
+             CALL INFOG2L( K+1, K+1, DESCH, NPROW, NPCOL, MYROW, MYCOL,
+      $           ILOC4, JLOC4, HRSRC4, HCSRC4 )
+             IF( MYROW.EQ.HRSRC2 .AND. MYCOL.EQ.HCSRC2 ) THEN
+-               ELEM2 = H((JLOC2-1)*LLDH+ILOC2)
++               ELEM2( 1 ) = H((JLOC2-1)*LLDH+ILOC2)
+                IF( HRSRC1.NE.HRSRC2 .OR. HCSRC1.NE.HCSRC2 )
+      $            CALL DGESD2D( ICTXT, 1, 1, ELEM2, 1, HRSRC1, HCSRC1)
+             END IF
+             IF( MYROW.EQ.HRSRC3 .AND. MYCOL.EQ.HCSRC3 ) THEN
+-               ELEM3 = H((JLOC3-1)*LLDH+ILOC3)
++               ELEM3( 1 ) = H((JLOC3-1)*LLDH+ILOC3)
+                IF( HRSRC1.NE.HRSRC3 .OR. HCSRC1.NE.HCSRC3 )
+      $            CALL DGESD2D( ICTXT, 1, 1, ELEM3, 1, HRSRC1, HCSRC1)
+             END IF
+@@ -651,8 +652,9 @@ SUBROUTINE PDHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z,
+                ELEM5 = WORK(2)
+                IF( ELEM5.EQ.ZERO ) THEN
+                   IF( WR( K ).EQ.ZERO .AND. WI( K ).EQ.ZERO ) THEN
+-                     CALL DLANV2( ELEM1, ELEM2, ELEM3, ELEM4, WR( K ),
+-     $                    WI( K ), WR( K+1 ), WI( K+1 ), SN, CS )
++                     CALL DLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ), ELEM4,
++     $                    WR( K ), WI( K ), WR( K+1 ), WI( K+1 ), SN,
++     $                    CS )
+                   ELSEIF( WR( K+1 ).EQ.ZERO .AND. WI( K+1 ).EQ.ZERO )
+      $                 THEN
+                      WR( K+1 ) = ELEM4
+diff --git a/SRC/pdlacon.f b/SRC/pdlacon.f
+index b625d97..74b9eab 100644
+--- a/SRC/pdlacon.f
++++ b/SRC/pdlacon.f
+@@ -160,10 +160,10 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+       INTEGER            I, ICTXT, IFLAG, IIVX, IMAXROW, IOFFVX, IROFF,
+      $                   ITER, IVXCOL, IVXROW, J, JLAST, JJVX, JUMP,
+      $                   K, MYCOL, MYROW, NP, NPCOL, NPROW
+-      DOUBLE PRECISION   ALTSGN, ESTOLD, JLMAX, TEMP, XMAX
++      DOUBLE PRECISION   ALTSGN, ESTOLD, JLMAX, XMAX
+ *     ..
+ *     .. Local Arrays ..
+-      DOUBLE PRECISION   WORK( 2 )
++      DOUBLE PRECISION   ESTWORK( 1 ), TEMP( 1 ), WORK( 2 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, DCOPY, DGEBR2D, DGEBS2D,
+@@ -184,6 +184,7 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+ *
+ *     Get grid parameters.
+ *
++      ESTWORK( 1 ) = EST
+       ICTXT = DESCX( CTXT_ )
+       CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
+ *
+@@ -215,21 +216,21 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+       IF( N.EQ.1 ) THEN
+          IF( MYROW.EQ.IVXROW ) THEN
+             V( IOFFVX ) = X( IOFFVX )
+-            EST = ABS( V( IOFFVX ) )
+-            CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 )
++            ESTWORK( 1 ) = ABS( V( IOFFVX ) )
++            CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 )
+          ELSE
+-            CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1,
++            CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1,
+      $                    IVXROW, MYCOL )
+          END IF
+ *        ... QUIT
+          GO TO 150
+       END IF
+-      CALL PDASUM( N, EST, X, IX, JX, DESCX, 1 )
++      CALL PDASUM( N, ESTWORK( 1 ), X, IX, JX, DESCX, 1 )
+       IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN
+          IF( MYROW.EQ.IVXROW ) THEN
+-            CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 )
++            CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 )
+          ELSE
+-            CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1,
++            CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1,
+      $                    IVXROW, MYCOL )
+          END IF
+       END IF
+@@ -281,13 +282,13 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+ *
+    70 CONTINUE
+       CALL DCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 )
+-      ESTOLD = EST
+-      CALL PDASUM( N, EST, V, IV, JV, DESCV, 1 )
++      ESTOLD = ESTWORK( 1 )
++      CALL PDASUM( N, ESTWORK( 1 ), V, IV, JV, DESCV, 1 )
+       IF( DESCV( M_ ).EQ.1 .AND. N.EQ.1 ) THEN
+          IF( MYROW.EQ.IVXROW ) THEN
+-            CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 )
++            CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 )
+          ELSE
+-            CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1,
++            CALL DGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1,
+      $                    IVXROW, MYCOL )
+          END IF
+       END IF
+@@ -305,7 +306,7 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+ *     REPEATED SIGN VECTOR DETECTED, HENCE ALGORITHM HAS CONVERGED.
+ *     ALONG WITH IT, TEST FOR CYCLING.
+ *
+-      IF( IFLAG.EQ.0 .OR. EST.LE.ESTOLD )
++      IF( IFLAG.EQ.0 .OR. ESTWORK( 1 ).LE.ESTOLD )
+      $   GO TO 120
+ *
+       DO 100 I = IOFFVX, IOFFVX+NP-1
+@@ -361,7 +362,7 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+ *     X HAS BEEN OVERWRITTEN BY A*X
+ *
+   140 CONTINUE
+-      CALL PDASUM( N, TEMP, X, IX, JX, DESCX, 1 )
++      CALL PDASUM( N, TEMP( 1 ), X, IX, JX, DESCX, 1 )
+       IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN
+          IF( MYROW.EQ.IVXROW ) THEN
+             CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, TEMP, 1 )
+@@ -370,15 +371,16 @@ SUBROUTINE PDLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+      $                    IVXROW, MYCOL )
+          END IF
+       END IF
+-      TEMP = TWO*( TEMP / DBLE( 3*N ) )
+-      IF( TEMP.GT.EST ) THEN
++      TEMP( 1 ) = TWO*( TEMP( 1 ) / DBLE( 3*N ) )
++      IF( TEMP( 1 ).GT.ESTWORK( 1 ) ) THEN
+          CALL DCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 )
+-         EST = TEMP
++         ESTWORK( 1 ) = TEMP( 1 )
+       END IF
+ *
+   150 CONTINUE
+       KASE = 0
+ *
++      EST = ESTWORK( 1 )
+       RETURN
+ *
+ *     End of PDLACON
+diff --git a/SRC/pdlarf.f b/SRC/pdlarf.f
+index 29da1ac..41368d6 100644
+--- a/SRC/pdlarf.f
++++ b/SRC/pdlarf.f
+@@ -241,7 +241,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+      $                   IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC,
+      $                   LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW,
+      $                   NQ, RDEST
+-      DOUBLE PRECISION   TAULOC
++      DOUBLE PRECISION   TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, DCOPY, DGEBR2D, DGEBS2D,
+@@ -335,7 +335,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+                   ELSE
+ *
+@@ -344,7 +344,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -362,8 +362,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+-                     CALL DGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                          1, C( IOFFC ), LDC )
++                     CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                          WORK( IPW ), 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -378,9 +378,9 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYCOL.EQ.ICCOL ) THEN
+ *
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -397,8 +397,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL DGER( MP, NQ, -TAULOC, V( IOFFV ), 1, WORK,
+-     $                             1, C( IOFFC ), LDC )
++                        CALL DGER( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1,
++     $                             WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -420,9 +420,9 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = MP+1
+                      CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -440,7 +440,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL DGER( MP, NQ, -TAULOC, WORK, 1,
++                        CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                             WORK( IPW ), 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -470,7 +470,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+@@ -479,7 +479,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -499,8 +499,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL DGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                          1, C( IOFFC ), LDC )
++     $               CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                          WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -515,18 +515,18 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( JJV )
+                   CALL DGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+                   IPW = MP+1
+                   CALL DGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -546,8 +546,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL DGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                          1, C( IOFFC ), LDC )
++     $               CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                          WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+@@ -576,9 +576,9 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYROW.EQ.ICROW ) THEN
+ *
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -596,7 +596,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+                         IF( IOFFV.GT.0 .AND. IOFFC.GT.0 )
+-     $                     CALL DGER( MP, NQ, -TAULOC, WORK, 1,
++     $                     CALL DGER( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                                V( IOFFV ), LDV, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -619,9 +619,9 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = NQ+1
+                      CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -639,7 +639,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1,
++                        CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                             WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -665,7 +665,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+                   ELSE
+ *
+@@ -674,7 +674,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -692,8 +692,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                          1, C( IOFFC ), LDC )
++                     CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                          WORK, 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -718,18 +718,18 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( IIV )
+                   CALL DGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+                   IPW = NQ+1
+                   CALL DGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -748,8 +748,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                          1, C( IOFFC ), LDC )
++     $               CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                          WORK, 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -768,7 +768,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+@@ -777,7 +777,7 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -795,8 +795,8 @@ SUBROUTINE PDLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL DGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1,
+-     $                       C( IOFFC ), LDC )
++                  CALL DGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, WORK,
++     $                       1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pdlarz.f b/SRC/pdlarz.f
+index b91282c..f45c137 100644
+--- a/SRC/pdlarz.f
++++ b/SRC/pdlarz.f
+@@ -250,7 +250,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                   IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2,
+      $                   MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW,
+      $                   NQC2, NQV, RDEST
+-      DOUBLE PRECISION   TAULOC
++      DOUBLE PRECISION   TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, DAXPY, DCOPY, DGEBR2D,
+@@ -369,7 +369,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+                   ELSE
+ *
+@@ -378,7 +378,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -401,9 +401,9 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+                      IF( MYROW.EQ.ICROW1 )
+-     $                  CALL DAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                  CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                              MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                     CALL DGER( MPV, NQC2, -TAULOC, WORK, 1,
++                     CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                          WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+@@ -419,9 +419,9 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYCOL.EQ.ICCOL2 ) THEN
+ *
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -444,11 +444,11 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL DAXPY( NQC2, -TAULOC, WORK,
++     $                     CALL DAXPY( NQC2, -TAULOC( 1 ), WORK,
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL DGER( MPV, NQC2, -TAULOC, V( IOFFV ), 1,
+-     $                             WORK, 1, C( IOFFC2 ), LDC )
++                        CALL DGER( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ),
++     $                             1, WORK, 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -470,9 +470,9 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = MPV+1
+                      CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -495,10 +495,10 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL DAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                     CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL DGER( MPV, NQC2, -TAULOC, WORK, 1,
++                        CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                             WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+@@ -529,7 +529,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL DGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+@@ -538,7 +538,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -561,10 +561,10 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL DAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL DGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                       1, C( IOFFC2 ), LDC )
++                  CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                       WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -579,18 +579,18 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( JJV )
+                   CALL DGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+                   IPW = MPV+1
+                   CALL DGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -613,10 +613,10 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL DAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL DAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL DGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                       1, C( IOFFC2 ), LDC )
++                  CALL DGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                       WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+@@ -645,9 +645,9 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYROW.EQ.ICROW2 ) THEN
+ *
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -668,13 +668,13 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                               ICCOL2 )
+ *
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL DAXPY( MPC2, -TAULOC, WORK, 1,
++     $                     CALL DAXPY( MPC2, -TAULOC( 1 ), WORK, 1,
+      $                                 C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+                         IF( MPC2.GT.0 .AND. NQV.GT.0 )
+-     $                     CALL DGER( MPC2, NQV, -TAULOC, WORK, 1,
++     $                     CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK, 1,
+      $                                V( IOFFV ), LDV, C( IOFFC2 ),
+      $                                LDC )
+                      END IF
+@@ -698,9 +698,9 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = NQV+1
+                      CALL DGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -719,13 +719,13 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                                WORK( IPW ), MAX( 1, MPC2 ),
+      $                                RDEST, ICCOL2 )
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
+-     $                                 C( IOFFC1 ), 1 )
++     $                     CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ),
++     $                                 1, C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
+-     $                             WORK, 1, C( IOFFC2 ), LDC )
++                        CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ),
++     $                             1, WORK, 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -750,7 +750,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+                   ELSE
+ *
+@@ -759,7 +759,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -778,12 +778,12 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                             WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                             ICCOL2 )
+                      IF( MYCOL.EQ.ICCOL1 )
+-     $                  CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $                  CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                              C( IOFFC1 ), 1 )
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
++                     CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                          WORK, 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+@@ -808,18 +808,18 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( IIV )
+                   CALL DGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+                   IPW = NQV+1
+                   CALL DGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -839,13 +839,13 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                       1, C( IOFFC2 ), LDC )
++                  CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                       WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -864,7 +864,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL DGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+@@ -873,7 +873,7 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -892,13 +892,13 @@ SUBROUTINE PDLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL DAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL DAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL DGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                       1, C( IOFFC2 ), LDC )
++                  CALL DGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                       WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pdlawil.f b/SRC/pdlawil.f
+index 90a4d74..e8bc3a0 100644
+--- a/SRC/pdlawil.f
++++ b/SRC/pdlawil.f
+@@ -120,10 +120,10 @@ SUBROUTINE PDLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+       INTEGER            CONTXT, DOWN, HBL, ICOL, IROW, JSRC, LDA, LEFT,
+      $                   MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT,
+      $                   RSRC, UP
+-      DOUBLE PRECISION   H11, H12, H21, H22, H33S, H44S, S, V1, V2, V3
++      DOUBLE PRECISION   H22, H33S, H44S, S, V1, V2
+ *     ..
+ *     .. Local Arrays ..
+-      DOUBLE PRECISION   BUF( 4 )
++      DOUBLE PRECISION   BUF( 4 ), H11( 1 ), H12( 1 ), H21( 1 ), V3( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, DGERV2D, DGESD2D, INFOG2L
+@@ -170,18 +170,18 @@ SUBROUTINE PDLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+             IF( NPCOL.GT.1 ) THEN
+                CALL DGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT )
+             ELSE
+-               V3 = A( ( ICOL-2 )*LDA+IROW )
++               V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+             END IF
+             IF( NUM.GT.1 ) THEN
+                CALL DGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT )
+-               H11 = BUF( 1 )
+-               H21 = BUF( 2 )
+-               H12 = BUF( 3 )
++               H11( 1 ) = BUF( 1 )
++               H21( 1 ) = BUF( 2 )
++               H12( 1 ) = BUF( 3 )
+                H22 = BUF( 4 )
+             ELSE
+-               H11 = A( ( ICOL-3 )*LDA+IROW-2 )
+-               H21 = A( ( ICOL-3 )*LDA+IROW-1 )
+-               H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++               H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
++               H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
++               H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+                H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+             END IF
+          END IF
+@@ -214,20 +214,20 @@ SUBROUTINE PDLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+             IF( NUM.GT.1 ) THEN
+                CALL DGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT )
+             ELSE
+-               H11 = A( ( ICOL-3 )*LDA+IROW-2 )
++               H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
+             END IF
+             IF( NPROW.GT.1 ) THEN
+                CALL DGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL )
+             ELSE
+-               H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++               H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+             END IF
+             IF( NPCOL.GT.1 ) THEN
+                CALL DGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT )
+             ELSE
+-               H21 = A( ( ICOL-3 )*LDA+IROW-1 )
++               H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
+             END IF
+             H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+-            V3 = A( ( ICOL-2 )*LDA+IROW )
++            V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+          END IF
+       END IF
+       IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) )
+@@ -236,24 +236,24 @@ SUBROUTINE PDLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+       IF( MODKM1.GT.1 ) THEN
+          CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL,
+      $                 IROW, ICOL, RSRC, JSRC )
+-         H11 = A( ( ICOL-3 )*LDA+IROW-2 )
+-         H21 = A( ( ICOL-3 )*LDA+IROW-1 )
+-         H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++         H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
++         H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
++         H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+          H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+-         V3 = A( ( ICOL-2 )*LDA+IROW )
++         V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+       END IF
+ *
+-      H44S = H44 - H11
+-      H33S = H33 - H11
+-      V1 = ( H33S*H44S-H43H34 ) / H21 + H12
+-      V2 = H22 - H11 - H33S - H44S
+-      S = ABS( V1 ) + ABS( V2 ) + ABS( V3 )
++      H44S = H44 - H11( 1 )
++      H33S = H33 - H11( 1 )
++      V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 )
++      V2 = H22 - H11( 1 ) - H33S - H44S
++      S = ABS( V1 ) + ABS( V2 ) + ABS( V3( 1 ) )
+       V1 = V1 / S
+       V2 = V2 / S
+-      V3 = V3 / S
++      V3( 1 ) = V3( 1 ) / S
+       V( 1 ) = V1
+       V( 2 ) = V2
+-      V( 3 ) = V3
++      V( 3 ) = V3( 1 )
+ *
+       RETURN
+ *
+diff --git a/SRC/pdstebz.f b/SRC/pdstebz.f
+index e7006f9..bf4dacc 100644
+--- a/SRC/pdstebz.f
++++ b/SRC/pdstebz.f
+@@ -246,14 +246,14 @@ SUBROUTINE PDSTEBZ( ICTXT, RANGE, ORDER, N, VL, VU, IL, IU,
+      $                   ITMP2, J, JB, K, LAST, LEXTRA, LREQ, MYCOL,
+      $                   MYROW, NALPHA, NBETA, NCMP, NEIGINT, NEXT, NGL,
+      $                   NGLOB, NGU, NINT, NPCOL, NPROW, OFFSET,
+-     $                   ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF,
+-     $                   TORECV
++     $                   ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF
+       DOUBLE PRECISION   ALPHA, ATOLI, BETA, BNORM, DRECV, DSEND, GL,
+      $                   GU, INITVL, INITVU, LSAVE, MID, PIVMIN, RELTOL,
+      $                   SAFEMN, TMP1, TMP2, TNORM, ULP
+ *     ..
+ *     .. Local Arrays ..
+       INTEGER            IDUM( 5, 2 )
++      INTEGER            TORECV( 1, 1 )
+ *     ..
+ *     .. Executable Statements ..
+ *       This is just to keep ftnchek happy
+@@ -784,14 +784,14 @@ SUBROUTINE PDSTEBZ( ICTXT, RANGE, ORDER, N, VL, VU, IL, IU,
+          ELSE
+             CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', 1, 1, TORECV, 1, 0,
+      $                    I-1 )
+-            IF( TORECV.NE.0 ) THEN
+-               CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, IWORK,
+-     $                       TORECV, 0, I-1 )
+-               CALL DGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, WORK,
+-     $                       TORECV, 0, I-1 )
+-               CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1,
+-     $                       IWORK( N+1 ), TORECV, 0, I-1 )
+-               DO 120 J = 1, TORECV
++            IF( TORECV( 1, 1 ).NE.0 ) THEN
++               CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1,
++     $                       IWORK, TORECV( 1, 1 ), 0, I-1 )
++               CALL DGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1,
++     $                       WORK, TORECV( 1, 1 ), 0, I-1 )
++               CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1,
++     $                       IWORK( N+1 ), TORECV( 1, 1 ), 0, I-1 )
++               DO 120 J = 1, TORECV( 1, 1 )
+                   W( IWORK( J ) ) = WORK( J )
+                   IBLOCK( IWORK( J ) ) = IWORK( N+J )
+   120          CONTINUE
+diff --git a/SRC/pdtrord.f b/SRC/pdtrord.f
+index 1f37d8e..3870574 100644
+--- a/SRC/pdtrord.f
++++ b/SRC/pdtrord.f
+@@ -328,12 +328,13 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+      $                   EAST, WEST, ILOC4, SOUTH, NORTH, INDXS,
+      $                   ITT, JTT, ILEN, DLEN, INDXE, TRSRC1, TCSRC1,
+      $                   TRSRC2, TCSRC2, ILOS, DIR, TLIHI, TLILO, TLSEL,
+-     $                   ROUND, LAST, WIN0S, WIN0E, WINE, MMAX, MMIN
++     $                   ROUND, LAST, WIN0S, WIN0E, WINE
+       DOUBLE PRECISION   ELEM, ELEM1, ELEM2, ELEM3, ELEM4, SN, CS, TMP,
+      $                   ELEM5
+ *     ..
+ *     .. Local Arrays ..
+-      INTEGER            IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 )
++      INTEGER            IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 ), MMAX( 1 ),
++     $                   MMIN( 1 ), INFODUM( 1 )
+ *     ..
+ *     .. External Functions ..
+       LOGICAL            LSAME
+@@ -483,16 +484,16 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+                END IF
+                IF( SELECT(K).NE.0 ) M = M + 1
+  10         CONTINUE
+-            MMAX = M
+-            MMIN = M
++            MMAX( 1 ) = M
++            MMIN( 1 ) = M
+             IF( NPROCS.GT.1 )
+      $         CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1,
+      $              -1, -1, -1, -1 )
+             IF( NPROCS.GT.1 )
+      $         CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1,
+      $              -1, -1, -1, -1 )
+-            IF( MMAX.GT.MMIN ) THEN
+-               M = MMAX
++            IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN
++               M = MMAX( 1 )
+                IF( NPROCS.GT.1 )
+      $            CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, SELECT, N,
+      $                 -1, -1, -1, -1, -1 )
+@@ -520,9 +521,11 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+ *
+ *     Global maximum on info.
+ *
+-      IF( NPROCS.GT.1 )
+-     $   CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -1, -1,
++      IF( NPROCS.GT.1 ) THEN
++         CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, -1, -1,
+      $        -1, -1 )
++         INFO = INFODUM( 1 )
++      END IF
+ *
+ *     Return if some argument is incorrect.
+ *
+@@ -1576,9 +1579,11 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+ *        experienced a failure in the reordering.
+ *
+          MYIERR = IERR
+-         IF( NPROCS.GT.1 )
+-     $      CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1,
++         IF( NPROCS.GT.1 ) THEN
++            CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1,
+      $           -1, -1, -1, -1 )
++            IERR = INFODUM( 1 )
++         END IF
+ *
+          IF( IERR.NE.0 ) THEN
+ *
+@@ -1586,9 +1591,11 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+ *           to swap.
+ *
+             IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1)
+-            IF( NPROCS.GT.1 )
+-     $         CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1,
++            IF( NPROCS.GT.1 ) THEN
++               CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1,
+      $              -1, -1, -1, -1 )
++               INFO = INFODUM( 1 )
++            END IF
+             GO TO 300
+          END IF
+ *
+@@ -3245,9 +3252,11 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+ *        experienced a failure in the reordering.
+ *
+          MYIERR = IERR
+-         IF( NPROCS.GT.1 )
+-     $      CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1,
++         IF( NPROCS.GT.1 ) THEN
++            CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1,
+      $           -1, -1, -1, -1 )
++            IERR = INFODUM( 1 )
++         END IF
+ *
+          IF( IERR.NE.0 ) THEN
+ *
+@@ -3255,9 +3264,11 @@ SUBROUTINE PDTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+ *           to swap.
+ *
+             IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1)
+-            IF( NPROCS.GT.1 )
+-     $         CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1,
++            IF( NPROCS.GT.1 ) THEN
++               CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1,
+      $              -1, -1, -1, -1 )
++               IERR = INFODUM( 1 )
++            END IF
+             GO TO 300
+          END IF
+ *
+diff --git a/SRC/pdtrsen.f b/SRC/pdtrsen.f
+index 78c5599..c65ea91 100644
+--- a/SRC/pdtrsen.f
++++ b/SRC/pdtrsen.f
+@@ -354,13 +354,15 @@ SUBROUTINE PDTRSEN( JOB, COMPQ, SELECT, PARA, N, T, IT, JT,
+       LOGICAL            LQUERY, WANTBH, WANTQ, WANTS, WANTSP
+       INTEGER            ICOFFT12, ICTXT, IDUM1, IDUM2, IERR, ILOC1,
+      $                   IPW1, ITER, ITT, JLOC1, JTT, K, LIWMIN, LLDT,
+-     $                   LLDQ, LWMIN, MMAX, MMIN, MYROW, MYCOL, N1, N2,
++     $                   LLDQ, LWMIN, MYROW, MYCOL, N1, N2,
+      $                   NB, NOEXSY, NPCOL, NPROCS, NPROW, SPACE,
+      $                   T12ROWS, T12COLS, TCOLS, TCSRC, TROWS, TRSRC,
+      $                   WRK1, IWRK1, WRK2, IWRK2, WRK3, IWRK3
+-      DOUBLE PRECISION   DPDUM1, ELEM, EST, SCALE, RNORM
++      DOUBLE PRECISION   ELEM, EST, SCALE, RNORM
+ *     .. Local Arrays ..
+-      INTEGER            DESCT12( DLEN_ ), MBNB2( 2 )
++      INTEGER            DESCT12( DLEN_ ), MBNB2( 2 ), MMAX( 1 ),
++     $                   MMIN( 1 )
++      DOUBLE PRECISION   DPDUM1( 1 )
+ *     ..
+ *     .. External Functions ..
+       LOGICAL            LSAME
+@@ -521,16 +523,16 @@ SUBROUTINE PDTRSEN( JOB, COMPQ, SELECT, PARA, N, T, IT, JT,
+                END IF
+                IF( SELECT(K) ) M = M + 1
+  10         CONTINUE
+-            MMAX = M
+-            MMIN = M
++            MMAX( 1 ) = M
++            MMIN( 1 ) = M
+             IF( NPROCS.GT.1 )
+-     $           CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1,
+-     $                -1, -1, -1, -1 )
++     $           CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX( 1 ), 1,
++     $                -1, -1, -1, -1, -1 )
+             IF( NPROCS.GT.1 )
+-     $           CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1,
+-     $                -1, -1, -1, -1 )
+-            IF( MMAX.GT.MMIN ) THEN
+-               M = MMAX
++     $           CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN( 1 ), 1,
++     $                -1, -1, -1, -1, -1 )
++            IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN
++               M = MMAX( 1 )
+                IF( NPROCS.GT.1 )
+      $              CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, IWORK, N,
+      $                   -1, -1, -1, -1, -1 )
+diff --git a/SRC/pshseqr.f b/SRC/pshseqr.f
+index 10eb24a..e8ecea9 100644
+--- a/SRC/pshseqr.f
++++ b/SRC/pshseqr.f
+@@ -259,11 +259,12 @@ SUBROUTINE PSHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z,
+      $                   HRSRC4, HCSRC4, LIWKOPT
+       LOGICAL            INITZ, LQUERY, WANTT, WANTZ, PAIR, BORDER
+       REAL               TMP1, TMP2, TMP3, TMP4, DUM1, DUM2, DUM3,
+-     $                   DUM4, ELEM1, ELEM2, ELEM3, ELEM4,
++     $                   DUM4, ELEM1, ELEM4,
+      $                   CS, SN, ELEM5, TMP, LWKOPT
+ *     ..
+ *     .. Local Arrays ..
+       INTEGER            DESCH2( DLEN_ )
++      REAL               ELEM2( 1 ), ELEM3( 1 )
+ *     ..
+ *     .. External Functions ..
+       INTEGER            PILAENVX, NUMROC, ICEIL
+@@ -566,28 +567,28 @@ SUBROUTINE PSHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z,
+                   IF( MYROW.EQ.HRSRC1 .AND. MYCOL.EQ.HCSRC1 ) THEN
+                      ELEM1 = H((JLOC1-1)*LLDH+ILOC1)
+                      IF( K.LT.N ) THEN
+-                        ELEM3 = H((JLOC1-1)*LLDH+ILOC1+1)
++                        ELEM3( 1 ) = H((JLOC1-1)*LLDH+ILOC1+1)
+                      ELSE
+-                        ELEM3 = ZERO
++                        ELEM3( 1 ) = ZERO
+                      END IF
+-                     IF( ELEM3.NE.ZERO ) THEN
+-                        ELEM2 = H((JLOC1)*LLDH+ILOC1)
++                     IF( ELEM3( 1 ).NE.ZERO ) THEN
++                        ELEM2( 1 ) = H((JLOC1)*LLDH+ILOC1)
+                         ELEM4 = H((JLOC1)*LLDH+ILOC1+1)
+-                        CALL SLANV2( ELEM1, ELEM2, ELEM3, ELEM4,
+-     $                       WR( K ), WI( K ), WR( K+1 ), WI( K+1 ),
+-     $                       SN, CS )
++                        CALL SLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ),
++     $                       ELEM4, WR( K ), WI( K ), WR( K+1 ),
++     $                       WI( K+1 ), SN, CS )
+                         PAIR = .TRUE.
+                      ELSE
+                         IF( K.GT.1 ) THEN
+                            TMP = H((JLOC1-2)*LLDH+ILOC1)
+                            IF( TMP.NE.ZERO ) THEN
+                               ELEM1 = H((JLOC1-2)*LLDH+ILOC1-1)
+-                              ELEM2 = H((JLOC1-1)*LLDH+ILOC1-1)
+-                              ELEM3 = H((JLOC1-2)*LLDH+ILOC1)
++                              ELEM2( 1 ) = H((JLOC1-1)*LLDH+ILOC1-1)
++                              ELEM3( 1 ) = H((JLOC1-2)*LLDH+ILOC1)
+                               ELEM4 = H((JLOC1-1)*LLDH+ILOC1)
+-                              CALL SLANV2( ELEM1, ELEM2, ELEM3,
+-     $                             ELEM4, WR( K-1 ), WI( K-1 ),
+-     $                             WR( K ), WI( K ), SN, CS )
++                              CALL SLANV2( ELEM1, ELEM2( 1 ),
++     $                             ELEM3( 1 ), ELEM4, WR( K-1 ),
++     $                             WI( K-1 ), WR( K ), WI( K ), SN, CS )
+                            ELSE
+                               WR( K ) = ELEM1
+                            END IF
+@@ -620,12 +621,12 @@ SUBROUTINE PSHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z,
+             CALL INFOG2L( K+1, K+1, DESCH, NPROW, NPCOL, MYROW, MYCOL,
+      $           ILOC4, JLOC4, HRSRC4, HCSRC4 )
+             IF( MYROW.EQ.HRSRC2 .AND. MYCOL.EQ.HCSRC2 ) THEN
+-               ELEM2 = H((JLOC2-1)*LLDH+ILOC2)
++               ELEM2( 1 ) = H((JLOC2-1)*LLDH+ILOC2)
+                IF( HRSRC1.NE.HRSRC2 .OR. HCSRC1.NE.HCSRC2 )
+      $            CALL SGESD2D( ICTXT, 1, 1, ELEM2, 1, HRSRC1, HCSRC1)
+             END IF
+             IF( MYROW.EQ.HRSRC3 .AND. MYCOL.EQ.HCSRC3 ) THEN
+-               ELEM3 = H((JLOC3-1)*LLDH+ILOC3)
++               ELEM3( 1 ) = H((JLOC3-1)*LLDH+ILOC3)
+                IF( HRSRC1.NE.HRSRC3 .OR. HCSRC1.NE.HCSRC3 )
+      $            CALL SGESD2D( ICTXT, 1, 1, ELEM3, 1, HRSRC1, HCSRC1)
+             END IF
+@@ -651,8 +652,9 @@ SUBROUTINE PSHSEQR( JOB, COMPZ, N, ILO, IHI, H, DESCH, WR, WI, Z,
+                ELEM5 = WORK(2)
+                IF( ELEM5.EQ.ZERO ) THEN
+                   IF( WR( K ).EQ.ZERO .AND. WI( K ).EQ.ZERO ) THEN
+-                     CALL SLANV2( ELEM1, ELEM2, ELEM3, ELEM4, WR( K ),
+-     $                    WI( K ), WR( K+1 ), WI( K+1 ), SN, CS )
++                     CALL SLANV2( ELEM1, ELEM2( 1 ), ELEM3( 1 ), ELEM4,
++     $                    WR( K ), WI( K ), WR( K+1 ), WI( K+1 ), SN,
++     $                    CS )
+                   ELSEIF( WR( K+1 ).EQ.ZERO .AND. WI( K+1 ).EQ.ZERO )
+      $                 THEN
+                      WR( K+1 ) = ELEM4
+diff --git a/SRC/pslacon.f b/SRC/pslacon.f
+index 20d27ff..673bf1a 100644
+--- a/SRC/pslacon.f
++++ b/SRC/pslacon.f
+@@ -160,10 +160,12 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+       INTEGER            I, ICTXT, IFLAG, IIVX, IMAXROW, IOFFVX, IROFF,
+      $                   ITER, IVXCOL, IVXROW, J, JLAST, JJVX, JUMP,
+      $                   K, MYCOL, MYROW, NP, NPCOL, NPROW
+-      REAL               ALTSGN, ESTOLD, JLMAX, TEMP, XMAX
++      REAL               ALTSGN, ESTOLD, JLMAX, XMAX
+ *     ..
+ *     .. Local Arrays ..
+       REAL               WORK( 2 )
++      REAL               ESTWORK( 1 )
++      REAL               TEMP( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, IGSUM2D, INFOG2L, PSAMAX,
+@@ -184,6 +186,7 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+ *
+ *     Get grid parameters.
+ *
++      ESTWORK( 1 ) = EST
+       ICTXT = DESCX( CTXT_ )
+       CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
+ *
+@@ -215,21 +218,21 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+       IF( N.EQ.1 ) THEN
+          IF( MYROW.EQ.IVXROW ) THEN
+             V( IOFFVX ) = X( IOFFVX )
+-            EST = ABS( V( IOFFVX ) )
+-            CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 )
++            ESTWORK( 1 ) = ABS( V( IOFFVX ) )
++            CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 )
+          ELSE
+-            CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1,
++            CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1,
+      $                    IVXROW, MYCOL )
+          END IF
+ *        ... QUIT
+          GO TO 150
+       END IF
+-      CALL PSASUM( N, EST, X, IX, JX, DESCX, 1 )
++      CALL PSASUM( N, ESTWORK( 1 ), X, IX, JX, DESCX, 1 )
+       IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN
+          IF( MYROW.EQ.IVXROW ) THEN
+-            CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 )
++            CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 )
+          ELSE
+-            CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1,
++            CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1,
+      $                    IVXROW, MYCOL )
+          END IF
+       END IF
+@@ -281,13 +284,13 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+ *
+    70 CONTINUE
+       CALL SCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 )
+-      ESTOLD = EST
+-      CALL PSASUM( N, EST, V, IV, JV, DESCV, 1 )
++      ESTOLD = ESTWORK( 1 )
++      CALL PSASUM( N, ESTWORK( 1 ), V, IV, JV, DESCV, 1 )
+       IF( DESCV( M_ ).EQ.1 .AND. N.EQ.1 ) THEN
+          IF( MYROW.EQ.IVXROW ) THEN
+-            CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1 )
++            CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1 )
+          ELSE
+-            CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, EST, 1,
++            CALL SGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, ESTWORK, 1,
+      $                    IVXROW, MYCOL )
+          END IF
+       END IF
+@@ -305,7 +308,7 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+ *     REPEATED SIGN VECTOR DETECTED, HENCE ALGORITHM HAS CONVERGED.
+ *     ALONG WITH IT, TEST FOR CYCLING.
+ *
+-      IF( IFLAG.EQ.0 .OR. EST.LE.ESTOLD )
++      IF( IFLAG.EQ.0 .OR. ESTWORK( 1 ).LE.ESTOLD )
+      $   GO TO 120
+ *
+       DO 100 I = IOFFVX, IOFFVX+NP-1
+@@ -361,7 +364,7 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+ *     X HAS BEEN OVERWRITTEN BY A*X
+ *
+   140 CONTINUE
+-      CALL PSASUM( N, TEMP, X, IX, JX, DESCX, 1 )
++      CALL PSASUM( N, TEMP( 1 ), X, IX, JX, DESCX, 1 )
+       IF( DESCX( M_ ).EQ.1 .AND. N.EQ.1 ) THEN
+          IF( MYROW.EQ.IVXROW ) THEN
+             CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1, TEMP, 1 )
+@@ -370,15 +373,16 @@ SUBROUTINE PSLACON( N, V, IV, JV, DESCV, X, IX, JX, DESCX, ISGN,
+      $                    IVXROW, MYCOL )
+          END IF
+       END IF
+-      TEMP = TWO*( TEMP / REAL( 3*N ) )
+-      IF( TEMP.GT.EST ) THEN
++      TEMP( 1 ) = TWO*( TEMP( 1 ) / REAL( 3*N ) )
++      IF( TEMP( 1 ).GT.ESTWORK( 1 ) ) THEN
+          CALL SCOPY( NP, X( IOFFVX ), 1, V( IOFFVX ), 1 )
+-         EST = TEMP
++         ESTWORK( 1 ) = TEMP( 1 )
+       END IF
+ *
+   150 CONTINUE
+       KASE = 0
+ *
++      EST = ESTWORK( 1 )
+       RETURN
+ *
+ *     End of PSLACON
+diff --git a/SRC/pslarf.f b/SRC/pslarf.f
+index c1d3a15..39de0ed 100644
+--- a/SRC/pslarf.f
++++ b/SRC/pslarf.f
+@@ -241,7 +241,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+      $                   IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC,
+      $                   LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW,
+      $                   NQ, RDEST
+-      REAL               TAULOC
++      REAL               TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBSTRNV,
+@@ -335,7 +335,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+                   ELSE
+ *
+@@ -344,7 +344,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -362,8 +362,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+-                     CALL SGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                          1, C( IOFFC ), LDC )
++                     CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                          WORK( IPW ), 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -378,9 +378,9 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYCOL.EQ.ICCOL ) THEN
+ *
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -397,8 +397,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL SGER( MP, NQ, -TAULOC, V( IOFFV ), 1, WORK,
+-     $                             1, C( IOFFC ), LDC )
++                        CALL SGER( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1,
++     $                             WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -420,9 +420,9 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = MP+1
+                      CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -440,7 +440,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL SGER( MP, NQ, -TAULOC, WORK, 1,
++                        CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                             WORK( IPW ), 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -470,7 +470,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+@@ -479,7 +479,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -499,8 +499,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL SGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                          1, C( IOFFC ), LDC )
++     $               CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                          WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -515,18 +515,18 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( JJV )
+                   CALL SGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+                   IPW = MP+1
+                   CALL SGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -546,8 +546,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL SGER( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                          1, C( IOFFC ), LDC )
++     $               CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                          WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+@@ -576,9 +576,9 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYROW.EQ.ICROW ) THEN
+ *
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -596,7 +596,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+                         IF( IOFFV.GT.0 .AND. IOFFC.GT.0 )
+-     $                     CALL SGER( MP, NQ, -TAULOC, WORK, 1,
++     $                     CALL SGER( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                                V( IOFFV ), LDV, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -619,9 +619,9 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = NQ+1
+                      CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -639,7 +639,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1,
++                        CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                             WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -665,7 +665,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+                   ELSE
+ *
+@@ -674,7 +674,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -692,8 +692,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                          1, C( IOFFC ), LDC )
++                     CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1
++     $                         , WORK, 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -718,18 +718,18 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( IIV )
+                   CALL SGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+                   IPW = NQ+1
+                   CALL SGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -748,8 +748,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                          1, C( IOFFC ), LDC )
++     $               CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                          WORK, 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -768,7 +768,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+@@ -777,7 +777,7 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -795,8 +795,8 @@ SUBROUTINE PSLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL SGER( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1,
+-     $                       C( IOFFC ), LDC )
++                  CALL SGER( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1, WORK,
++     $                       1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pslarz.f b/SRC/pslarz.f
+index aa70db7..8901530 100644
+--- a/SRC/pslarz.f
++++ b/SRC/pslarz.f
+@@ -250,7 +250,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                   IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2,
+      $                   MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW,
+      $                   NQC2, NQV, RDEST
+-      REAL               TAULOC
++      REAL               TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBSTRNV,
+@@ -369,7 +369,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+                   ELSE
+ *
+@@ -378,7 +378,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -401,9 +401,9 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+                      IF( MYROW.EQ.ICROW1 )
+-     $                  CALL SAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                  CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                              MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                     CALL SGER( MPV, NQC2, -TAULOC, WORK, 1,
++                     CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                          WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+@@ -419,9 +419,9 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYCOL.EQ.ICCOL2 ) THEN
+ *
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -444,11 +444,11 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL SAXPY( NQC2, -TAULOC, WORK,
++     $                     CALL SAXPY( NQC2, -TAULOC( 1 ), WORK,
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL SGER( MPV, NQC2, -TAULOC, V( IOFFV ), 1,
+-     $                             WORK, 1, C( IOFFC2 ), LDC )
++                        CALL SGER( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ),
++     $                             1, WORK, 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -470,9 +470,9 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = MPV+1
+                      CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -495,10 +495,10 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL SAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                     CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL SGER( MPV, NQC2, -TAULOC, WORK, 1,
++                        CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                             WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+@@ -529,7 +529,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL SGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+@@ -538,7 +538,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -561,10 +561,10 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL SAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL SGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                       1, C( IOFFC2 ), LDC )
++                  CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                       WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -579,18 +579,18 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( JJV )
+                   CALL SGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+                   IPW = MPV+1
+                   CALL SGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -613,10 +613,10 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL SAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL SAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL SGER( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                       1, C( IOFFC2 ), LDC )
++                  CALL SGER( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                       WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+@@ -645,9 +645,9 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYROW.EQ.ICROW2 ) THEN
+ *
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -668,13 +668,13 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                               ICCOL2 )
+ *
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL SAXPY( MPC2, -TAULOC, WORK, 1,
++     $                     CALL SAXPY( MPC2, -TAULOC( 1 ), WORK, 1,
+      $                                 C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+                         IF( MPC2.GT.0 .AND. NQV.GT.0 )
+-     $                     CALL SGER( MPC2, NQV, -TAULOC, WORK, 1,
++     $                     CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK, 1,
+      $                                V( IOFFV ), LDV, C( IOFFC2 ),
+      $                                LDC )
+                      END IF
+@@ -698,9 +698,9 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = NQV+1
+                      CALL SGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -719,13 +719,13 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                                WORK( IPW ), MAX( 1, MPC2 ),
+      $                                RDEST, ICCOL2 )
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
+-     $                                 C( IOFFC1 ), 1 )
++     $                     CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ),
++     $                                 1, C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
+-     $                             WORK, 1, C( IOFFC2 ), LDC )
++                        CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ),
++     $                             1, WORK, 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -750,7 +750,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+                   ELSE
+ *
+@@ -759,7 +759,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -778,12 +778,12 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                             WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                             ICCOL2 )
+                      IF( MYCOL.EQ.ICCOL1 )
+-     $                  CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $                  CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                              C( IOFFC1 ), 1 )
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
++                     CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                          WORK, 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+@@ -808,18 +808,18 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( IIV )
+                   CALL SGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+                   IPW = NQV+1
+                   CALL SGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -839,13 +839,13 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                       1, C( IOFFC2 ), LDC )
++                  CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                       WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -864,7 +864,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL SGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+@@ -873,7 +873,7 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -892,13 +892,13 @@ SUBROUTINE PSLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL SAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL SAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL SGER( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                       1, C( IOFFC2 ), LDC )
++                  CALL SGER( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                       WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pslawil.f b/SRC/pslawil.f
+index e04c16b..671e08e 100644
+--- a/SRC/pslawil.f
++++ b/SRC/pslawil.f
+@@ -120,10 +120,14 @@ SUBROUTINE PSLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+       INTEGER            CONTXT, DOWN, HBL, ICOL, IROW, JSRC, LDA, LEFT,
+      $                   MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT,
+      $                   RSRC, UP
+-      REAL               H11, H12, H21, H22, H33S, H44S, S, V1, V2, V3
++      REAL               H22, H33S, H44S, S, V1, V2
+ *     ..
+ *     .. Local Arrays ..
+       REAL               BUF( 4 )
++      REAL               H11( 1 )
++      REAL               H12( 1 )
++      REAL               H21( 1 )
++      REAL               V3( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, SGERV2D, SGESD2D, INFOG2L
+@@ -170,18 +174,18 @@ SUBROUTINE PSLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+             IF( NPCOL.GT.1 ) THEN
+                CALL SGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT )
+             ELSE
+-               V3 = A( ( ICOL-2 )*LDA+IROW )
++               V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+             END IF
+             IF( NUM.GT.1 ) THEN
+                CALL SGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT )
+-               H11 = BUF( 1 )
+-               H21 = BUF( 2 )
+-               H12 = BUF( 3 )
++               H11( 1 ) = BUF( 1 )
++               H21( 1 ) = BUF( 2 )
++               H12( 1 ) = BUF( 3 )
+                H22 = BUF( 4 )
+             ELSE
+-               H11 = A( ( ICOL-3 )*LDA+IROW-2 )
+-               H21 = A( ( ICOL-3 )*LDA+IROW-1 )
+-               H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++               H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
++               H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
++               H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+                H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+             END IF
+          END IF
+@@ -214,20 +218,20 @@ SUBROUTINE PSLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+             IF( NUM.GT.1 ) THEN
+                CALL SGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT )
+             ELSE
+-               H11 = A( ( ICOL-3 )*LDA+IROW-2 )
++               H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
+             END IF
+             IF( NPROW.GT.1 ) THEN
+                CALL SGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL )
+             ELSE
+-               H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++               H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+             END IF
+             IF( NPCOL.GT.1 ) THEN
+                CALL SGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT )
+             ELSE
+-               H21 = A( ( ICOL-3 )*LDA+IROW-1 )
++               H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
+             END IF
+             H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+-            V3 = A( ( ICOL-2 )*LDA+IROW )
++            V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+          END IF
+       END IF
+       IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) )
+@@ -236,24 +240,24 @@ SUBROUTINE PSLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+       IF( MODKM1.GT.1 ) THEN
+          CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL,
+      $                 IROW, ICOL, RSRC, JSRC )
+-         H11 = A( ( ICOL-3 )*LDA+IROW-2 )
+-         H21 = A( ( ICOL-3 )*LDA+IROW-1 )
+-         H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++         H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
++         H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
++         H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+          H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+-         V3 = A( ( ICOL-2 )*LDA+IROW )
++         V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+       END IF
+ *
+-      H44S = H44 - H11
+-      H33S = H33 - H11
+-      V1 = ( H33S*H44S-H43H34 ) / H21 + H12
+-      V2 = H22 - H11 - H33S - H44S
+-      S = ABS( V1 ) + ABS( V2 ) + ABS( V3 )
++      H44S = H44 - H11( 1 )
++      H33S = H33 - H11( 1 )
++      V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 )
++      V2 = H22 - H11( 1 ) - H33S - H44S
++      S = ABS( V1 ) + ABS( V2 ) + ABS( V3( 1 ) )
+       V1 = V1 / S
+       V2 = V2 / S
+-      V3 = V3 / S
++      V3( 1 ) = V3( 1 ) / S
+       V( 1 ) = V1
+       V( 2 ) = V2
+-      V( 3 ) = V3
++      V( 3 ) = V3( 1 )
+ *
+       RETURN
+ *
+diff --git a/SRC/psstebz.f b/SRC/psstebz.f
+index a8a2496..7e588a9 100644
+--- a/SRC/psstebz.f
++++ b/SRC/psstebz.f
+@@ -244,14 +244,14 @@ SUBROUTINE PSSTEBZ( ICTXT, RANGE, ORDER, N, VL, VU, IL, IU,
+      $                   ITMP2, J, JB, K, LAST, LEXTRA, LREQ, MYCOL,
+      $                   MYROW, NALPHA, NBETA, NCMP, NEIGINT, NEXT, NGL,
+      $                   NGLOB, NGU, NINT, NPCOL, NPROW, OFFSET,
+-     $                   ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF,
+-     $                   TORECV
++     $                   ONEDCONTEXT, P, PREV, REXTRA, RREQ, SELF
+       REAL               ALPHA, ATOLI, BETA, BNORM, DRECV, DSEND, GL,
+      $                   GU, INITVL, INITVU, LSAVE, MID, PIVMIN, RELTOL,
+      $                   SAFEMN, TMP1, TMP2, TNORM, ULP
+ *     ..
+ *     .. Local Arrays ..
+       INTEGER            IDUM( 5, 2 )
++      INTEGER            TORECV( 1, 1 )
+ *     ..
+ *     .. Executable Statements ..
+ *       This is just to keep ftnchek happy
+@@ -774,14 +774,14 @@ SUBROUTINE PSSTEBZ( ICTXT, RANGE, ORDER, N, VL, VU, IL, IU,
+          ELSE
+             CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', 1, 1, TORECV, 1, 0,
+      $                    I-1 )
+-            IF( TORECV.NE.0 ) THEN
+-               CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, IWORK,
+-     $                       TORECV, 0, I-1 )
+-               CALL SGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1, WORK,
+-     $                       TORECV, 0, I-1 )
+-               CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV, 1,
+-     $                       IWORK( N+1 ), TORECV, 0, I-1 )
+-               DO 120 J = 1, TORECV
++            IF( TORECV( 1, 1 ).NE.0 ) THEN
++               CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1,
++     $                       IWORK, TORECV( 1, 1 ), 0, I-1 )
++               CALL SGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1,
++     $                       WORK, TORECV( 1, 1 ), 0, I-1 )
++               CALL IGEBR2D( ONEDCONTEXT, 'ALL', ' ', TORECV( 1, 1 ), 1,
++     $                       IWORK( N+1 ), TORECV( 1, 1 ), 0, I-1 )
++               DO 120 J = 1, TORECV( 1, 1 )
+                   W( IWORK( J ) ) = WORK( J )
+                   IBLOCK( IWORK( J ) ) = IWORK( N+J )
+   120          CONTINUE
+diff --git a/SRC/pstrord.f b/SRC/pstrord.f
+index 3562242..5cdb549 100644
+--- a/SRC/pstrord.f
++++ b/SRC/pstrord.f
+@@ -328,12 +328,13 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+      $                   EAST, WEST, ILOC4, SOUTH, NORTH, INDXS,
+      $                   ITT, JTT, ILEN, DLEN, INDXE, TRSRC1, TCSRC1,
+      $                   TRSRC2, TCSRC2, ILOS, DIR, TLIHI, TLILO, TLSEL,
+-     $                   ROUND, LAST, WIN0S, WIN0E, WINE, MMAX, MMIN
++     $                   ROUND, LAST, WIN0S, WIN0E, WINE
+       REAL               ELEM, ELEM1, ELEM2, ELEM3, ELEM4, SN, CS, TMP,
+      $                   ELEM5
+ *     ..
+ *     .. Local Arrays ..
+-      INTEGER            IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 )
++      INTEGER            IBUFF( 8 ), IDUM1( 1 ), IDUM2( 1 ), MMAX( 1 ),
++     $                    MMIN( 1 ), INFODUM( 1 )
+ *     ..
+ *     .. External Functions ..
+       LOGICAL            LSAME
+@@ -483,16 +484,16 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+                END IF
+                IF( SELECT(K).NE.0 ) M = M + 1
+  10         CONTINUE
+-            MMAX = M
+-            MMIN = M
++            MMAX( 1 ) = M
++            MMIN( 1 ) = M
+             IF( NPROCS.GT.1 )
+      $         CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1,
+      $              -1, -1, -1, -1 )
+             IF( NPROCS.GT.1 )
+      $         CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1,
+      $              -1, -1, -1, -1 )
+-            IF( MMAX.GT.MMIN ) THEN
+-               M = MMAX
++            IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN
++               M = MMAX( 1 )
+                IF( NPROCS.GT.1 )
+      $            CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, SELECT, N,
+      $                 -1, -1, -1, -1, -1 )
+@@ -520,9 +521,11 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+ *
+ *     Global maximum on info.
+ *
+-      IF( NPROCS.GT.1 )
+-     $   CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -1, -1,
+-     $        -1, -1 )
++      IF( NPROCS.GT.1 ) THEN
++            CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, -1,
++     $        -1, -1, -1 )
++            INFO = INFODUM( 1 )
++      END IF
+ *
+ *     Return if some argument is incorrect.
+ *
+@@ -1576,9 +1579,11 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+ *        experienced a failure in the reordering.
+ *
+          MYIERR = IERR
+-         IF( NPROCS.GT.1 )
+-     $      CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1,
++         IF( NPROCS.GT.1 ) THEN
++            CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1,
+      $           -1, -1, -1, -1 )
++            IERR = INFODUM( 1 )
++         END IF
+ *
+          IF( IERR.NE.0 ) THEN
+ *
+@@ -1586,9 +1591,11 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+ *           to swap.
+ *
+             IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1)
+-            IF( NPROCS.GT.1 )
+-     $         CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1,
++            IF( NPROCS.GT.1 ) THEN
++               CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1,
+      $              -1, -1, -1, -1 )
++               INFO = INFODUM( 1 )
++            END IF
+             GO TO 300
+          END IF
+ *
+@@ -3245,9 +3252,11 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+ *        experienced a failure in the reordering.
+ *
+          MYIERR = IERR
+-         IF( NPROCS.GT.1 )
+-     $      CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, IERR, 1, -1,
++         IF( NPROCS.GT.1 ) THEN
++            CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1,
+      $           -1, -1, -1, -1 )
++            IERR = INFODUM( 1 )
++         END IF
+ *
+          IF( IERR.NE.0 ) THEN
+ *
+@@ -3255,9 +3264,11 @@ SUBROUTINE PSTRORD( COMPQ, SELECT, PARA, N, T, IT, JT,
+ *           to swap.
+ *
+             IF( MYIERR.NE.0 ) INFO = MAX(1,I+KKS-1)
+-            IF( NPROCS.GT.1 )
+-     $         CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1,
++            IF( NPROCS.GT.1 ) THEN
++               CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1,
+      $              -1, -1, -1, -1 )
++               INFO = INFODUM( 1 )
++            END IF
+             GO TO 300
+          END IF
+ *
+diff --git a/SRC/pstrsen.f b/SRC/pstrsen.f
+index 6219bdb..1922e8f 100644
+--- a/SRC/pstrsen.f
++++ b/SRC/pstrsen.f
+@@ -354,13 +354,15 @@ SUBROUTINE PSTRSEN( JOB, COMPQ, SELECT, PARA, N, T, IT, JT,
+       LOGICAL            LQUERY, WANTBH, WANTQ, WANTS, WANTSP
+       INTEGER            ICOFFT12, ICTXT, IDUM1, IDUM2, IERR, ILOC1,
+      $                   IPW1, ITER, ITT, JLOC1, JTT, K, LIWMIN, LLDT,
+-     $                   LLDQ, LWMIN, MMAX, MMIN, MYROW, MYCOL, N1, N2,
++     $                   LLDQ, LWMIN, MYROW, MYCOL, N1, N2,
+      $                   NB, NOEXSY, NPCOL, NPROCS, NPROW, SPACE,
+      $                   T12ROWS, T12COLS, TCOLS, TCSRC, TROWS, TRSRC,
+      $                   WRK1, IWRK1, WRK2, IWRK2, WRK3, IWRK3
+-      REAL               DPDUM1, ELEM, EST, SCALE, RNORM
++      REAL               ELEM, EST, SCALE, RNORM
+ *     .. Local Arrays ..
+-      INTEGER            DESCT12( DLEN_ ), MBNB2( 2 )
++      INTEGER            DESCT12( DLEN_ ), MBNB2( 2 ), MMAX( 1 ),
++     $                   MMIN( 1 ), INFODUM( 1 )
++      REAL               DPDUM1( 1 )
+ *     ..
+ *     .. External Functions ..
+       LOGICAL            LSAME
+@@ -521,16 +523,16 @@ SUBROUTINE PSTRSEN( JOB, COMPQ, SELECT, PARA, N, T, IT, JT,
+                END IF
+                IF( SELECT(K) ) M = M + 1
+  10         CONTINUE
+-            MMAX = M
+-            MMIN = M
++            MMAX( 1 ) = M
++            MMIN( 1 ) = M
+             IF( NPROCS.GT.1 )
+      $           CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, MMAX, 1, -1,
+      $                -1, -1, -1, -1 )
+             IF( NPROCS.GT.1 )
+      $           CALL IGAMN2D( ICTXT, 'All', TOP, 1, 1, MMIN, 1, -1,
+      $                -1, -1, -1, -1 )
+-            IF( MMAX.GT.MMIN ) THEN
+-               M = MMAX
++            IF( MMAX( 1 ).GT.MMIN( 1 ) ) THEN
++               M = MMAX( 1 )
+                IF( NPROCS.GT.1 )
+      $              CALL IGAMX2D( ICTXT, 'All', TOP, N, 1, IWORK, N,
+      $                   -1, -1, -1, -1, -1 )
+@@ -602,9 +604,11 @@ SUBROUTINE PSTRSEN( JOB, COMPQ, SELECT, PARA, N, T, IT, JT,
+ *
+ *     Global maximum on info
+ *
+-      IF( NPROCS.GT.1 )
+-     $     CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFO, 1, -1, -1, -1,
++      IF( NPROCS.GT.1 ) THEN
++         CALL IGAMX2D( ICTXT, 'All', TOP, 1, 1, INFODUM, 1, -1, -1, -1,
+      $          -1, -1 )
++         INFO = INFODUM( 1 )
++      END IF
+ *
+ *     Return if some argument is incorrect
+ *
+diff --git a/SRC/pzlarf.f b/SRC/pzlarf.f
+index df65912..7bff287 100644
+--- a/SRC/pzlarf.f
++++ b/SRC/pzlarf.f
+@@ -242,7 +242,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+      $                   IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC,
+      $                   LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW,
+      $                   NQ, RDEST
+-      COMPLEX*16         TAULOC
++      COMPLEX*16         TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV,
+@@ -336,7 +336,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+                   ELSE
+ *
+@@ -345,7 +345,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -363,8 +363,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+-                     CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                           1, C( IOFFC ), LDC )
++                     CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                           WORK( IPW ), 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -379,9 +379,9 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYCOL.EQ.ICCOL ) THEN
+ *
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -398,7 +398,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL ZGERC( MP, NQ, -TAULOC, V( IOFFV ), 1,
++                        CALL ZGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1,
+      $                              WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -421,9 +421,9 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = MP+1
+                      CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -441,7 +441,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL ZGERC( MP, NQ, -TAULOC, WORK, 1,
++                        CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                              WORK( IPW ), 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -471,7 +471,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+@@ -480,7 +480,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -500,8 +500,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                           1, C( IOFFC ), LDC )
++     $               CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                           WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -516,18 +516,18 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( JJV )
+                   CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+                   IPW = MP+1
+                   CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -547,8 +547,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                           1, C( IOFFC ), LDC )
++     $               CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                           WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+@@ -577,9 +577,9 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYROW.EQ.ICROW ) THEN
+ *
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -597,7 +597,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+                         IF( IOFFV.GT.0 .AND. IOFFC.GT.0 )
+-     $                     CALL ZGERC( MP, NQ, -TAULOC, WORK, 1,
++     $                     CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                                 V( IOFFV ), LDV, C( IOFFC ),
+      $                                 LDC )
+                      END IF
+@@ -621,9 +621,9 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = NQ+1
+                      CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -641,8 +641,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1,
+-     $                              WORK, 1, C( IOFFC ), LDC )
++                        CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ),
++     $                              1, WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -667,7 +667,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+                   ELSE
+ *
+@@ -676,7 +676,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -694,8 +694,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                           1, C( IOFFC ), LDC )
++                     CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                           WORK, 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -720,18 +720,18 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( IIV )
+                   CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+                   IPW = NQ+1
+                   CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -750,8 +750,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+                   IF( IOFFC.GT.0 )
+-     $               CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                           1, C( IOFFC ), LDC )
++     $               CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                           WORK, 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -770,7 +770,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+@@ -779,7 +779,7 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -797,8 +797,8 @@ SUBROUTINE PZLARF( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1,
+-     $                        C( IOFFC ), LDC )
++                  CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pzlarfc.f b/SRC/pzlarfc.f
+index eb469fc..ddd7ec6 100644
+--- a/SRC/pzlarfc.f
++++ b/SRC/pzlarfc.f
+@@ -242,7 +242,7 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+      $                   IOFFV, IPW, IROFF, IVCOL, IVROW, JJC, JJV, LDC,
+      $                   LDV, MYCOL, MYROW, MP, NCC, NCV, NPCOL, NPROW,
+      $                   NQ, RDEST
+-      COMPLEX*16         TAULOC
++      COMPLEX*16         TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV,
+@@ -336,17 +336,17 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = DCONJG( TAU( IIV ) )
++                     TAULOC( 1 ) = DCONJG( TAU( IIV ) )
+ *
+                   ELSE
+ *
+                      CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAULOC, 1, IVROW, MYCOL )
+-                     TAULOC = DCONJG( TAULOC )
++                     TAULOC( 1 ) = DCONJG( TAULOC( 1 ) )
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -364,8 +364,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+-                     CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                           1, C( IOFFC ), LDC )
++                     CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                           WORK( IPW ), 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -380,9 +380,9 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYCOL.EQ.ICCOL ) THEN
+ *
+-                     TAULOC = DCONJG( TAU( JJV ) )
++                     TAULOC( 1 ) = DCONJG( TAU( JJV ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -399,7 +399,7 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL ZGERC( MP, NQ, -TAULOC, V( IOFFV ), 1,
++                        CALL ZGERC( MP, NQ, -TAULOC( 1 ), V( IOFFV ), 1,
+      $                              WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -422,9 +422,9 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = MP+1
+                      CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = DCONJG( WORK( IPW ) )
++                     TAULOC( 1 ) = DCONJG( WORK( IPW ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -442,7 +442,7 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+-                        CALL ZGERC( MP, NQ, -TAULOC, WORK, 1,
++                        CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                              WORK( IPW ), 1, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -472,17 +472,17 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = DCONJG( TAU( IIV ) )
++                  TAULOC( 1 ) = DCONJG( TAU( IIV ) )
+ *
+                ELSE
+ *
+                   CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC,
+      $                          1, IVROW, MYCOL )
+-                  TAULOC = DCONJG( TAULOC )
++                  TAULOC( 1 ) = DCONJG( TAULOC( 1 ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -500,8 +500,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+-                  CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1,
+-     $                        C( IOFFC ), LDC )
++                  CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -516,18 +516,18 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( JJV )
+                   CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = DCONJG( TAU( JJV ) )
++                  TAULOC( 1 ) = DCONJG( TAU( JJV ) )
+ *
+                ELSE
+ *
+                   IPW = MP+1
+                   CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = DCONJG( WORK( IPW ) )
++                  TAULOC( 1 ) = DCONJG( WORK( IPW ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -545,8 +545,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+-                  CALL ZGERC( MP, NQ, -TAULOC, WORK, 1, WORK( IPW ), 1,
+-     $                        C( IOFFC ), LDC )
++                  CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+@@ -575,9 +575,9 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   IF( MYROW.EQ.ICROW ) THEN
+ *
+-                     TAULOC = DCONJG( TAU( IIV ) )
++                     TAULOC( 1 ) = DCONJG( TAU( IIV ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -594,7 +594,7 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL ZGERC( MP, NQ, -TAULOC, WORK, 1,
++                        CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK, 1,
+      $                              V( IOFFV ), LDV, C( IOFFC ), LDC )
+                      END IF
+ *
+@@ -617,9 +617,9 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                      IPW = NQ+1
+                      CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = DCONJG( WORK( IPW ) )
++                     TAULOC( 1 ) = DCONJG( WORK( IPW ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -637,8 +637,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1,
+-     $                              WORK, 1, C( IOFFC ), LDC )
++                        CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ),
++     $                              1, WORK, 1, C( IOFFC ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -663,17 +663,17 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                      CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = DCONJG( TAU( JJV ) )
++                     TAULOC( 1 ) = DCONJG( TAU( JJV ) )
+ *
+                   ELSE
+ *
+                      CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC,
+      $                             1, MYROW, IVCOL )
+-                     TAULOC = DCONJG( TAULOC )
++                     TAULOC( 1 ) = DCONJG( TAULOC( 1 ) )
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -691,8 +691,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                           1, C( IOFFC ), LDC )
++                     CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                           WORK, 1, C( IOFFC ), LDC )
+                   END IF
+ *
+                END IF
+@@ -716,18 +716,18 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+                   WORK(IPW) = TAU( IIV )
+                   CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = DCONJG( TAU( IIV ) )
++                  TAULOC( 1 ) = DCONJG( TAU( IIV ) )
+ *
+                ELSE
+ *
+                   IPW = NQ+1
+                   CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = DCONJG( WORK( IPW ) )
++                  TAULOC( 1 ) = DCONJG( WORK( IPW ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -745,8 +745,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1,
+-     $                        C( IOFFC ), LDC )
++                  CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC ), LDC )
+                END IF
+ *
+             ELSE
+@@ -765,17 +765,17 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+                   CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = DCONJG( TAU( JJV ) )
++                  TAULOC( 1 ) = DCONJG( TAU( JJV ) )
+ *
+                ELSE
+ *
+                   CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1,
+      $                          MYROW, IVCOL )
+-                  TAULOC = DCONJG( TAULOC )
++                  TAULOC( 1 ) = DCONJG( TAULOC( 1 ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -793,8 +793,8 @@ SUBROUTINE PZLARFC( SIDE, M, N, V, IV, JV, DESCV, INCV, TAU,
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL ZGERC( MP, NQ, -TAULOC, WORK( IPW ), 1, WORK, 1,
+-     $                        C( IOFFC ), LDC )
++                  CALL ZGERC( MP, NQ, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pzlarz.f b/SRC/pzlarz.f
+index fefc133..abf6288 100644
+--- a/SRC/pzlarz.f
++++ b/SRC/pzlarz.f
+@@ -251,7 +251,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                   IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2,
+      $                   MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW,
+      $                   NQC2, NQV, RDEST
+-      COMPLEX*16         TAULOC
++      COMPLEX*16         TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV,
+@@ -370,7 +370,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+                   ELSE
+ *
+@@ -379,7 +379,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -402,9 +402,9 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+                      IF( MYROW.EQ.ICROW1 )
+-     $                  CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                  CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                              MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                     CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1,
++                     CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                           WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+@@ -420,9 +420,9 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYCOL.EQ.ICCOL2 ) THEN
+ *
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -445,11 +445,11 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL ZAXPY( NQC2, -TAULOC, WORK,
++     $                     CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK,
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL ZGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1,
+-     $                              WORK, 1, C( IOFFC2 ), LDC )
++                        CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ),
++     $                              1, WORK, 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -471,9 +471,9 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = MPV+1
+                      CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -496,10 +496,10 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                     CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1,
++                        CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                              WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+@@ -530,7 +530,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+@@ -539,7 +539,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -562,10 +562,10 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -580,18 +580,18 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( JJV )
+                   CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+                   IPW = MPV+1
+                   CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -614,10 +614,10 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+@@ -646,9 +646,9 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYROW.EQ.ICROW2 ) THEN
+ *
+-                     TAULOC = TAU( IIV )
++                     TAULOC( 1 ) = TAU( IIV )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -669,13 +669,13 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                               ICCOL2 )
+ *
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL ZAXPY( MPC2, -TAULOC, WORK, 1,
++     $                     CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK, 1,
+      $                                 C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+                         IF( MPC2.GT.0 .AND. NQV.GT.0 )
+-     $                     CALL ZGERC( MPC2, NQV, -TAULOC, WORK, 1,
++     $                     CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1,
+      $                                 V( IOFFV ), LDV, C( IOFFC2 ),
+      $                                 LDC )
+                      END IF
+@@ -699,9 +699,9 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = NQV+1
+                      CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = WORK( IPW )
++                     TAULOC( 1 ) = WORK( IPW )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -720,13 +720,14 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                                WORK( IPW ), MAX( 1, MPC2 ),
+      $                                RDEST, ICCOL2 )
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
+-     $                                 C( IOFFC1 ), 1 )
++     $                     CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ),
++     $                                 1, C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
+-     $                              WORK, 1, C( IOFFC2 ), LDC )
++                        CALL ZGERC( MPC2, NQV, -TAULOC( 1 ),
++     $                              WORK( IPW ), 1, WORK, 1,
++     $                              C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -751,7 +752,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = TAU( JJV )
++                     TAULOC( 1 ) = TAU( JJV )
+ *
+                   ELSE
+ *
+@@ -760,7 +761,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -779,13 +780,13 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                             WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                             ICCOL2 )
+                      IF( MYCOL.EQ.ICCOL1 )
+-     $                  CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $                  CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                              C( IOFFC1 ), 1 )
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
+-     $                           WORK, 1, C( IOFFC2 ), LDC )
++                     CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ),
++     $                           1, WORK, 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+                END IF
+@@ -809,18 +810,18 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( IIV )
+                   CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = TAU( IIV )
++                  TAULOC( 1 ) = TAU( IIV )
+ *
+                ELSE
+ *
+                   IPW = NQV+1
+                   CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = WORK( IPW )
++                  TAULOC( 1 ) = WORK( IPW )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -840,13 +841,13 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -865,7 +866,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = TAU( JJV )
++                  TAULOC( 1 ) = TAU( JJV )
+ *
+                ELSE
+ *
+@@ -874,7 +875,7 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -893,13 +894,13 @@ SUBROUTINE PZLARZ( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pzlarzc.f b/SRC/pzlarzc.f
+index 936caec..2c574ff 100644
+--- a/SRC/pzlarzc.f
++++ b/SRC/pzlarzc.f
+@@ -251,7 +251,7 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                   IVCOL, IVROW, JJC1, JJC2, JJV, LDC, LDV, MPC2,
+      $                   MPV, MYCOL, MYROW, NCC, NCV, NPCOL, NPROW,
+      $                   NQC2, NQV, RDEST
+-      COMPLEX*16         TAULOC
++      COMPLEX*16         TAULOC( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, INFOG2L, PB_TOPGET, PBZTRNV,
+@@ -370,17 +370,17 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAU( IIV ), 1 )
+-                     TAULOC = DCONJG( TAU( IIV ) )
++                     TAULOC( 1 ) = DCONJG( TAU( IIV ) )
+ *
+                   ELSE
+ *
+                      CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                             TAULOC, 1, IVROW, MYCOL )
+-                     TAULOC = DCONJG( TAULOC )
++                     TAULOC( 1 ) = DCONJG( TAULOC( 1 ) )
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C )' * v
+ *
+@@ -403,9 +403,9 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                    sub( C ) := sub( C ) - v * w'
+ *
+                      IF( MYROW.EQ.ICROW1 )
+-     $                  CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                  CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                              MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                     CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1,
++                     CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                           WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+@@ -421,9 +421,9 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYCOL.EQ.ICCOL2 ) THEN
+ *
+-                     TAULOC = DCONJG( TAU( JJV ) )
++                     TAULOC( 1 ) = DCONJG( TAU( JJV ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -446,11 +446,11 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL ZAXPY( NQC2, -TAULOC, WORK,
++     $                     CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK,
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL ZGERC( MPV, NQC2, -TAULOC, V( IOFFV ), 1,
+-     $                              WORK, 1, C( IOFFC2 ), LDC )
++                        CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), V( IOFFV ),
++     $                              1, WORK, 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -472,9 +472,9 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = MPV+1
+                      CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, MYROW,
+      $                             IVCOL )
+-                     TAULOC = DCONJG( WORK( IPW ) )
++                     TAULOC( 1 ) = DCONJG( WORK( IPW ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C )' * v
+ *
+@@ -497,10 +497,10 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                       sub( C ) := sub( C ) - v * w'
+ *
+                         IF( MYROW.EQ.ICROW1 )
+-     $                     CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $                     CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                                 MAX( 1, NQC2 ), C( IOFFC1 ),
+      $                                 LDC )
+-                        CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1,
++                        CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
+      $                              WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                      END IF
+ *
+@@ -531,17 +531,17 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL ZGEBS2D( ICTXT, 'Columnwise', ' ', 1, 1,
+      $                          TAU( IIV ), 1 )
+-                  TAULOC = DCONJG( TAU( IIV ) )
++                  TAULOC( 1 ) = DCONJG( TAU( IIV ) )
+ *
+                ELSE
+ *
+                   CALL ZGEBR2D( ICTXT, 'Columnwise', ' ', 1, 1, TAULOC,
+      $                          1, IVROW, MYCOL )
+-                  TAULOC = DCONJG( TAULOC )
++                  TAULOC( 1 ) = DCONJG( TAULOC( 1 ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -564,10 +564,10 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -582,18 +582,18 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( JJV )
+                   CALL ZGEBS2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = DCONJG( TAU( JJV ) )
++                  TAULOC( 1 ) = DCONJG( TAU( JJV ) )
+ *
+                ELSE
+ *
+                   IPW = MPV+1
+                   CALL ZGEBR2D( ICTXT, 'Rowwise', ROWBTOP, IPW, 1, WORK,
+      $                          IPW, MYROW, IVCOL )
+-                  TAULOC = DCONJG( WORK( IPW ) )
++                  TAULOC( 1 ) = DCONJG( WORK( IPW ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C )' * v
+ *
+@@ -616,10 +616,10 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *                 sub( C ) := sub( C ) - v * w'
+ *
+                   IF( MYROW.EQ.ICROW1 )
+-     $               CALL ZAXPY( NQC2, -TAULOC, WORK( IPW ),
++     $               CALL ZAXPY( NQC2, -TAULOC( 1 ), WORK( IPW ),
+      $                           MAX( 1, NQC2 ), C( IOFFC1 ), LDC )
+-                  CALL ZGERC( MPV, NQC2, -TAULOC, WORK, 1, WORK( IPW ),
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL ZGERC( MPV, NQC2, -TAULOC( 1 ), WORK, 1,
++     $                        WORK( IPW ), 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+@@ -648,9 +648,9 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   IF( MYROW.EQ.ICROW2 ) THEN
+ *
+-                     TAULOC = DCONJG( TAU( IIV ) )
++                     TAULOC( 1 ) = DCONJG( TAU( IIV ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -671,12 +671,12 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                               ICCOL2 )
+ *
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL ZAXPY( MPC2, -TAULOC, WORK, 1,
++     $                     CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK, 1,
+      $                                 C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL ZGERC( MPC2, NQV, -TAULOC, WORK, 1,
++                        CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK, 1,
+      $                              V( IOFFV ), LDV, C( IOFFC2 ), LDC )
+                      END IF
+ *
+@@ -699,9 +699,9 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                      IPW = NQV+1
+                      CALL ZGERV2D( ICTXT, IPW, 1, WORK, IPW, IVROW,
+      $                             MYCOL )
+-                     TAULOC = DCONJG( WORK( IPW ) )
++                     TAULOC( 1 ) = DCONJG( WORK( IPW ) )
+ *
+-                     IF( TAULOC.NE.ZERO ) THEN
++                     IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                       w := sub( C ) * v
+ *
+@@ -720,13 +720,14 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                                WORK( IPW ), MAX( 1, MPC2 ),
+      $                                RDEST, ICCOL2 )
+                         IF( MYCOL.EQ.ICCOL1 )
+-     $                     CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
+-     $                                 C( IOFFC1 ), 1 )
++     $                     CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ),
++     $                                 1, C( IOFFC1 ), 1 )
+ *
+ *                       sub( C ) := sub( C ) - w * v'
+ *
+-                        CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
+-     $                              WORK, 1, C( IOFFC2 ), LDC )
++                        CALL ZGERC( MPC2, NQV, -TAULOC( 1 ),
++     $                              WORK( IPW ), 1, WORK, 1,
++     $                              C( IOFFC2 ), LDC )
+                      END IF
+ *
+                   END IF
+@@ -751,17 +752,17 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                      CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1,
+      $                             TAU( JJV ), 1 )
+-                     TAULOC = DCONJG( TAU( JJV ) )
++                     TAULOC( 1 ) = DCONJG( TAU( JJV ) )
+ *
+                   ELSE
+ *
+                      CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC,
+      $                             1, MYROW, IVCOL )
+-                     TAULOC = DCONJG( TAULOC )
++                     TAULOC( 1 ) = DCONJG( TAULOC( 1 ) )
+ *
+                   END IF
+ *
+-                  IF( TAULOC.NE.ZERO ) THEN
++                  IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                    w := sub( C ) * v
+ *
+@@ -780,13 +781,13 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                             WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                             ICCOL2 )
+                      IF( MYCOL.EQ.ICCOL1 )
+-     $                  CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $                  CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                              C( IOFFC1 ), 1 )
+ *
+ *                    sub( C ) := sub( C ) - w * v'
+ *
+-                     CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1,
+-     $                           WORK, 1, C( IOFFC2 ), LDC )
++                     CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ),
++     $                           1, WORK, 1, C( IOFFC2 ), LDC )
+                   END IF
+ *
+                END IF
+@@ -810,18 +811,18 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+                   WORK( IPW ) = TAU( IIV )
+                   CALL ZGEBS2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW )
+-                  TAULOC = DCONJG( TAU( IIV ) )
++                  TAULOC( 1 ) = DCONJG( TAU( IIV ) )
+ *
+                ELSE
+ *
+                   IPW = NQV+1
+                   CALL ZGEBR2D( ICTXT, 'Columnwise', COLBTOP, IPW, 1,
+      $                          WORK, IPW, IVROW, MYCOL )
+-                  TAULOC = DCONJG( WORK( IPW ) )
++                  TAULOC( 1 ) = DCONJG( WORK( IPW ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -841,13 +842,13 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             ELSE
+@@ -866,17 +867,17 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+ *
+                   CALL ZGEBS2D( ICTXT, 'Rowwise', ' ', 1, 1, TAU( JJV ),
+      $                          1 )
+-                  TAULOC = DCONJG( TAU( JJV ) )
++                  TAULOC( 1 ) = DCONJG( TAU( JJV ) )
+ *
+                ELSE
+ *
+                   CALL ZGEBR2D( ICTXT, 'Rowwise', ' ', 1, 1, TAULOC, 1,
+      $                          MYROW, IVCOL )
+-                  TAULOC = DCONJG( TAULOC )
++                  TAULOC( 1 ) = DCONJG( TAULOC( 1 ) )
+ *
+                END IF
+ *
+-               IF( TAULOC.NE.ZERO ) THEN
++               IF( TAULOC( 1 ).NE.ZERO ) THEN
+ *
+ *                 w := sub( C ) * v
+ *
+@@ -895,13 +896,13 @@ SUBROUTINE PZLARZC( SIDE, M, N, L, V, IV, JV, DESCV, INCV, TAU, C,
+      $                          WORK( IPW ), MAX( 1, MPC2 ), RDEST,
+      $                          ICCOL2 )
+                   IF( MYCOL.EQ.ICCOL1 )
+-     $               CALL ZAXPY( MPC2, -TAULOC, WORK( IPW ), 1,
++     $               CALL ZAXPY( MPC2, -TAULOC( 1 ), WORK( IPW ), 1,
+      $                           C( IOFFC1 ), 1 )
+ *
+ *                 sub( C ) := sub( C ) - w * v'
+ *
+-                  CALL ZGERC( MPC2, NQV, -TAULOC, WORK( IPW ), 1, WORK,
+-     $                        1, C( IOFFC2 ), LDC )
++                  CALL ZGERC( MPC2, NQV, -TAULOC( 1 ), WORK( IPW ), 1,
++     $                        WORK, 1, C( IOFFC2 ), LDC )
+                END IF
+ *
+             END IF
+diff --git a/SRC/pzlattrs.f b/SRC/pzlattrs.f
+index 819e476..5a54209 100644
+--- a/SRC/pzlattrs.f
++++ b/SRC/pzlattrs.f
+@@ -271,8 +271,9 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+      $                   JINC, JLAST, LDA, LDX, MB, MYCOL, MYROW, NB,
+      $                   NPCOL, NPROW, RSRC
+       DOUBLE PRECISION   BIGNUM, GROW, REC, SMLNUM, TJJ, TMAX, TSCAL,
+-     $                   XBND, XJ, XMAX
++     $                   XBND, XJ
+       COMPLEX*16         CSUMJ, TJJS, USCAL, XJTMP, ZDUM
++      DOUBLE PRECISION   XMAX( 1 )
+ *     ..
+ *     .. External Functions ..
+       LOGICAL            LSAME
+@@ -391,11 +392,11 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+ *     Compute a bound on the computed solution vector to see if the
+ *     Level 2 PBLAS routine PZTRSV can be used.
+ *
+-      XMAX = ZERO
++      XMAX( 1 ) = ZERO
+       CALL PZAMAX( N, ZDUM, IMAX, X, IX, JX, DESCX, 1 )
+-      XMAX = CABS2( ZDUM )
++      XMAX( 1 ) = CABS2( ZDUM )
+       CALL DGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1, -1, -1 )
+-      XBND = XMAX
++      XBND = XMAX( 1 )
+ *
+       IF( NOTRAN ) THEN
+ *
+@@ -590,16 +591,16 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+ *
+ *        Use a Level 1 PBLAS solve, scaling intermediate results.
+ *
+-         IF( XMAX.GT.BIGNUM*HALF ) THEN
++         IF( XMAX( 1 ).GT.BIGNUM*HALF ) THEN
+ *
+ *           Scale X so that its components are less than or equal to
+ *           BIGNUM in absolute value.
+ *
+-            SCALE = ( BIGNUM*HALF ) / XMAX
++            SCALE = ( BIGNUM*HALF ) / XMAX( 1 )
+             CALL PZDSCAL( N, SCALE, X, IX, JX, DESCX, 1 )
+-            XMAX = BIGNUM
++            XMAX( 1 ) = BIGNUM
+          ELSE
+-            XMAX = XMAX*TWO
++            XMAX( 1 ) = XMAX( 1 )*TWO
+          END IF
+ *
+          IF( NOTRAN ) THEN
+@@ -651,7 +652,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                         CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                         XJTMP = XJTMP*REC
+                         SCALE = SCALE*REC
+-                        XMAX = XMAX*REC
++                        XMAX( 1 ) = XMAX( 1 )*REC
+                      END IF
+                   END IF
+ *                 X( J ) = ZLADIV( X( J ), TJJS )
+@@ -682,7 +683,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                      XJTMP = XJTMP*REC
+                      SCALE = SCALE*REC
+-                     XMAX = XMAX*REC
++                     XMAX( 1 ) = XMAX( 1 )*REC
+                   END IF
+ *                 X( J ) = ZLADIV( X( J ), TJJS )
+ *                 XJ = CABS1( X( J ) )
+@@ -706,7 +707,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                   XJTMP = CONE
+                   XJ = ONE
+                   SCALE = ZERO
+-                  XMAX = ZERO
++                  XMAX( 1 ) = ZERO
+                END IF
+    90          CONTINUE
+ *
+@@ -715,7 +716,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+ *
+                IF( XJ.GT.ONE ) THEN
+                   REC = ONE / XJ
+-                  IF( CNORM( J ).GT.( BIGNUM-XMAX )*REC ) THEN
++                  IF( CNORM( J ).GT.( BIGNUM-XMAX( 1 ) )*REC ) THEN
+ *
+ *                    Scale x by 1/(2*abs(x(j))).
+ *
+@@ -724,7 +725,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      XJTMP = XJTMP*REC
+                      SCALE = SCALE*REC
+                   END IF
+-               ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX ) ) THEN
++               ELSE IF( XJ*CNORM( J ).GT.( BIGNUM-XMAX( 1 ) ) ) THEN
+ *
+ *                 Scale x by 1/2.
+ *
+@@ -743,7 +744,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      CALL PZAXPY( J-1, ZDUM, A, IA, JA+J-1, DESCA, 1, X,
+      $                            IX, JX, DESCX, 1 )
+                      CALL PZAMAX( J-1, ZDUM, IMAX, X, IX, JX, DESCX, 1 )
+-                     XMAX = CABS1( ZDUM )
++                     XMAX( 1 ) = CABS1( ZDUM )
+                      CALL DGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1,
+      $                             -1, -1 )
+                   END IF
+@@ -757,7 +758,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      CALL PZAXPY( N-J, ZDUM, A, IA+J, JA+J-1, DESCA, 1,
+      $                            X, IX+J, JX, DESCX, 1 )
+                      CALL PZAMAX( N-J, ZDUM, I, X, IX+J, JX, DESCX, 1 )
+-                     XMAX = CABS1( ZDUM )
++                     XMAX( 1 ) = CABS1( ZDUM )
+                      CALL DGSUM2D( CONTXT, 'Row', ' ', 1, 1, XMAX, 1,
+      $                             -1, -1 )
+                   END IF
+@@ -785,7 +786,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                END IF
+                XJ = CABS1( XJTMP )
+                USCAL = DCMPLX( TSCAL )
+-               REC = ONE / MAX( XMAX, ONE )
++               REC = ONE / MAX( XMAX( 1 ), ONE )
+                IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN
+ *
+ *                 If x(j) could overflow, scale x by 1/(2*XMAX).
+@@ -820,7 +821,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                      XJTMP = XJTMP*REC
+                      SCALE = SCALE*REC
+-                     XMAX = XMAX*REC
++                     XMAX( 1 ) = XMAX( 1 )*REC
+                   END IF
+                END IF
+ *
+@@ -924,7 +925,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                            CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                            XJTMP = XJTMP*REC
+                            SCALE = SCALE*REC
+-                           XMAX = XMAX*REC
++                           XMAX( 1 ) = XMAX( 1 )*REC
+                         END IF
+                      END IF
+ *                    X( J ) = ZLADIV( X( J ), TJJS )
+@@ -945,7 +946,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                         CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                         XJTMP = XJTMP*REC
+                         SCALE = SCALE*REC
+-                        XMAX = XMAX*REC
++                        XMAX( 1 ) = XMAX( 1 )*REC
+                      END IF
+ *                    X( J ) = ZLADIV( X( J ), TJJS )
+                      XJTMP = ZLADIV( XJTMP, TJJS )
+@@ -966,7 +967,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      END IF
+                      XJTMP = CONE
+                      SCALE = ZERO
+-                     XMAX = ZERO
++                     XMAX( 1 ) = ZERO
+                   END IF
+   110             CONTINUE
+                ELSE
+@@ -981,7 +982,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      X( IROWX ) = XJTMP
+                   END IF
+                END IF
+-               XMAX = MAX( XMAX, CABS1( XJTMP ) )
++               XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) )
+   120       CONTINUE
+ *
+          ELSE
+@@ -1004,7 +1005,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                END IF
+                XJ = CABS1( XJTMP )
+                USCAL = TSCAL
+-               REC = ONE / MAX( XMAX, ONE )
++               REC = ONE / MAX( XMAX( 1 ), ONE )
+                IF( CNORM( J ).GT.( BIGNUM-XJ )*REC ) THEN
+ *
+ *                 If x(j) could overflow, scale x by 1/(2*XMAX).
+@@ -1039,7 +1040,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                      CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                      XJTMP = XJTMP*REC
+                      SCALE = SCALE*REC
+-                     XMAX = XMAX*REC
++                     XMAX( 1 ) = XMAX( 1 )*REC
+                   END IF
+                END IF
+ *
+@@ -1145,7 +1146,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                            CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                            XJTMP = XJTMP*REC
+                            SCALE = SCALE*REC
+-                           XMAX = XMAX*REC
++                           XMAX( 1 ) = XMAX( 1 )*REC
+                         END IF
+                      END IF
+ *                    X( J ) = ZLADIV( X( J ), TJJS )
+@@ -1164,7 +1165,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                         CALL PZDSCAL( N, REC, X, IX, JX, DESCX, 1 )
+                         XJTMP = XJTMP*REC
+                         SCALE = SCALE*REC
+-                        XMAX = XMAX*REC
++                        XMAX( 1 ) = XMAX( 1 )*REC
+                      END IF
+ *                    X( J ) = ZLADIV( X( J ), TJJS )
+                      XJTMP = ZLADIV( XJTMP, TJJS )
+@@ -1181,7 +1182,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+      $                  X( IROWX ) = CONE
+                      XJTMP = CONE
+                      SCALE = ZERO
+-                     XMAX = ZERO
++                     XMAX( 1 ) = ZERO
+                   END IF
+   130             CONTINUE
+                ELSE
+@@ -1194,7 +1195,7 @@ SUBROUTINE PZLATTRS( UPLO, TRANS, DIAG, NORMIN, N, A, IA, JA,
+                   IF( ( MYROW.EQ.ITMP1X ) .AND. ( MYCOL.EQ.ITMP2X ) )
+      $               X( IROWX ) = XJTMP
+                END IF
+-               XMAX = MAX( XMAX, CABS1( XJTMP ) )
++               XMAX( 1 ) = MAX( XMAX( 1 ), CABS1( XJTMP ) )
+   140       CONTINUE
+          END IF
+          SCALE = SCALE / TSCAL
+diff --git a/SRC/pzlawil.f b/SRC/pzlawil.f
+index e89a9a3..7e502ef 100644
+--- a/SRC/pzlawil.f
++++ b/SRC/pzlawil.f
+@@ -124,11 +124,10 @@ SUBROUTINE PZLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+      $                   MODKM1, MYCOL, MYROW, NPCOL, NPROW, NUM, RIGHT,
+      $                   RSRC, UP
+       DOUBLE PRECISION   S
+-      COMPLEX*16         CDUM, H11, H12, H21, H22, H33S, H44S, V1, V2,
+-     $                   V3
++      COMPLEX*16         CDUM, H22, H33S, H44S, V1, V2
+ *     ..
+ *     .. Local Arrays ..
+-      COMPLEX*16         BUF( 4 )
++      COMPLEX*16         BUF( 4 ), H11( 1 ), H12( 1 ), H21( 1 ), V3( 1 )
+ *     ..
+ *     .. External Subroutines ..
+       EXTERNAL           BLACS_GRIDINFO, INFOG2L, ZGERV2D, ZGESD2D
+@@ -181,18 +180,18 @@ SUBROUTINE PZLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+             IF( NPCOL.GT.1 ) THEN
+                CALL ZGERV2D( CONTXT, 1, 1, V3, 1, MYROW, LEFT )
+             ELSE
+-               V3 = A( ( ICOL-2 )*LDA+IROW )
++               V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+             END IF
+             IF( NUM.GT.1 ) THEN
+                CALL ZGERV2D( CONTXT, 4, 1, BUF, 4, UP, LEFT )
+-               H11 = BUF( 1 )
+-               H21 = BUF( 2 )
+-               H12 = BUF( 3 )
++               H11( 1 ) = BUF( 1 )
++               H21( 1 ) = BUF( 2 )
++               H12( 1 ) = BUF( 3 )
+                H22 = BUF( 4 )
+             ELSE
+-               H11 = A( ( ICOL-3 )*LDA+IROW-2 )
+-               H21 = A( ( ICOL-3 )*LDA+IROW-1 )
+-               H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++               H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
++               H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
++               H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+                H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+             END IF
+          END IF
+@@ -225,20 +224,20 @@ SUBROUTINE PZLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+             IF( NUM.GT.1 ) THEN
+                CALL ZGERV2D( CONTXT, 1, 1, H11, 1, UP, LEFT )
+             ELSE
+-               H11 = A( ( ICOL-3 )*LDA+IROW-2 )
++               H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
+             END IF
+             IF( NPROW.GT.1 ) THEN
+                CALL ZGERV2D( CONTXT, 1, 1, H12, 1, UP, MYCOL )
+             ELSE
+-               H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++               H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+             END IF
+             IF( NPCOL.GT.1 ) THEN
+                CALL ZGERV2D( CONTXT, 1, 1, H21, 1, MYROW, LEFT )
+             ELSE
+-               H21 = A( ( ICOL-3 )*LDA+IROW-1 )
++               H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
+             END IF
+             H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+-            V3 = A( ( ICOL-2 )*LDA+IROW )
++            V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+          END IF
+       END IF
+       IF( ( MYROW.NE.II ) .OR. ( MYCOL.NE.JJ ) )
+@@ -247,24 +246,24 @@ SUBROUTINE PZLAWIL( II, JJ, M, A, DESCA, H44, H33, H43H34, V )
+       IF( MODKM1.GT.1 ) THEN
+          CALL INFOG2L( M+2, M+2, DESCA, NPROW, NPCOL, MYROW, MYCOL,
+      $                 IROW, ICOL, RSRC, JSRC )
+-         H11 = A( ( ICOL-3 )*LDA+IROW-2 )
+-         H21 = A( ( ICOL-3 )*LDA+IROW-1 )
+-         H12 = A( ( ICOL-2 )*LDA+IROW-2 )
++         H11( 1 ) = A( ( ICOL-3 )*LDA+IROW-2 )
++         H21( 1 ) = A( ( ICOL-3 )*LDA+IROW-1 )
++         H12( 1 ) = A( ( ICOL-2 )*LDA+IROW-2 )
+          H22 = A( ( ICOL-2 )*LDA+IROW-1 )
+-         V3 = A( ( ICOL-2 )*LDA+IROW )
++         V3( 1 ) = A( ( ICOL-2 )*LDA+IROW )
+       END IF
+ *
+-      H44S = H44 - H11
+-      H33S = H33 - H11
+-      V1 = ( H33S*H44S-H43H34 ) / H21 + H12
+-      V2 = H22 - H11 - H33S - H44S
+-      S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 )
++      H44S = H44 - H11( 1 )
++      H33S = H33 - H11( 1 )
++      V1 = ( H33S*H44S-H43H34 ) / H21( 1 ) + H12( 1 )
++      V2 = H22 - H11( 1 ) - H33S - H44S
++      S = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3( 1 ) )
+       V1 = V1 / S
+       V2 = V2 / S
+-      V3 = V3 / S
++      V3( 1 ) = V3( 1 ) / S
+       V( 1 ) = V1
+       V( 2 ) = V2
+-      V( 3 ) = V3
++      V( 3 ) = V3( 1 )
+ *
+       RETURN
+ *
+diff --git a/SRC/pztrevc.f b/SRC/pztrevc.f
+index 0536475..3b27286 100644
+--- a/SRC/pztrevc.f
++++ b/SRC/pztrevc.f
+@@ -218,11 +218,12 @@ SUBROUTINE PZTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL,
+      $                   ITMP2, J, K, KI, LDT, LDVL, LDVR, LDW, MB,
+      $                   MYCOL, MYROW, NB, NPCOL, NPROW, RSRC
+       REAL               SELF
+-      DOUBLE PRECISION   OVFL, REMAXD, SCALE, SMIN, SMLNUM, ULP, UNFL
++      DOUBLE PRECISION   OVFL, REMAXD, SCALE, SMLNUM, ULP, UNFL
+       COMPLEX*16         CDUM, REMAXC, SHIFT
+ *     ..
+ *     .. Local Arrays ..
+       INTEGER            DESCW( DLEN_ )
++      DOUBLE PRECISION   SMIN( 1 )
+ *     ..
+ *     .. External Functions ..
+       LOGICAL            LSAME
+@@ -355,13 +356,13 @@ SUBROUTINE PZTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL,
+      $            GO TO 70
+             END IF
+ *
+-            SMIN = ZERO
++            SMIN( 1 ) = ZERO
+             SHIFT = CZERO
+             CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL,
+      $                    IROW, ICOL, ITMP1, ITMP2 )
+             IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN
+                SHIFT = T( ( ICOL-1 )*LDT+IROW )
+-               SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM )
++               SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM )
+             END IF
+             CALL DGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 )
+             CALL ZGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 )
+@@ -396,8 +397,9 @@ SUBROUTINE PZTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL,
+                IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN
+                   T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) -
+      $               SHIFT
+-                  IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN ) THEN
+-                     T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN )
++                  IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) )
++     $            THEN
++                     T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN( 1 ) )
+                   END IF
+                END IF
+    50       CONTINUE
+@@ -467,13 +469,13 @@ SUBROUTINE PZTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL,
+      $            GO TO 110
+             END IF
+ *
+-            SMIN = ZERO
++            SMIN( 1 ) = ZERO
+             SHIFT = CZERO
+             CALL INFOG2L( KI, KI, DESCT, NPROW, NPCOL, MYROW, MYCOL,
+      $                    IROW, ICOL, ITMP1, ITMP2 )
+             IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN
+                SHIFT = T( ( ICOL-1 )*LDT+IROW )
+-               SMIN = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM )
++               SMIN( 1 ) = MAX( ULP*( CABS1( SHIFT ) ), SMLNUM )
+             END IF
+             CALL DGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SMIN, 1, -1, -1 )
+             CALL ZGSUM2D( CONTXT, 'ALL', ' ', 1, 1, SHIFT, 1, -1, -1 )
+@@ -507,8 +509,8 @@ SUBROUTINE PZTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL,
+                IF( ( MYROW.EQ.ITMP1 ) .AND. ( MYCOL.EQ.ITMP2 ) ) THEN
+                   T( ( ICOL-1 )*LDT+IROW ) = T( ( ICOL-1 )*LDT+IROW ) -
+      $               SHIFT
+-                  IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN )
+-     $               T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN )
++                  IF( CABS1( T( ( ICOL-1 )*LDT+IROW ) ).LT.SMIN( 1 ) )
++     $               T( ( ICOL-1 )*LDT+IROW ) = DCMPLX( SMIN( 1 ) )
+                END IF
+    90       CONTINUE
+ *
+
+From 189c84001bcd564296a475c5c757afc9f337e828 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tiziano=20M=C3=BCller?= <tiziano.mueller@chem.uzh.ch>
+Date: Thu, 25 Jun 2020 18:37:34 +0200
+Subject: [PATCH 2/2] use -std=legacy for tests with GCC-10+
+
+---
+ BLACS/TESTING/CMakeLists.txt | 10 +++++++---
+ PBLAS/TESTING/CMakeLists.txt |  7 ++++---
+ PBLAS/TIMING/CMakeLists.txt  |  5 +++--
+ TESTING/EIG/CMakeLists.txt   |  3 +++
+ TESTING/LIN/CMakeLists.txt   |  4 ++++
+ 5 files changed, 21 insertions(+), 8 deletions(-)
+
+diff --git a/BLACS/TESTING/CMakeLists.txt b/BLACS/TESTING/CMakeLists.txt
+index d8846b5..4e91ac2 100644
+--- a/BLACS/TESTING/CMakeLists.txt
++++ b/BLACS/TESTING/CMakeLists.txt
+@@ -1,10 +1,14 @@
+-set(FTestObj  
++set(FTestObj
+    blacstest.f btprim.f tools.f)
+ 
++if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
++    set_source_files_properties(blacstest.f PROPERTIES COMPILE_FLAGS "-std=legacy")
++endif()
++
+ add_executable(xFbtest ${FTestObj})
+ target_link_libraries(xFbtest scalapack)
+ 
+-set(CTestObj  
++set(CTestObj
+    Cbt.c)
+ 
+ set_property(
+@@ -46,4 +50,4 @@ add_test(xFbtest
+     -DRUNTIMEDIR=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+     -DSOURCEDIR=${CMAKE_CURRENT_SOURCE_DIR}
+     -P ${CMAKE_CURRENT_SOURCE_DIR}/runtest.cmake
+-    )
+\ No newline at end of file
++    )
+diff --git a/PBLAS/TESTING/CMakeLists.txt b/PBLAS/TESTING/CMakeLists.txt
+index e60f5e4..ee77091 100644
+--- a/PBLAS/TESTING/CMakeLists.txt
++++ b/PBLAS/TESTING/CMakeLists.txt
+@@ -10,7 +10,7 @@ set (zpbtcom pzblastst.f dlamch.f ${pbtcom})
+ 
+ set_property(
+    SOURCE ${PblasErrorHandler}
+-   APPEND PROPERTY COMPILE_DEFINITIONS TestingPblas 
++   APPEND PROPERTY COMPILE_DEFINITIONS TestingPblas
+    )
+ 
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/PBLAS/TESTING)
+@@ -74,5 +74,6 @@ add_test(dpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./dpb3tst)
+ add_test(cpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./cpb3tst)
+ add_test(zpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./zpb3tst)
+ 
+-
+-
++if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
++    set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" )  # local to this directory
++endif()
+diff --git a/PBLAS/TIMING/CMakeLists.txt b/PBLAS/TIMING/CMakeLists.txt
+index 763330f..208bbc3 100644
+--- a/PBLAS/TIMING/CMakeLists.txt
++++ b/PBLAS/TIMING/CMakeLists.txt
+@@ -74,5 +74,6 @@ add_test(dpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./dpb3tim)
+ add_test(cpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./cpb3tim)
+ add_test(zpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ./zpb3tim)
+ 
+-
+-
++if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
++    set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" )  # local to this directory
++endif()
+diff --git a/TESTING/EIG/CMakeLists.txt b/TESTING/EIG/CMakeLists.txt
+index 97c7036..19a1f34 100644
+--- a/TESTING/EIG/CMakeLists.txt
++++ b/TESTING/EIG/CMakeLists.txt
+@@ -97,3 +97,6 @@ target_link_libraries(xzheevr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
+ target_link_libraries(xshseqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
+ target_link_libraries(xdhseqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
+ 
++if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
++    set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" )  # local to this directory
++endif()
+diff --git a/TESTING/LIN/CMakeLists.txt b/TESTING/LIN/CMakeLists.txt
+index 55a53e9..65f169b 100644
+--- a/TESTING/LIN/CMakeLists.txt
++++ b/TESTING/LIN/CMakeLists.txt
+@@ -110,3 +110,7 @@ target_link_libraries(xsls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
+ target_link_libraries(xdls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
+ target_link_libraries(xcls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
+ target_link_libraries(xzls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
++
++if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
++    set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" )  # local to this directory
++endif()

+ 49 - 0
foss-2020b/SciPy-bundle-2020.11-foss-2020b.eb

@@ -0,0 +1,49 @@
+easyblock = 'PythonBundle'
+
+name = 'SciPy-bundle'
+version = '2020.11'
+
+homepage = 'https://python.org/'
+description = "Bundle of Python packages for scientific software"
+
+toolchain = {'name': 'foss', 'version': '2020b'}
+toolchainopts = {'pic': True, 'lowopt': True}
+
+dependencies = [
+    ('Python', '3.8.6'),
+    ('pybind11', '2.6.0'),  # required by scipy
+]
+
+use_pip = True
+
+exts_default_options = {'source_urls': [PYPI_SOURCE]}
+
+# order is important!
+exts_list = [
+    ('hypothesis', '5.41.1', {
+        'checksums': ['06776c245b5eb25011040f94779fda6bbfa9def72074672af2e79a5e6bce8b38'],
+    }),
+    ('numpy', '1.19.4', {
+        'source_tmpl': '%(name)s-%(version)s.zip',
+        'checksums': ['141ec3a3300ab89c7f2b0775289954d193cc8edb621ea05f99db9cb181530512'],
+    }),
+    ('scipy', '1.5.4', {
+        'checksums': ['4a453d5e5689de62e5d38edf40af3f17560bfd63c9c5bd228c18c1f99afa155b'],
+    }),
+    ('mpi4py', '3.0.3', {
+        'checksums': ['012d716c8b9ed1e513fcc4b18e5af16a8791f51e6d1716baccf988ad355c5a1f'],
+    }),
+    ('pandas', '1.1.4', {
+        'checksums': ['a979d0404b135c63954dea79e6246c45dd45371a88631cdbb4877d844e6de3b6'],
+    }),
+    ('mpmath', '1.1.0', {
+        'checksums': ['fc17abe05fbab3382b61a123c398508183406fa132e0223874578e20946499f6'],
+    }),
+    ('deap', '1.3.1', {
+        'checksums': ['11f54493ceb54aae10dde676577ef59fc52d52f82729d5a12c90b0813c857a2f'],
+    }),
+]
+
+sanity_pip_check = True
+
+moduleclass = 'lang'

+ 41 - 0
foss-2020b/UDUNITS-2.2.26-GCCcore-10.2.0.eb

@@ -0,0 +1,41 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+#
+# Copyright:: Copyright 2012-2013 University of Luxembourg, Ghent University
+# Authors::   Fotis Georgatos <fotis@cern.ch>, Kenneth Hoste (Ghent University)
+# License::   MIT/GPL
+# $Id$
+#
+# This work implements a part of the HPCBIOS project and is a component of the policy:
+# http://hpcbios.readthedocs.org/en/latest/HPCBIOS_2012-97.html
+##
+
+easyblock = 'ConfigureMake'
+
+name = 'UDUNITS'
+version = '2.2.26'
+
+homepage = 'https://www.unidata.ucar.edu/software/udunits/'
+description = """UDUNITS supports conversion of unit specifications between formatted and binary forms,
+ arithmetic manipulation of units, and conversion of values between compatible scales of measurement."""
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://www.unidata.ucar.edu/downloads/udunits']
+sources = [SOURCELOWER_TAR_GZ]
+checksums = ['368f4869c9c7d50d2920fa8c58654124e9ed0d8d2a8c714a9d7fdadc08c7356d']
+
+builddependencies = [('binutils', '2.35')]
+
+dependencies = [('expat', '2.2.9')]
+
+sanity_check_paths = {
+    'files': ['bin/udunits2', 'include/converter.h', 'include/udunits2.h', 'include/udunits.h',
+              'lib/libudunits2.a', 'lib/libudunits2.%s' % SHLIB_EXT],
+    'dirs': ['share'],
+}
+
+parallel = 1
+
+moduleclass = 'phys'

+ 36 - 0
foss-2020b/ecCodes-2.19.1-foss-2020b-Python-3.8.6.eb

@@ -0,0 +1,36 @@
+easyblock = 'CMakeMake'
+
+name = 'ecCodes'
+version = '2.19.1'
+versionsuffix = '-Python-3.8.6'
+
+homepage = 'https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home'
+description = """ecCodes is a package developed by ECMWF which provides an application programming interface and
+ a set of tools for decoding and encoding messages in the following formats: WMO FM-92 GRIB edition 1 and edition 2,
+ WMO FM-94 BUFR edition 3 and edition 4, WMO GTS abbreviated header (only decoding)."""
+
+toolchain = {'name': 'foss', 'version': '2020b'}
+
+source_urls = ['https://confluence.ecmwf.int/download/attachments/45757960/']
+sources = ['eccodes-%(version)s-Source.tar.gz']
+
+builddependencies = [('CMake', '3.18.4')]
+dependencies = [
+    ('netCDF', '4.7.4'),
+    ('JasPer', '2.0.14'),
+    ('Python', '3.8.6'),
+    ('SciPy-bundle', '2020.11', '-Python-3.8.6')
+]
+
+separate_build_dir = True
+
+configopts = "-DENABLE_NETCDF=ON -DENABLE_JPG=ON -DENABLE_PYTHON=ON"
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in ['bufr_copy', 'bufr_dump', 'bufr_filter', 'bufr_ls',
+                                     'codes_count', 'codes_info', 'codes_split_file',
+                                     'grib_copy', 'grib_dump', 'grib_filter', 'grib_ls']],
+    'dirs': [],
+}
+
+moduleclass = 'tools'

+ 33 - 0
foss-2020b/ecCodes-2.19.1-gompi-2020b.eb

@@ -0,0 +1,33 @@
+easyblock = 'CMakeMake'
+
+name = 'ecCodes'
+version = '2.19.1'
+
+homepage = 'https://software.ecmwf.int/wiki/display/ECC/ecCodes+Home'
+description = """ecCodes is a package developed by ECMWF which provides an application programming interface and
+ a set of tools for decoding and encoding messages in the following formats: WMO FM-92 GRIB edition 1 and edition 2,
+ WMO FM-94 BUFR edition 3 and edition 4, WMO GTS abbreviated header (only decoding)."""
+
+toolchain = {'name': 'gompi', 'version': '2020b'}
+
+source_urls = ['https://confluence.ecmwf.int/download/attachments/45757960/']
+sources = ['eccodes-%(version)s-Source.tar.gz']
+
+builddependencies = [('CMake', '3.18.4')]
+dependencies = [
+    ('netCDF', '4.7.4'),
+    ('JasPer', '2.0.14'),
+]
+
+separate_build_dir = True
+
+configopts = "-DENABLE_NETCDF=ON -DENABLE_JPG=ON -DENABLE_PYTHON=OFF"
+
+sanity_check_paths = {
+    'files': ['bin/%s' % x for x in ['bufr_copy', 'bufr_dump', 'bufr_filter', 'bufr_ls',
+                                     'codes_count', 'codes_info', 'codes_split_file',
+                                     'grib_copy', 'grib_dump', 'grib_filter', 'grib_ls']],
+    'dirs': [],
+}
+
+moduleclass = 'tools'

+ 27 - 0
foss-2020b/foss-2020b.eb

@@ -0,0 +1,27 @@
+easyblock = 'Toolchain'
+
+name = 'foss'
+version = '2020b'
+
+homepage = 'https://easybuild.readthedocs.io/en/master/Common-toolchains.html#foss-toolchain'
+description = """GNU Compiler Collection (GCC) based compiler toolchain, including
+ OpenMPI for MPI support, OpenBLAS (BLAS and LAPACK support), FFTW and ScaLAPACK."""
+
+toolchain = SYSTEM
+
+local_gccver = '10.2.0'
+
+# toolchain used to build foss dependencies
+local_comp_mpi_tc = ('gompi', version)
+
+# we need GCC and OpenMPI as explicit dependencies instead of gompi toolchain
+# because of toolchain preparation functions
+dependencies = [
+    ('GCC', local_gccver),
+    ('OpenMPI', '4.0.5', '', ('GCC', local_gccver)),
+    ('OpenBLAS', '0.3.12', '', ('GCC', local_gccver)),
+    ('FFTW', '3.3.8', '', local_comp_mpi_tc),
+    ('ScaLAPACK', '2.1.0', '', local_comp_mpi_tc),
+]
+
+moduleclass = 'toolchain'

+ 27 - 0
foss-2020b/g2clib-1.6.0-GCCcore-10.2.0.eb

@@ -0,0 +1,27 @@
+name = 'g2clib'
+version = '1.6.0'
+
+homepage = 'https://www.nco.ncep.noaa.gov/pmb/codes/GRIB2/'
+description = """Library contains GRIB2 encoder/decoder ('C' version)."""
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+
+source_urls = [homepage]
+sources = ['%(name)s-%(version)s.tar']
+patches = ['g2clib-%(version)s-with-JasPer-2.x.patch']
+checksums = [
+    'afec1ea29979b84369d0f46f305ed12f73f1450ec2db737664ec7f75c1163add',  # g2clib-1.6.0.tar
+    '2e62502d7823be5407ea023029dd206930a1034421d141dd346b468e177a7fce',  # g2clib-1.6.0-with-JasPer-2.x.patch
+]
+
+builddependencies = [('binutils', '2.35')]
+
+dependencies = [
+    ('JasPer', '2.0.14'),
+    ('libpng', '1.6.37'),
+]
+
+# parallel build tends to fail
+parallel = 1
+
+moduleclass = 'data'

+ 36 - 0
foss-2020b/g2lib-3.1.0-GCCcore-10.2.0.eb

@@ -0,0 +1,36 @@
+name = 'g2lib'
+version = '3.1.0'
+
+homepage = 'https://www.nco.ncep.noaa.gov/pmb/codes/GRIB2/'
+description = """Library contains GRIB2 encoder/decoder and search/indexing routines."""
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+
+source_urls = [homepage]
+sources = ['%(name)s-%(version)s.tar']
+patches = [
+    '%(name)s-%(version)s_makefile.patch',
+    '%(name)s-%(version)s-kind.patch',
+    '%(name)s-1.4.0-with-JasPer-2.x.patch',
+    '%(name)s-%(version)s-int.patch',
+]
+checksums = [
+    '8a2de259de82094c5867f8d7945359f211592a4a503f9ed65dc60469337414e7',  # g2lib-3.1.0.tar
+    '702f76c77638fb36b662caf96890a69f19c507778c92aa1e163898b150cc8282',  # g2lib-3.1.0_makefile.patch
+    '6412022d37a470e38e4f2c4b7b6bd7cbb9581027b5ff187f4379b7dc0d72cbb5',  # g2lib-3.1.0-kind.patch
+    'cd4c668dab76ef3b61fa902c2eed24747517d4cbc3ec0aaffab37e6b80946170',  # g2lib-1.4.0-with-JasPer-2.x.patch
+]
+
+builddependencies = [('binutils', '2.35')]
+
+dependencies = [
+    ('JasPer', '2.0.14'),
+    ('libpng', '1.6.37'),
+]
+
+buildopts = 'CFLAGS="$CFLAGS -DLINUXG95 -D__64BIT__" FFLAGS="$FFLAGS -fno-range-check -fallow-argument-mismatch -I." FC=$FC CC=$CC'
+
+# parallel build tends to fail
+parallel = 1
+
+moduleclass = 'data'

+ 12 - 0
foss-2020b/g2lib-3.1.0-int.patch

@@ -0,0 +1,12 @@
+diff -Nru g2lib-3.1.0-orig/addfield.f g2lib-3.1.0/addfield.f
+--- g2lib-3.1.0-orig/addfield.f	2020-11-11 19:26:14.905380054 +0100
++++ g2lib-3.1.0/addfield.f	2020-11-11 19:26:27.317394904 +0100
+@@ -119,7 +119,7 @@
+       integer lensec3,lensec4,lensec5,lensec6,lensec7
+       logical issec3,needext,isprevbmap
+ 
+-      allones=Z'FFFFFFFF'
++      allones=int(Z'FFFFFFFF')
+       ierr=0
+ !
+ ! Check to see if beginning of GRIB message exists

+ 20 - 0
foss-2020b/gompi-2020b.eb

@@ -0,0 +1,20 @@
+easyblock = 'Toolchain'
+
+name = 'gompi'
+version = '2020b'
+
+homepage = '(none)'
+description = """GNU Compiler Collection (GCC) based compiler toolchain,
+ including OpenMPI for MPI support."""
+
+toolchain = SYSTEM
+
+local_gccver = '10.2.0'
+
+# compiler toolchain dependencies
+dependencies = [
+    ('GCC', local_gccver),  # includes both GCC and binutils
+    ('OpenMPI', '4.0.5', '', ('GCC', local_gccver)),
+]
+
+moduleclass = 'toolchain'

+ 35 - 0
foss-2020b/libgeotiff-1.6.0-GCCcore-10.2.0.eb

@@ -0,0 +1,35 @@
+easyblock = 'ConfigureMake'
+
+name = 'libgeotiff'
+version = '1.6.0'
+
+homepage = 'https://directory.fsf.org/wiki/Libgeotiff'
+description = """Library for reading and writing coordinate system information from/to GeoTIFF files"""
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+
+source_urls = ['https://download.osgeo.org/geotiff/libgeotiff']
+sources = [SOURCE_TAR_GZ]
+
+builddependencies = [
+    ('binutils', '2.35'),
+]
+
+dependencies = [
+    ('PROJ', '7.2.0'),
+    ('libjpeg-turbo', '2.0.5'),
+    ('zlib', '1.2.11'),
+    ('SQLite', '3.33.0'),
+    ('LibTIFF', '4.1.0'),
+    ('cURL', '7.72.0'),
+]
+
+configopts = ' --with-libtiff=$EBROOTLIBTIFF --with-proj=$EBROOTPROJ --with-zlib=$EBROOTZLIB'
+configopts += ' --with-jpeg=$EBROOTLIBJPEGMINTURBO'
+
+sanity_check_paths = {
+    'files': ['bin/listgeo', 'lib/libgeotiff.a', 'lib/libgeotiff.%s' % SHLIB_EXT],
+    'dirs': ['include', 'share'],
+}
+
+moduleclass = 'lib'

+ 23 - 0
foss-2020b/libiconv-1.16-GCCcore-10.2.0.eb

@@ -0,0 +1,23 @@
+easyblock = 'ConfigureMake'
+
+name = 'libiconv'
+version = '1.16'
+
+homepage = 'https://www.gnu.org/software/libiconv'
+description = "Libiconv converts from one character encoding to another through Unicode conversion"
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+
+source_urls = [GNU_SOURCE]
+sources = [SOURCE_TAR_GZ]
+checksums = ['e6a1b1b589654277ee790cce3734f07876ac4ccfaecbee8afa0b649cf529cc04']
+
+builddependencies = [('binutils', '2.35')]
+
+sanity_check_paths = {
+    'files': ['bin/iconv', 'include/iconv.h', 'include/libcharset.h', 'include/localcharset.h',
+              'lib/libcharset.a', 'lib/libcharset.%s' % SHLIB_EXT, 'lib/libiconv.%s' % SHLIB_EXT],
+    'dirs': ['share'],
+}
+
+moduleclass = 'lib'

+ 33 - 0
foss-2020b/libmo_unpack-3.1.2-GCCcore-10.2.0.eb

@@ -0,0 +1,33 @@
+easyblock = 'CMakeMake'
+
+name = 'libmo_unpack'
+version = '3.1.2'
+
+homepage = "https://github.com/SciTools/libmo_unpack"
+description = "A library for handling the WGDOS and RLE compression schemes used in UM files."
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/SciTools/libmo_unpack/archive']
+sources = ['v%(version)s.tar.gz']
+patches = ['%(name)s-%(version)s_cmake_have_stdint.patch']
+checksums = [
+    'e09ef3e6f1075144acc5d6466b4ef70b2fe32ed4ab1840dd4fb7e15a40f3d370',  # v3.1.2.tar.gz
+    'b130f9944e763c53b21c2b08f6d4954ca7811a556fda1c7fec737a4086aad1f5',  # libmo_unpack-3.1.2_cmake_have_stdint.patch
+]
+
+builddependencies = [
+    ('binutils', '2.35'),
+    ('CMake', '3.18.4'),
+    ('check', '0.12.0'),
+]
+
+separate_build_dir = True
+
+sanity_check_paths = {
+    'files': ['include/logerrors.h', 'include/rlencode.h', 'include/wgdosstuff.h', 'lib/libmo_unpack.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'tools'

+ 25 - 0
foss-2020b/libmo_unpack-3.1.2-foss-2020b.eb

@@ -0,0 +1,25 @@
+easyblock = 'CMakeMake'
+
+name = 'libmo_unpack'
+version = '3.1.2'
+
+homepage = "https://github.com/SciTools/libmo_unpack"
+description = "A library for handling the WGDOS and RLE compression schemes used in UM files."
+
+toolchain = {'name': 'foss', 'version': '2020b'}
+
+source_urls = ['https://github.com/SciTools/libmo_unpack/archive']
+sources = ['v%(version)s.tar.gz']
+
+builddependencies = [('CMake', '3.18.4')]
+
+separate_build_dir = True
+
+configopts = '-DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS -lsubunit"'
+
+sanity_check_paths = {
+    'files': ['lib/libmo_unpack.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'tools'

+ 9 - 0
foss-2020b/libmo_unpack-3.1.2_cmake_have_stdint.patch

@@ -0,0 +1,9 @@
+# Header <stdint.h> only included if HAVE_STEDINT_H macro is set
+# May 8th 2018 by B. Hajgato (Free University Brussels - VUB)
+--- libmo_unpack-3.1.2/tests/CMakeLists.txt.orig	2015-10-09 12:44:17.000000000 +0200
++++ libmo_unpack-3.1.2/tests/CMakeLists.txt	2018-05-08 15:03:00.115085372 +0200
+@@ -6,3 +6,4 @@
+ add_executable(test_rle check_rle.c)
+ target_link_libraries(test_rle ${LIBS})
+ add_test(test_rle ${CMAKE_CURRENT_BINARY_DIR}/test_rle)
++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_STDINT_H")

+ 28 - 0
foss-2020b/libtirpc-1.2.6-GCCcore-10.2.0.eb

@@ -0,0 +1,28 @@
+easyblock = 'ConfigureMake'
+
+name = 'libtirpc'
+version = '1.2.6'
+
+homepage = 'https://sourceforge.net/projects/libtirpc/'
+description = "Libtirpc is a port of Suns Transport-Independent RPC library to Linux."
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+
+source_urls = [SOURCEFORGE_SOURCE]
+sources = [SOURCE_TAR_BZ2]
+checksums = ['4278e9a5181d5af9cd7885322fdecebc444f9a3da87c526e7d47f7a12a37d1cc']
+
+configopts = '--enable-static --enable-shared --disable-gssapi'
+
+builddependencies = [
+    ('binutils', '2.35')
+]
+
+sanity_check_paths = {
+    'files': ['lib/libtirpc.%s' % (x,) for x in ['a', SHLIB_EXT]],
+    'dirs': ['include/tirpc', 'lib'],
+}
+
+modextrapaths = {'CPATH': 'include/tirpc'}
+
+moduleclass = 'lib'

+ 26 - 0
foss-2020b/makedepend-1.0.6-GCCcore-10.2.0.eb

@@ -0,0 +1,26 @@
+easyblock = 'ConfigureMake'
+
+name = 'makedepend'
+version = '1.0.6'
+
+homepage = 'https://linux.die.net/man/1/makedepend'
+description = "The makedepend package contains a C-preprocessor like utility to determine build-time dependencies."
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+
+source_urls = [XORG_UTIL_SOURCE]
+sources = [SOURCE_TAR_GZ]
+checksums = ['845f6708fc850bf53f5b1d0fb4352c4feab3949f140b26f71b22faba354c3365']
+
+builddependencies = [
+    ('binutils', '2.35'),
+    ('xproto', '7.0.31'),
+    ('xorg-macros', '1.19.2'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/makedepend'],
+    'dirs': [],
+}
+
+moduleclass = 'devel'

+ 42 - 0
foss-2020b/ncview-2.1.7-gompi-2020b.eb

@@ -0,0 +1,42 @@
+##
+# This file is an EasyBuild reciPY as per https://github.com/easybuilders/easybuild
+##
+easyblock = 'ConfigureMake'
+
+name = 'ncview'
+version = '2.1.7'
+
+homepage = 'http://meteora.ucsd.edu/~pierce/ncview_home_page.html'
+description = """Ncview is a visual browser for netCDF format files. 
+Typically you would use ncview to get a quick and easy, push-button 
+look at your netCDF files. You can view simple movies of the data, 
+view along various dimensions, take a look at the actual data values, 
+change color maps, invert the data, etc."""
+
+toolchain = {'name': 'gompi', 'version': '2020b'}
+toolchainopts = {'usempi': True, 'pic': True}
+
+source_urls = ['ftp://cirrus.ucsd.edu/pub/ncview/']
+sources = [SOURCE_TAR_GZ]
+checksums = ['a14c2dddac0fc78dad9e4e7e35e2119562589738f4ded55ff6e0eca04d682c82']
+
+# specified compiler is hard checked against (full path to) compiler used for netCDF...
+preconfigopts = "CC=$(which $CC) "
+configopts = "--with-udunits2_incdir=$EBROOTUDUNITS/include --with-udunits2_libdir=$EBROOTUDUNITS/lib "
+configopts += "--with-nc-config=$EBROOTNETCDF/bin/nc-config"
+
+dependencies = [
+    ('netCDF', '4.7.4'),
+    ('netCDF-Fortran', '4.5.3'),
+    ('UDUNITS', '2.2.26'),
+    ('X11', '20201008'),
+    ('libpng', '1.6.37'),
+    ('zlib', '1.2.11'),
+]
+
+sanity_check_paths = {
+    'files': ['bin/ncview'],
+    'dirs': [],
+}
+
+moduleclass = 'vis'

+ 34 - 0
foss-2020b/netCDF-4.7.4-gompi-2020b.eb

@@ -0,0 +1,34 @@
+name = 'netCDF'
+version = '4.7.4'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'gompi', 'version': '2020b'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-c/archive/']
+sources = ['v%(version)s.tar.gz']
+patches = ['netCDF-%(version)s_fix-ocdebug.patch']
+
+builddependencies = [
+    ('Autotools', '20200321'),
+    ('CMake', '3.18.4'),
+    ('Doxygen', '1.8.20'),
+]
+
+dependencies = [
+    ('HDF5', '1.10.7'),
+    ('cURL', '7.72.0'),
+    ('Szip', '2.1.1'),
+]
+
+# make sure both static and shared libs are built
+configopts = [
+    "-DBUILD_SHARED_LIBS=OFF ",
+    "-DBUILD_SHARED_LIBS=ON ",
+]
+
+moduleclass = 'data'

+ 17 - 0
foss-2020b/netCDF-4.7.4_fix-ocdebug.patch

@@ -0,0 +1,17 @@
+fix for failing compilation with GCC 10.2.0 (which now defaults to -fno-common)
+
+  multiple definition of 'ocdebug' (in ocdebug.c and ocprint.c)
+
+see https://github.com/Unidata/netcdf-c/issues/1725
+
+--- netcdf-c-4.7.4/ncdump/ocprint.c.orig	2020-11-06 14:43:23.334448698 +0100
++++ netcdf-c-4.7.4/ncdump/ocprint.c	2020-11-06 14:43:34.208323588 +0100
+@@ -56,7 +56,7 @@
+ /*Mnemonic*/
+ #define TOPLEVEL 1
+
+-int ocdebug;
++extern int ocdebug;
+
+ static OCerror ocstat;
+ static OClink glink;

+ 25 - 0
foss-2020b/netCDF-C++4-4.3.1-gompi-2020b.eb

@@ -0,0 +1,25 @@
+easyblock = 'ConfigureMake'
+
+name = 'netCDF-C++4'
+version = '4.3.1'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'gompi', 'version': '2020b'}
+toolchainopts = {'pic': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-cxx4/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['e3fe3d2ec06c1c2772555bf1208d220aab5fee186d04bd265219b0bc7a978edc']
+
+dependencies = [('netCDF', '4.7.4')]
+
+sanity_check_paths = {
+    'files': ['include/netcdf', 'lib/libnetcdf_c++4.a', 'lib/libnetcdf_c++4.%s' % SHLIB_EXT],
+    'dirs': [],
+}
+
+moduleclass = 'data'

+ 25 - 0
foss-2020b/netCDF-Fortran-4.5.3-gompi-2020b.eb

@@ -0,0 +1,25 @@
+name = 'netCDF-Fortran'
+version = '4.5.3'
+
+homepage = 'https://www.unidata.ucar.edu/software/netcdf/'
+description = """NetCDF (network Common Data Form) is a set of software libraries
+ and machine-independent data formats that support the creation, access, and sharing of array-oriented
+ scientific data."""
+
+toolchain = {'name': 'gompi', 'version': '2020b'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://github.com/Unidata/netcdf-fortran/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['c6da30c2fe7e4e614c1dff4124e857afbd45355c6798353eccfa60c0702b495a']
+
+builddependencies = [
+    ('M4', '1.4.18'),
+]
+
+dependencies = [('netCDF', '4.7.4')]
+
+# (too) parallel build fails, but single-core build is fairly quick anyway (~1min)
+parallel = 1
+
+moduleclass = 'data'

+ 23 - 0
foss-2020b/pybind11-2.6.0-GCCcore-10.2.0.eb

@@ -0,0 +1,23 @@
+name = 'pybind11'
+version = '2.6.0'
+
+homepage = 'https://pybind11.readthedocs.io'
+description = """pybind11 is a lightweight header-only library that exposes C++ types in Python and vice versa,
+ mainly to create Python bindings of existing C++ code."""
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+
+source_urls = ['https://github.com/pybind/pybind11/archive/']
+sources = ['v%(version)s.tar.gz']
+checksums = ['90b705137b69ee3b5fc655eaca66d0dc9862ea1759226f7ccd3098425ae69571']
+
+builddependencies = [
+    ('binutils', '2.35'),
+    ('CMake', '3.18.4'),
+    ('Eigen', '3.3.8'),
+]
+dependencies = [('Python', '3.8.6')]
+
+configopts = "-DPYTHON_EXECUTABLE=$EBROOTPYTHON/bin/python"
+
+moduleclass = 'lib'

+ 29 - 0
foss-2020b/xproto-7.0.31-GCCcore-10.2.0.eb

@@ -0,0 +1,29 @@
+easyblock = 'ConfigureMake'
+
+name = 'xproto'
+version = '7.0.31'
+
+homepage = 'https://www.freedesktop.org/wiki/Software/xlibs'
+description = "X protocol and ancillary headers"
+
+toolchain = {'name': 'GCCcore', 'version': '10.2.0'}
+
+source_urls = [XORG_PROTO_SOURCE]
+sources = [SOURCE_TAR_GZ]
+checksums = ['6d755eaae27b45c5cc75529a12855fed5de5969b367ed05003944cf901ed43c7']
+
+builddependencies = [
+    ('binutils', '2.35'),
+    ('xorg-macros', '1.19.2'),
+]
+
+sanity_check_paths = {
+    'files': ['include/X11/%s' % x for x in ['ap_keysym.h', 'HPkeysym.h', 'keysym.h', 'Xalloca.h', 'Xatom.h',
+                                             'XF86keysym.h', 'Xfuncs.h', 'Xmd.h', 'Xos.h', 'Xpoll.h', 'Xprotostr.h',
+                                             'Xw32defs.h', 'Xwindows.h', 'DECkeysym.h', 'keysymdef.h', 'Sunkeysym.h',
+                                             'Xarch.h', 'Xdefs.h', 'Xfuncproto.h', 'X.h', 'Xosdefs.h', 'Xos_r.h',
+                                             'Xproto.h', 'Xthreads.h', 'XWDFile.h', 'Xwinsock.h']],
+    'dirs': []
+}
+
+moduleclass = 'devel'

+ 21 - 0
intel-2019b/JasPer-1.900.1-iimpi-2019b.eb

@@ -0,0 +1,21 @@
+easyblock = 'ConfigureMake'
+
+name = 'JasPer'
+version = '1.900.1'
+
+homepage = 'http://www.ece.uvic.ca/~frodo/jasper/'
+description = """The JasPer Project is an open-source initiative to provide a free
+ software-based reference implementation of the codec specified in the JPEG-2000 Part-1 standard."""
+
+toolchain = {'name': 'iimpi', 'version': '2019b'}
+toolchainopts = {'pic': True}
+
+sources = [SOURCELOWER_ZIP]
+source_urls = ['http://www.ece.uvic.ca/~frodo/jasper/software/']
+
+sanity_check_paths = {
+    'files': ["bin/jasper", "lib/libjasper.a"],
+    'dirs': ["include"],
+}
+
+moduleclass = 'vis'

+ 37 - 0
intel-2019b/grib_api-1.28.0-iimpi-2019b.eb

@@ -0,0 +1,37 @@
+easyblock = 'CMakeMake'
+
+name = 'grib_api'
+version = '1.28.0'
+
+homepage = 'https://software.ecmwf.int/wiki/display/GRIB/Home'
+description = """The ECMWF GRIB API is an application program interface accessible from C, FORTRAN and Python
+ programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages. A useful set of
+ command line tools is also provided to give quick access to GRIB messages."""
+
+toolchain = {'name': 'iimpi', 'version': '2019b'}
+toolchainopts = {'pic': True, 'usempi': True}
+
+source_urls = ['https://confluence.ecmwf.int/download/attachments/3473437/']
+sources = ['grib_api-%(version)s-Source.tar.gz']
+
+builddependencies = [('CMake', '3.15.3')]
+dependencies = [
+    ('netCDF', '4.7.1'),
+    ('Python', '2.7.16'),
+    ('libjpeg-turbo', '2.0.3'),
+    ('libpng', '1.6.37'),
+    #('JasPer', '2.0.14'),
+    ('JasPer', '1.900.1'),  # 2.x doesn't work
+]
+
+separate_build_dir = True
+
+configopts = '-DENABLE_JPG=ON'
+configopts += '-DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_FLAGS="-std=c++11 -pthread" -DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS -lpthread"'
+
+sanity_check_paths = {
+    'files': ['lib/libgrib_api_f90.so'],
+    'dirs': ['share/grib_api/definitions/grib1'],
+}
+
+moduleclass = 'data'

+ 41 - 0
intel-2020b/iccifort-2020.4.304.eb

@@ -0,0 +1,41 @@
+# This is an easyconfig file for EasyBuild, see http://easybuilders.github.io/easybuild
+
+name = 'iccifort'
+version = '2020.4.304'
+
+homepage = 'https://software.intel.com/en-us/intel-compilers/'
+description = "Intel C, C++ & Fortran compilers"
+
+toolchain = SYSTEM
+
+source_urls = ['https://registrationcenter-download.intel.com/akdlm/irc_nas/tec/17117/']
+sources = ['parallel_studio_xe_%(version_major)s_update%(version_minor)s_composer_edition.tgz']
+patches = ['iccifort-%(version)s_no_mpi_rt_dependency.patch']
+checksums = [
+    # parallel_studio_xe_2020_update3_composer_edition.tgz
+    'ac1efeff608a8c3a416e6dfe20364061e8abf62d35fbaacdffe3fc9676fc1aa3',
+    # iccifort-2020.4.304_no_mpi_rt_dependency.patch
+    'c330473fc452214b5fffafc5dc962e99fd369582ff9efeda6548b5895a67abb1',
+]
+
+local_gccver = '10.2.0'
+
+dependencies = [
+    ('GCCcore', local_gccver),
+    ('binutils', '2.35', '', ('GCCcore', local_gccver)),
+]
+
+# list of regex for components to install
+# full list of components can be obtained from pset/mediaconfig.xml in unpacked sources
+# cfr. https://software.intel.com/en-us/articles/intel-composer-xe-2015-silent-installation-guide
+components = [
+    'intel-comp', 'intel-ccomp', 'intel-fcomp', 'intel-icc', 'intel-ifort',
+    'intel-openmp', 'intel-ipsc?_', 'intel-gdb(?!.*mic)'
+]
+
+dontcreateinstalldir = True
+
+#license_file = HOME + '/licenses/intel/license.lic'
+license_file = '/opt/easybuild/configs/utils/license_intel_all.lic'
+
+moduleclass = 'compiler'

+ 13 - 0
intel-2020b/iccifort-2020.4.304_no_mpi_rt_dependency.patch

@@ -0,0 +1,13 @@
+don't install Intel MPI runtime components (mpi-rt), cfr. https://github.com/easybuilders/easybuild-easyconfigs/pull/3793
+author: Bart Oldeman (Compute Canada), updated for 2020.4.304 by Kenneth Hoste (HPC-UGent)
+--- parallel_studio_xe_2020_update4_composer_edition/pset/mediaconfig.xml.orig	2020-10-27 18:50:09.839380689 +0100
++++ parallel_studio_xe_2020_update4_composer_edition/pset/mediaconfig.xml	2020-10-27 19:49:19.097749293 +0100
+@@ -870,7 +870,7 @@
+     </Layers>
+     <InstallDir>${COMPLIB_ROOT}</InstallDir>
+     <GUID>1602677589848</GUID>
+-    <Component depend="48.3;1.1;1.3;1.91;1.12;1.7;1.24;148.2" id="1" invisible="0" mandatory="0" platform="INTEL64">
++    <Component depend="48.3;1.1;1.3;1.91;1.12;1.7;1.24" id="1" invisible="0" mandatory="0" platform="INTEL64">
+       <Name>Intel Fortran Compiler for Intel(R) 64</Name>
+       <Description>Intel Fortran Compiler 19.1 Update 3</Description>
+       <Name locale="ja_JP.UTF-8">インテル(R) Fortran コンパイラー (インテル(R) 64)</Name>