      SUBROUTINE VERSION(CSTAMP)
C Arguments:
      CHARACTER CSTAMP*22
      CSTAMP='DDSCAT.5a.9 [99.03.05]'
C*******************************************************************************
C History of major changes to DDSCAT package:
C 90.12.21 (BTD): Added code to DDSCAT to create output files
C                 'qtable' (summary of Q values)
C                 'mtable' (summary of diel. func. for material 1)
C 91.08.14 (BTD): Add QBKSCA to arg. list for GETFML
C                 Modify code to print out Q_bk
C 91.08.15 (BTD): Provide different headings for qtable depending on
C                 whether IORTH=1 or 2 (add statement 9043 to DDSCAT).
C 91.09.17 (BTD): Remove calls to ALPHA and EVALA in DDSCAT (needed to 
C                 move these to subroutine GETFML since alpha from Lattice
C                 Dispersion Relation depends on propagation direction
C                 and polarization state)
C                 Add CALPHA,CXEPS,ICOMP,MXCOMP to argument list for
C                 GETFML (information required by ALPHA)
C 91.11.12 (BTD): Added variable IDVSHP to argument list for TARGET
C                 (device number for REASHP to use in reading shape file)
C 93.01.15 (BTD): Modified DDSCAT to divided output file qtable into 2 files:
C                 qtable (containing Q_ext,Q_abs,Q_sca,g,Q_bk) and
C                 qtable2 (containing Q_pha, Q_pol, Q_cpol)
C 93.01.16 (BTD): Modify DDSCAT so that qtable, qtable2, and mtable are closed
C                 after writing, and reopened for each new write
C 93.01.20 (BTD): Add MXNX, MXNY, MXNZ to argument list for subroutine
C                 EXTEND to permit checking of target size against
C                 maximum allowed dimensions
C 93.03.11 (BTD): Deleted all code associated with unused variable
C                 CMACHN (originally included to identify machine/OS)
C 93.03.12 (BTD): Changed CDESCR*60 -> CDESCR*67
C                 Moved WRITE(IDVOUT,9010) to subr. TARGET
C 93.06.02 (BTD): Corrected error in FORMAT statement 9045 in DDSCAT
C 93.06.03 (BTD): Corrected error in computation of angle-averaged
C                 backscattering cross section QBKSUM(JO) in DDSCAT (had
C                 neglected to reset sum to zero for each new target).
C 93.09.28 (BTD): Add "fix" in DDSCAT.f to work around Sun compiler/OS 
C                 bug (see description below.
C 93.12.15 (BTD): Corrected calculation of PPOL in DDSCAT.f  Added 
C                 comments on correspondence between our notation and
C                 elements of 2x2 amplitude scattering matrix and 4x4 
C                 Mueller scattering matrix.
C 94.01.27 (BTD): Replaced SHPAR1,SHPAR2,SHPAR3 by SHPAR(1-6) to
C                 allow up to 6 shape parameters in DDSCAT, REAPAR, 
C                 TARGET.
C 94.06.20 (PJF): Version 4c.1:
C                 Modifications to various routines to support use of
C                 GPFA FFT code of Temperton by specifying option
C                 NEWTMP in ddscat.par.  Changes made in
C                 cxfft3, eself, extend, reapar
C                 Add FFT timing code TSTFFT to distribution.
C                 Change made to timeit_xxx routines for compatibility
C                 with TSTFFT
C 94.12.20 (BTD): Add subroutine VERSION to consolidate log of
C                 significant changes to DDSCAT package.
C 95.04.07 (BTD): REASHP: Changed CDESCR*60->CDESCR*67 for compatibility
C                         with calling routine TARGET
C                 TARCYL: corrected error in code
C 95.05.15 (BTD): REASHP: Corrected READ statement
C                         added module for inhomogeneous/anisotropic
C                         targets.
C 95.05.26 (BTD): REAPAR: corrected construction of orthogonal
C                         polarization when E01 is complex (e.g.,
C                         circular polarization).
C 95.06.14 (BTD): REAPAR: added code to check that user is not requesting
C                         computation of f_ml when using other than
C                         linearly polarized E01
C 95.06.14 (BTD): Version 5a.1: first development
C                 Differs from version 4d in computing:
C                 full radiation pressure force (transverse components,
C                 in additional to longitudinal component computed
C                 previously);
C                 Torque due to scattering and absorption of radiation
C                 as measured by "vector torque cross section".
C                 Changes made in:
C                 DDSCAT
C                 GETFML (including argument list)
C                 SCAT (including argument list)
C                 VERSION (CSTAMP is now CHARACTER*22, so that a date
C                    can be attached to version number)
C 95.06.15 (BTD): Added CXE to argument list of SCAT
C                 Added new control parameters
C                 CMDSOL (to choose solution method)
C                 CMDTRQ (to choose whether or not to compute torques)
C 95.06.20 (PJF+: Major modification of DDSCAT and GETFML to support
C           BTD): use of modular iterative solvers (e.g., CCGPACK and
C                 PIM routines).
C               : add CMDSOL to argument list to specify method
C                 of solution, with "supported" options
C                 PETRKP = Petravic&Kuo-Petravic CCG routine (from 
C                          CCGPACK, coded by P.J. Flatau based on 
C                          earlier code by B.T. Draine)
C                 PBCGST = Preconditioned Biconjugate Gradient with 
C                          Stabilization (from PIM package, coded by
C                          R. Dias da Cunha and T. Hopkins)
C               : add CMDTRQ to argument list of REAPAR and GETFML
C 95.07.21 (BTD): Major revision to subroutine SCAT
C                 Added additional scratch arrays to DDSCAT,GETFML,SCAT
C 95.07.24 (BTD): Corrected errors in SCAT
C 95.08.14 (BTD): Modified GETFML and PROGRESS to include
C                 COMMON/NORMRES/ERRSCAL to allow renormalization of
C                 error |Ax-b| relative to |b|.
C 96.01.05 (BTD): Version 5a.2:
C                 Differs from version 5a.1 in including
C                 shape options BLOCKS and DW1996, including
C                 automatic calculation of principal axes A1 and A2
C                 with largest and second-largest moment of inertia
C                 eigenvalue and eigenvector problem is solved using
C                 routines BALANC, BALBAK, EIGV, ELMHS0, ELTRN0, HQR2,
C                 IPMPAR, and SPMPAR taken from the Naval Surface 
C                 Warfare Center Library of Mathematics Subroutines.
C 96.01.25 (BTD): Added shape option TWOSPH (routine TAR2SP, and
C                 modifications to TARGET,REAPAR).
C 96.02.23 (BTD): Subroutine PRINAXIS now carries out calculation of
C                 principal axes and eigenvalues of moment of inertia
C                 for arbitary grain shape (if invoked by appropriate
C                 "target generation" subroutine), and prints out
C                 3 principal axes and eigenvalues
C 96.10.17 (BTD): Version 5a.3: 
C                 Added NAT0 to argument list for routine ALPHA.
C                 This required modification of ALPHA and GETFML.
C 96.10.18 (BTD): Changed NEWTMP to GPFAFT (for Generalized Prime
C                 Factor Algorithm for Fourier Transform).
C 96.11.06 (BTD): Version 5a.4:
C                 Removed code from DDSCAT and moved to subroutines
C                 GETMUELLER and WRITESCA
C                 Changed definition of scattering angle phi.
C                 Previously, phi was measured from plane containing
C                 incident k vector and Re(CXE01)
C                 Henceforth, phi is measured from Lab x,y plane
C                 (incident radiation is along x axis).
C                 This involved changes to SCAVEC
C                 Modified GETMUELLER so that for IORTH=2 it
C                 automatically computes the complete Mueller scattering
C                 matrix for each target orientation, and for the
C                 orientational average.
C                 Modified WRITESCA so that it writes out selected
C                 elements of the Mueller matrix.
C 96.11.14 (PJF): Add timers(mxtimers), ntimers to DDSCAT and getfml
C                 timers contains information about CPU times of 
C                 various parts of the code and informations needed
C                 for timming (e.g. number of iterations)
C                 Further changes of "WRITESCA" to include binary
C                 file option. This should be of use, for example, 
C                 for users of IDL.
C                 Added "cbinflag" to DDSCA, reapar. Added
C                 "cbinfile", "iobin" and "open" unformatted file in DDSCAT
C                 "close(iobin) in DDSCAT.
C                 Removed "getset" routine. Hardwired "ioerr" in
C                 "errmsg", and "ioout" in "wrimsg". 
C                 Combined all "rotation" code in rot.2
C                 Added dd.pro package for DDSCAT output postprocessing.
C                 The package includes IDL reading code of binary
C                 DDSCAT file and Bohren and Huffman Mie routine coded in IDL.
C                 Added 10,000 lines of LAPACK code to solve 3x3
C                 eigenvalue problem. Removed NSWC l(eispack)
C                 driver because (a) it contains ald r1mach
C                 tedious to support code (b) because LAPACK is
C                 more modern. 
C                 Add several *.ps files to doc and BibTeX
C                 bibliography of recent DDA references.
C 96.11.15 (PJF): Added NetCDF binary option to "writesca.f"
C                 One needs "include" in writesca.f which is non-standard
C                 in FORTRAN77 but will probably work on all architectures.
C                 Also -lnetcdf flag is needed during the loading step
C                 if NetCDF is being used. Otherwise  "empty" NetCDF routines
C                 should be substittuted to satisfy loader (c.f. dummynetcdf.f)
C                 "ncclose" is executed from DDSCAT.f instead of writesca.f
C                 NetCDF is available from http://www.unidata.ucar.edu/
C                 for most popular computers. 
C                 Added "writebin.f" and "writecdf.f" for 5a7
C 96.11.21 (BTD): moved NCCLOS to WRITENET so that all dependence on
C                 netCDF is through subroutine WRITENET
C                 This required changes to DDSCAT,WRITESCA, and
C                 WRITENET, and adding additional call to WRITESCA
C                 from DDSCAT, and additional call to WRITENET from
C                 WRITESCA
C                 added variable IDVOUT2 to COMMON/NORMERR to permit
C                 device number for standard output to be passed to
C                 subroutine PROGRESS
C 96.12.02 (BTD): Corrected error in DDSCAT.f : SMORI was not
C                 initialized, and hence was incorrect except (possibly)
C                 for first wavelength and radius.
C                 Also eliminated some superfluous variables from
C                 DDSCAT.f
C 97.04.28 (BTD): Corrected bug in TARHEX: NAT was not initialized to 0
C 97.06.04 (BTD): Corrected bug in TARGET, affecting only target option
C                 "UNICYL" (target composition was not being set
C                 correctly).
C 97.07.24 (BTD): Corrected bug in GETMUELLER: was using PHI rather
C                 than PHIN in computation of amplitude scattering
C                 matrix and Mueller matrix from f_ml computed by
C                 GETFML.  Required change in GETMUELLER argument,
C                 list, with corresponding change required in DDSCAT.f
C                 Also corrected bugs in GETMUELLER pertaining to
C                 computation of Mueller matrix elements S_14 and
C                 S_31.  Note that because S_31 was incorrect, PPOL
C                 (evaluated in WRITESCA) was numerically incorrect.
C--------------- end version 5a8  -------------------------------------
C                following modifications resulted in version 5a9
C 98.10.07 (BTD) Rewrote cgcommon.f, function SCNRM2,
C                because g77 optimization generates bad code
C                complicated code replaced with simple code
C 98.10.08 (BTD) modified cgcommon.f, subroutine PROGRESS,
C                to keep track of minimum error, and to
C                note when new error minimum is attained.  This is
C                to observe convergence behavior of PBCGST.
C 98.10.26 (BTD) modified subroutine PROGRESS in cgcommon.f
C                to also print information on
C                rate of convergence (variable RATE).
C 98.10.27 (BTD) modified subroutine SMACHCONS in cgcommon.f
C                because Solaris compiler complained about value of
C                OVERFLOW parameter.  Reduced by factor 2
C 98.11.16 (BTD) Corrected error in value of CXE01R passed to WRITEBIN
C                for binary write option.
C 98.12.07 (BTD) Found and corrected bug reported by Timo Nousiainen 
C                (tpnousia@lumi.meteo.helsinki.fi) which caused Mueller
C                matrix elements S_12 and S_13 to be computed 
C                due to inconsistency in definition of f_ml.  Removed
C                code in GETFML which had been inserted to change
C                f_ml to refer to "usual" incident pol states l=1,2
C                whereas GETFML assumed that incident pol states
C                l=1,2 were those specified by the user in ddscat.par
C                Stick with this latter convention.
C                Modified GETMUELLER so that Mueller matrix elements
C                are computed correctly even when user-specified
C                incident polarization state CXE01 is not linearly
C                polarized.
C 98.12.07 (BTD) Edited UserGuide to give more detailed (and now correct)
C                discussion of computation of Mueller matrix elements
C                from the f_ml.
C 98.12.07 (BTD) Inserted (commented out) code into getfml to allow
C                verification of final error in approximate solution
C                to confirm reliability of error reported by iteration
C                machinery.  After confirming that these errors appear
C                to be reasonable, code was commented out, but can be
C                reactivated at future date if repetition of such tests
C                is desired.
C 99.03.01 (BTD) rewrote subroutine orient.f to make it handle odd
C                NTHETA as described in the UserGuide
C 99.03.05 (BTD) corrected errors in new orient.f
C 99.04.30 (BTD) corrected new errors in orient.f (introduced in
C                99.03.05 revision)
C end history
C
C Copyright (C) 1993,1994,1995,1996,1997,1998,1999 
C B.T. Draine and P.J. Flatau
C This code is covered by the GNU General Public License.
C***********************************************************************
      RETURN
      END
