C**********************************************************                  LGNDRE.2     
C             SUBROUTINE LGNDRE                                              LGNDRE.3     
C**********************************************************                  LGNDRE.4     
      SUBROUTINE LGNDRE(NN,MM,MOCT,ALP,DALP,MJP,JL,SIJ,CSJ)                  LGNDRE.5     
C                                                                            LGNDRE.6     
C     Calculates legendre polynomials (ALP) and their derivatives            LGNDRE.7     
C     (DALP) at the JL'th latitude (JL is in LEGAU) using                    LGNDRE.8     
C     recurrence relationships.                                              LGNDRE.9     
C                                                                            LGNDRE.10    
      REAL ALP(MJP,JL),DALP(MJP,JL)                                          LGNDRE.11    
C                                                                            LGNDRE.12    
      LM=2                                                                   LGNDRE.13    
C                                                                            LGNDRE.14    
C     Set P(0,0) and P(0,1)                                                  LGNDRE.15    
C                                                                            LGNDRE.16    
      ALP(1,JL)=SQRT(.5)                                                     LGNDRE.17    
      F1M=SQRT(1.5)                                                          LGNDRE.18    
      ALP(2,JL)=F1M*SIJ                                                      LGNDRE.19    
      DALP(1,JL)=0.                                                          LGNDRE.20    
C                                                                            LGNDRE.21    
C     Loop over wavenumbers                                                  LGNDRE.22    
C                                                                            LGNDRE.23    
      DO 1 M1=1,MM                                                           LGNDRE.24    
         M=M1-1                                                              LGNDRE.25    
         AM=M                                                                LGNDRE.26    
         A2M=M+M                                                             LGNDRE.27    
         E2=SQRT(A2M+3.)                                                     LGNDRE.28    
         IF (M.GT.0) THEN                                                    LGNDRE.29    
            F2M=-F1M*CSJ/SQRT(A2M)                                           LGNDRE.30    
            F1M=F2M*E2                                                       LGNDRE.31    
            IF (M.NE.MMO) GOTO 1                                             LGNDRE.32    
            LM=LM+1                                                          LGNDRE.33    
            ALP(LM,JL)=F2M                                                   LGNDRE.34    
            LM=LM+1                                                          LGNDRE.35    
            ALP(LM,JL)=F1M*SIJ                                               LGNDRE.36    
            DALP(LM-1,JL)=-AM*ALP(LM,JL)/E2                                  LGNDRE.37    
         ENDIF                                                               LGNDRE.38    
         M2=M+2                                                              LGNDRE.39    
         MMO=M+MOCT                                                          LGNDRE.40    
         JFM=((NN-M1)/2)*2+M2-1                                              LGNDRE.41    
         IF (JFM.GE.M2) THEN                                                 LGNDRE.42    
            K=LM-M2+1                                                        LGNDRE.43    
            AMSQ=AM*AM                                                       LGNDRE.44    
C                                                                            LGNDRE.45    
C           Loop over degree N                                               LGNDRE.46    
C                                                                            LGNDRE.47    
            DO 4 N=M2,JFM                                                    LGNDRE.48    
               AN=N                                                          LGNDRE.49    
               AN2=N*N                                                       LGNDRE.50    
               ANM2=(N-1)*(N-1)                                              LGNDRE.51    
               E1=SQRT((ANM2-AMSQ)/(4.*ANM2-1.))                             LGNDRE.52    
               E2=SQRT((4.*AN2-1.)/(AN2-AMSQ))                               LGNDRE.53    
               ALP(K+N,JL)=E2*(SIJ*ALP(K+N-1,JL)-E1*ALP(K+N-2,JL))           LGNDRE.54    
               DALP(K+N-1,JL)=(1.-AN)*ALP(K+N,JL)/E2+AN*E1*ALP(K+N-2,JL)     LGNDRE.55    
    4       CONTINUE                                                         LGNDRE.56    
            LM=LM+JFM-M2+1                                                   LGNDRE.57    
         ENDIF                                                               LGNDRE.58    
         DALP(LM,JL)=-AN*SIJ*ALP(LM,JL)+(AN+AN+1.0)*ALP(LM-1,JL)/E2          LGNDRE.59    
    1 CONTINUE                                                               LGNDRE.60    
      RETURN                                                                 LGNDRE.61    
      END                                                                    LGNDRE.62    
