!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
!                     version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
!
!
!**s/r carall - Returns (lat,lon) (degrees) of an input Cartesian position vector on the unit sphere.
!

      subroutine carall(plon,plat,pcart,kni,knj) 1
!
      IMPLICIT NONE
      integer kni,knj 
      real plat,plon
      real*8 pcart(3)
!
!author: Luc Fillion 21 Feb. 2005
!
!revision
!
!arguments
!
#include "taglam4d.cdk"
#include "comcst.cdk"
!
      integer ji,jj
!
!!
      plat=asin(pcart(3))
      plat=plat*rrad2deg
!
      if(pcart(1).eq.0.) then
        if(pcart(2).eq.0.) then  ! point is located at the pole
          plon=0.0  ! can be any longitude... set it to zero simply.
        else if(pcart(2).gt.0.0) then
          plon=90.0
        else if(pcart(2).lt.0.0) then
          plon=270.0
        endif
      else
        plon=atan2(pcart(2),pcart(1))
        if(plon.lt.0.0) plon=plon+2.*rpi
        plon=plon*rrad2deg
      endif
!
      return
      end