*IF DEF,CONTROL,AND,DEF,OCEAN                                              FORTXD1.2      
C ******************************COPYRIGHT******************************    GTS2F400.3097   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.3098   
C                                                                          GTS2F400.3099   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.3100   
C restrictions as set forth in the contract.                               GTS2F400.3101   
C                                                                          GTS2F400.3102   
C                Meteorological Office                                     GTS2F400.3103   
C                London Road                                               GTS2F400.3104   
C                BRACKNELL                                                 GTS2F400.3105   
C                Berkshire UK                                              GTS2F400.3106   
C                RG12 2SZ                                                  GTS2F400.3107   
C                                                                          GTS2F400.3108   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.3109   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.3110   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.3111   
C Modelling at the above address.                                          GTS2F400.3112   
C ******************************COPYRIGHT******************************    GTS2F400.3113   
C                                                                          GTS2F400.3114   
CLL  Routines: UMWRITE,UMREAD,UMRANCIL----------------------------------   OSI1F405.47     
CLL                                                                        FORTXD1.4      
CLL  Purpose: To transfer data between D1 and ocean model workspace.       FORTXD1.5      
CLL   Tracers and currents are held in D1 for sea points only.             FORTXD1.6      
CLL   Unpacking or packing is therefore required when transfering data     FORTXD1.7      
CLL   to or from an ocean slab.  This is controlled by indexes based on    FORTXD1.8      
CLL   the TRACER topography. Thus a u,v mask needs to be set up to         FORTXD1.9      
CLL   ensure all u,v land points are appropriately set either to zero in   FORTXD1.10     
CLL   ocean workspace or RMDIs in D1.                                      FORTXD1.11     
CLL                                                                        FORTXD1.12     
CLL                                                                        FORTXD1.18     
CLL  Tested under compiler:   cft77                                        FORTXD1.19     
CLL  Tested under OS version: UNICOS 5.1                                   FORTXD1.20     
CLL                                                                        FORTXD1.21     
CLL TJ, SI      <- programmer of some or all of previous code or changes   FORTXD1.22     
CLL                                                                        FORTXD1.23     
CLL  Model            Modification history from model version 3.0:         FORTXD1.24     
CLL version  Date                                                          FORTXD1.25     
CLL   3.2    25/5/93  S Foreman: convert to dynamic allocation.            @DYALLOC.904    
CLL   3.4    26/8/94  R Hill   : Remove redundant array "uv_mask"          ORH4F304.1      
CLL                              from UMREAD and UMWRITE.                  ORH4F304.2      
CLL   4.5    02/9/97  C.G. Jones : Removed the subroutine UMLATRD          OSI1F405.48     
CLL                                                                        FORTXD1.26     
CLL  Programming standard :                                                FORTXD1.27     
CLL                                                                        FORTXD1.28     
CLL  Logical system components covered : F4                                FORTXD1.29     
CLL                                                                        FORTXD1.30     
CLL  Project task:                                                         FORTXD1.31     
CLL                                                                        FORTXD1.32     
CLL  External documentation:                                               FORTXD1.33     
CLL                                                                        FORTXD1.34     
CLLEND-----------------------------------------------------------------    FORTXD1.35     
C*L Subruotine                                                             FORTXD1.36     
                                                                           FORTXD1.37     

      SUBROUTINE UMWRITE(                                                   3,6@DYALLOC.905    
*CALL ARGSIZE                                                              @DYALLOC.906    
*CALL ARGD1                                                                @DYALLOC.907    
*CALL ARGDUMO                                                              @DYALLOC.908    
*CALL ARGPTRO                                                              @DYALLOC.909    
     &                   LU,NLOC,ARRAY ! ############################      @DYALLOC.910    
     &,NDISKB,NDISK,NDISKA,FKMP,FKMQ )                                     OSI0F402.20     
C*                                                                         FORTXD1.40     
                                                                           FORTXD1.41     
      IMPLICIT NONE                                                        FORTXD1.42     
                                                                           FORTXD1.43     
CL Include COMDECKS                                                        FORTXD1.44     
*CALL TYPSIZE                                                              @DYALLOC.911    
*CALL TYPDUMO                                                              @DYALLOC.912    
*CALL TYPD1                                                                @DYALLOC.913    
*CALL TYPPTRO                                                              @DYALLOC.914    
*CALL CNTLOCN                                                              OSI0F402.21     
*CALL C_MDI                                                                FORTXD1.47     
                                                                           FORTXD1.48     
C*L Type argument list                                                     FORTXD1.49     
                                                                           FORTXD1.50     
      INTEGER                                                              FORTXD1.51     
     & NLOC                     ! Row number                               FORTXD1.52     
     &,LU                       ! Disc unit number (if continuous IO)      FORTXD1.53     
     &,NDISKB,NDISK,NDISKA      ! 1,2 or 3 (if continuous IO).             FORTXD1.54     
      REAL                                                                 FORTXD1.55     
     & ARRAY((NT+2)*IMT*KM)     ! Slab of data transfered to/from D1       FORTXD1.56     
     &,FKMP(IMT,JMT)   ! Number of vertical levels at T points             OSI0F402.22     
     &,FKMQ(IMT,JMT)   ! Number of vertical levels at u,v points           FORTXD1.57     
C*                                                                         FORTXD1.58     
                                                                           FORTXD1.59     
C Local variables                                                          FORTXD1.60     
                                                                           FORTXD1.61     
      INTEGER                                                              FORTXD1.62     
     & t_pntr(NT),u_pntr,v_pntr ! pointers to t,u,v in slab ARRAY          FORTXD1.63     
     &,MSB   ! 1 if present t-step, 2 if t-step before of after present    FORTXD1.64     
     &,LUM12 ! LU minus 12                                                 FORTXD1.65     
     &,I,J,M,K,index   ! local indexes                                     OSI0F402.23     
     &,JDIM            ! local dimension                                   OSI0F402.24     
     &,n_levels(IMT)                                                       OSI0F402.25     
      REAL                                                                 FORTXD1.69     
     & O_RMDI ! missing data indicator for fields                          FORTXD1.70     
                                                                           FORTXD1.71     
C*L External subroutines called                                            FORTXD1.72     
                                                                           FORTXD1.73     
      EXTERNAL                                                             FORTXD1.74     
     & PACK                                                                FORTXD1.75     
C*                                                                         FORTXD1.76     
                                                                           FORTXD1.77     
CL Find out for which time level data is valid                             FORTXD1.78     
C MSB=1 Data transfer for present time level                               FORTXD1.79     
C MSB=2 Data transfer for timestep before or after present time level      FORTXD1.80     
                                                                           FORTXD1.81     
      LUM12=LU-12                                                          FORTXD1.82     
      IF(LUM12.EQ.NDISKB) MSB=2                                            FORTXD1.83     
      IF(LUM12.EQ.NDISK ) MSB=1                                            FORTXD1.84     
      IF(LUM12.EQ.NDISKA) MSB=2                                            FORTXD1.85     
                                                                           FORTXD1.86     
CL Set ocean missing data indicator for fields held in dump                FORTXD1.87     
                                                                           FORTXD1.88     
      O_RMDI=RMDI                                                          FORTXD1.89     
                                                                           FORTXD1.90     
CL Set pointers to tracers and currents in slab                            FORTXD1.91     
                                                                           FORTXD1.92     
      DO M=1,NT                                                            FORTXD1.93     
        t_pntr(M)=1+IMT*KM*(M-1)                                           FORTXD1.94     
      END DO                                                               FORTXD1.95     
      u_pntr=1+IMT*KM*NT                                                   FORTXD1.96     
      v_pntr=1+IMT*KM*(NT+1)                                               FORTXD1.97     
                                                                           FORTXD1.98     
CL Set land points to missing data indicator                               OSI0F402.26     
                                                                           OSI0F402.27     
      IF (.NOT.L_OCOMP) THEN                                               OSI0F402.28     
                                                                           OSI0F402.29     
        DO I=1,IMT                                                         OSI0F402.30     
          n_levels(I)=FKMP(I,NLOC)                                         OSI0F402.31     
        END DO                                                             OSI0F402.32     
        DO M=1,NT                                                          OSI0F402.33     
          DO K=1,KM                                                        OSI0F402.34     
            index=(K-1)*IMT-1                                              OSI0F402.35     
            DO I=1,IMT                                                     OSI0F402.36     
              IF (K.GT.n_levels(i)) THEN                                   OSI0F402.37     
                 ARRAY(t_pntr(M)+index+I)=O_RMDI                           OSI0F402.38     
              END IF                                                       OSI0F402.39     
            END DO                                                         OSI0F402.40     
          END DO                                                           OSI0F402.41     
        END DO                                                             OSI0F402.42     
                                                                           OSI0F402.43     
      ENDIF                                                                OSI0F402.44     
                                                                           OSI0F402.45     
                                                                           FORTXD1.100    
      DO I=1,IMT                                                           FORTXD1.101    
        n_levels(I)=FKMQ(I,NLOC)                                           OSI0F402.46     
      END DO                                                               FORTXD1.103    
      DO K=1,KM                                                            FORTXD1.104    
        index=(K-1)*IMT-1                                                  FORTXD1.105    
        DO I=1,IMT                                                         FORTXD1.106    
          IF (K.GT.n_levels(i)) THEN                                       OSI0F402.47     
            ARRAY(u_pntr+index+I)=O_RMDI                                   FORTXD1.108    
            ARRAY(v_pntr+index+I)=O_RMDI                                   FORTXD1.109    
          END IF                                                           FORTXD1.110    
        END DO                                                             FORTXD1.111    
      END DO                                                               FORTXD1.112    
                                                                           FORTXD1.113    
CL Transfer ARRAY slab of data to D1. Tracers,ucurrent,vcurrent.           FORTXD1.114    
                                                                           FORTXD1.115    
      IF (L_OCOMP) THEN                                                    OSI0F402.48     
                                                                           OSI0F402.49     
      DO M=1,NT                                                            FORTXD1.116    
        CALL PACK(0,NLOC,NLOC,1,KM,JMT,KM                                  FORTXD1.117    
     &, IMT,1,KM,O_CFI1,O_CFI2,joc_no_segs                                 FORTXD1.118    
     &, O_CFI3                                                             FORTXD1.119    
     &, joc_no_seapts,D1(joc_tracer(M,MSB)),ARRAY(t_pntr(M))               FORTXD1.120    
     &, O_RMDI,CYCLIC_OCEAN)                                               FORTXD1.121    
      END DO                                                               FORTXD1.122    
                                                                           FORTXD1.123    
      CALL PACK(1,NLOC,NLOC,1,KM,JMT,KM                                    FORTXD1.124    
     &,IMT,1,KM,O_CFI1,O_CFI2,joc_no_segs                                  FORTXD1.125    
     &,O_CFI3                                                              FORTXD1.126    
     &,joc_no_seapts,D1(joc_u(MSB)),ARRAY(u_pntr)                          FORTXD1.127    
     &,O_RMDI,CYCLIC_OCEAN)                                                FORTXD1.128    
                                                                           FORTXD1.129    
                                                                           FORTXD1.130    
      CALL PACK(1,NLOC,NLOC,1,KM,JMT,KM                                    FORTXD1.131    
     &,IMT,1,KM,O_CFI1,O_CFI2,joc_no_segs                                  FORTXD1.132    
     &,O_CFI3                                                              FORTXD1.133    
     &,joc_no_seapts,D1(joc_v(MSB)),ARRAY(v_pntr)                          FORTXD1.134    
     &,O_RMDI,CYCLIC_OCEAN)                                                FORTXD1.135    
                                                                           FORTXD1.136    
      ELSE                                                                 OSI0F402.50     
                                                                           OSI0F402.51     
*IF DEF,MPP                                                                OSI0F402.52     
        JDIM=JMT                                                           OSI0F402.53     
*ELSE                                                                      OSI0F402.54     
        JDIM=JMTM1                                                         OSI0F402.55     
*ENDIF                                                                     OSI0F402.56     
                                                                           OSI0F402.57     
        DO M=1,NT                                                          OSI0F402.58     
          CALL OSLAB2D1(1,IMT,NLOC,NLOC,1,KM,IMT,1,KM, IMT,JMT,KM,         OSI0F402.59     
     &          D1(joc_tracer(M,MSB)),ARRAY(t_pntr(M)))                    OSI0F402.60     
        ENDDO                                                              OSI0F402.61     
                                                                           OSI0F402.62     
        CALL OSLAB2D1(1,IMT,NLOC,NLOC,1,KM,IMT,1,KM, IMT,JDIM,KM,          OSI0F402.63     
     &          D1(joc_u(MSB)),ARRAY(u_pntr))                              OSI0F402.64     
        CALL OSLAB2D1(1,IMT,NLOC,NLOC,1,KM,IMT,1,KM, IMT,JDIM,KM,          OSI0F402.65     
     &          D1(joc_v(MSB)),ARRAY(v_pntr))                              OSI0F402.66     
                                                                           OSI0F402.67     
      ENDIF                                                                OSI0F402.68     
                                                                           OSI0F402.69     
      RETURN                                                               FORTXD1.137    
      END                                                                  FORTXD1.138    
                                                                           FORTXD1.139    
                                                                           FORTXD1.140    
C*L Subroutine                                                             FORTXD1.141    
                                                                           FORTXD1.142    

      SUBROUTINE UMREAD(                                                    34,6@DYALLOC.915    
*CALL ARGSIZE                                                              @DYALLOC.916    
*CALL ARGD1                                                                @DYALLOC.917    
*CALL ARGDUMO                                                              @DYALLOC.918    
*CALL ARGPTRO                                                              @DYALLOC.919    
     &                  LU,NLOC,ARRAY ! #############################      @DYALLOC.920    
     &,NDISKB,NDISK,NDISKA,FKMP,FKMQ)                                      OSI0F402.70     
C*                                                                         FORTXD1.145    
                                                                           FORTXD1.146    
      IMPLICIT NONE                                                        FORTXD1.147    
                                                                           FORTXD1.148    
CL Include COMDECKS                                                        FORTXD1.149    
*CALL TYPSIZE                                                              @DYALLOC.921    
*CALL TYPD1                                                                @DYALLOC.922    
*CALL TYPDUMO                                                              @DYALLOC.923    
*CALL TYPPTRO                                                              @DYALLOC.924    
*CALL CNTLOCN                                                              OSI0F402.71     
*CALL COCNINDX                                                             OSI1F405.352    
                                                                           FORTXD1.153    
C*L Type argument list                                                     FORTXD1.154    
                                                                           FORTXD1.155    
      INTEGER                                                              FORTXD1.156    
     & NLOC                     ! Row number                               FORTXD1.157    
     &,LU                       ! Disc unit number (if continuous IO)      FORTXD1.158    
     &,NDISKB,NDISK,NDISKA      ! 1,2 or 3 (if continuous IO).             FORTXD1.159    
      REAL                                                                 FORTXD1.160    
     & ARRAY((NT+2)*IMT*KM)     ! Slab of data transfered to/from D1       FORTXD1.161    
     &,FKMP(IMT,JMT)   ! Number of vertical levels at t points             OSI0F402.72     
     &,FKMQ(IMT,JMT)   ! Number of vertical levels at u,v points           FORTXD1.162    
C*                                                                         FORTXD1.163    
                                                                           FORTXD1.164    
C Local variables                                                          FORTXD1.165    
                                                                           FORTXD1.166    
      INTEGER                                                              FORTXD1.167    
     & t_pntr(NT),u_pntr,v_pntr ! pointers to t,u,v in slab ARRAY          FORTXD1.168    
     &,MSB   ! 1 if present t-step, 2 if t-step before of after present    FORTXD1.169    
     &,LUM12 ! LU minus 12                                                 FORTXD1.170    
     &,I,J,M,K,index   ! local indexes                                     OSI0F402.73     
     &,JDIM            ! local dimension                                   OSI0F402.74     
     &,n_levels(IMT)                                                       OSI0F402.75     
      REAL                                                                 FORTXD1.173    
     & O_RMDI ! missing data indicator for fields                          FORTXD1.174    
                                                                           FORTXD1.176    
C*L External subroutines called                                            FORTXD1.177    
                                                                           FORTXD1.178    
      EXTERNAL                                                             FORTXD1.179    
     & UNPACK                                                              FORTXD1.180    
C*                                                                         FORTXD1.181    
                                                                           FORTXD1.182    
CL Find out for which time level data is valid                             FORTXD1.183    
C MSB=1 Data transfer for present time level                               FORTXD1.184    
C MSB=2 Data transfer for timestep before or after present time level      FORTXD1.185    
                                                                           FORTXD1.186    
      LUM12=LU-12                                                          FORTXD1.187    
      IF(LUM12.EQ.NDISKB) MSB=2                                            FORTXD1.188    
      IF(LUM12.EQ.NDISK ) MSB=1                                            FORTXD1.189    
      IF(LUM12.EQ.NDISKA) MSB=2                                            FORTXD1.190    
                                                                           FORTXD1.191    
CL Set pointers to tracers and currents in slab                            FORTXD1.192    
                                                                           FORTXD1.193    
      DO M=1,NT                                                            FORTXD1.194    
        t_pntr(M)=1+IMT*KM*(M-1)                                           FORTXD1.195    
      END DO                                                               FORTXD1.196    
      u_pntr=1+IMT*KM*NT                                                   FORTXD1.197    
      v_pntr=1+IMT*KM*(NT+1)                                               FORTXD1.198    
                                                                           FORTXD1.199    
CL Transfer slabs of data from D1 to ARRAY. Tracers,ucurrent,vcurrent.     FORTXD1.200    
                                                                           FORTXD1.201    
      IF (L_OCOMP) THEN                                                    OSI0F402.76     
                                                                           OSI0F402.77     
      DO M=1,NT                                                            FORTXD1.202    
                                                                           FORTXD1.203    
        IF(M.EQ.2) THEN                                                    FORTXD1.204    
          O_RMDI=0.01                                                      FORTXD1.205    
        ELSE                                                               FORTXD1.206    
          O_RMDI=0.0                                                       FORTXD1.207    
        END IF                                                             FORTXD1.208    
                                                                           FORTXD1.209    
        CALL UNPACK(NLOC,NLOC,1,KM,JMT,KM                                  FORTXD1.210    
     &, IMT,1,KM,O_CFI1,O_CFI2,joc_no_segs                                 FORTXD1.211    
     &, O_CFI3                                                             FORTXD1.212    
     &, joc_no_seapts,D1(joc_tracer(M,MSB)),ARRAY(t_pntr(M))               FORTXD1.213    
     &, O_RMDI,CYCLIC_OCEAN)                                               FORTXD1.214    
      END DO                                                               FORTXD1.215    
                                                                           FORTXD1.216    
      O_RMDI=0.0                                                           FORTXD1.217    
                                                                           FORTXD1.218    
      CALL UNPACK(NLOC,NLOC,1,KM,JMT,KM                                    FORTXD1.219    
     &,IMT,1,KM,O_CFI1,O_CFI2,joc_no_segs                                  FORTXD1.220    
     &,O_CFI3                                                              FORTXD1.221    
     &,joc_no_seapts,D1(joc_u(MSB)),ARRAY(u_pntr)                          FORTXD1.222    
     &,O_RMDI,CYCLIC_OCEAN)                                                FORTXD1.223    
                                                                           FORTXD1.224    
      CALL UNPACK(NLOC,NLOC,1,KM,JMT,KM                                    FORTXD1.225    
     &,IMT,1,KM,O_CFI1,O_CFI2,joc_no_segs                                  FORTXD1.226    
     &,O_CFI3                                                              FORTXD1.227    
     &,joc_no_seapts,D1(joc_v(MSB)),ARRAY(v_pntr)                          FORTXD1.228    
     &,O_RMDI,CYCLIC_OCEAN)                                                FORTXD1.229    
                                                                           OSI0F402.78     
      ELSE                                                                 OSI0F402.79     
                                                                           OSI0F402.80     
                                                                           OSI0F402.81     
*IF DEF,MPP                                                                OSI0F402.82     
        JDIM=JMT                                                           OSI0F402.83     
*ELSE                                                                      OSI0F402.84     
        JDIM=JMTM1                                                         OSI0F402.85     
*ENDIF                                                                     OSI0F402.86     
                                                                           OSI0F402.87     
        DO M=1,NT                                                          OSI0F402.88     
          CALL OD12SLAB(1,IMT,NLOC,NLOC,1,KM,IMT,1,KM, IMT,JMT,KM,         OSI0F402.89     
     &          D1(joc_tracer(M,MSB)),ARRAY(t_pntr(M)))                    OSI0F402.90     
        ENDDO                                                              OSI0F402.91     
                                                                           OSI0F402.92     
        CALL OD12SLAB(1,IMT,NLOC,NLOC,1,KM,IMT,1,KM, IMT,JDIM,KM,          OSI0F402.93     
     &        D1(joc_u(MSB)),ARRAY(u_pntr))                                OSI0F402.94     
        CALL OD12SLAB(1,IMT,NLOC,NLOC,1,KM,IMT,1,KM, IMT,JDIM,KM,          OSI0F402.95     
     &        D1(joc_v(MSB)),ARRAY(v_pntr))                                OSI0F402.96     
                                                                           OSI0F402.97     
                                                                           OSI0F402.98     
      ENDIF                                                                OSI0F402.99     
                                                                           OSI0F402.100    
                                                                           FORTXD1.230    
CL Set all land points to 0.01 for salinity, 0.0 otherwise                 OSI0F402.101    
                                                                           OSI0F402.102    
      IF (.NOT.L_OCOMP) THEN                                               OSI0F402.103    
                                                                           OSI0F402.104    
        DO M=1,NT                                                          OSI0F402.105    
          IF(M.EQ.2) THEN                                                  OSI0F402.106    
              O_RMDI=0.01                                                  OSI0F402.107    
          ELSE                                                             OSI0F402.108    
              O_RMDI=0.0                                                   OSI0F402.109    
          END IF                                                           OSI0F402.110    
                                                                           OSI0F402.111    
          DO I=1,IMT                                                       OSI0F402.112    
            n_levels(I)=FKMP(I,NLOC)                                       OSI0F402.113    
          END DO                                                           OSI0F402.114    
                                                                           OSI1F405.353    
          IF (L_OGILL_LBCS) THEN                                           OSI1F405.354    
            IF (L_OBDY_SOUTH .AND. NLOC+J_OFFSET.EQ.1) THEN                OSI1F405.355    
              DO I=1,IMT                                                   OSI1F405.356    
                n_levels(I)=FKMP(I,NLOC+1)                                 OSI1F405.357    
              END DO                                                       OSI1F405.358    
            ENDIF                                                          OSI1F405.359    
            IF (L_OBDY_NORTH .AND. NLOC+J_OFFSET.EQ.JMT_GLOBAL) THEN       OSI1F405.360    
              DO I=1,IMT                                                   OSI1F405.361    
                n_levels(I)=FKMP(I,NLOC-1)                                 OSI1F405.362    
              END DO                                                       OSI1F405.363    
            ENDIF                                                          OSI1F405.364    
          ENDIF  ! L_OGILL_LBCS                                            OSI1F405.365    
                                                                           OSI1F405.366    
          DO K=1,KM                                                        OSI0F402.115    
            index=(K-1)*IMT-1                                              OSI0F402.116    
            DO I=1,IMT                                                     OSI0F402.117    
              IF (K.GT.n_levels(I)) THEN                                   OSI0F402.118    
                ARRAY(t_pntr(M)+index+I)=O_RMDI                            OSI0F402.119    
              END IF                                                       OSI0F402.120    
            END DO                                                         OSI0F402.121    
          END DO                                                           OSI0F402.122    
      END DO                                                               OSI0F402.123    
                                                                           OSI0F402.124    
      ENDIF                                                                OSI0F402.125    
                                                                           FORTXD1.232    
      DO I=1,IMT                                                           FORTXD1.233    
        n_levels(I)=FKMQ(I,NLOC)                                           OSI0F402.126    
      END DO                                                               FORTXD1.235    
      DO K=1,KM                                                            FORTXD1.236    
        index=(K-1)*IMT-1                                                  FORTXD1.237    
        DO I=1,IMT                                                         FORTXD1.238    
          IF (K.GT.n_levels(I)) THEN                                       OSI0F402.127    
            ARRAY(u_pntr+index+I)=0.0                                      FORTXD1.240    
            ARRAY(v_pntr+index+I)=0.0                                      FORTXD1.241    
          END IF                                                           FORTXD1.242    
        END DO                                                             FORTXD1.243    
      END DO                                                               FORTXD1.244    
                                                                           FORTXD1.245    
      RETURN                                                               FORTXD1.246    
      END                                                                  FORTXD1.247    
                                                                           FORTXD1.248    
                                                                           FORTXD1.249    
C*L Subroutine call                                                        FORTXD1.250    
                                                                           FORTXD1.251    

      SUBROUTINE UMRANCIL(                                                  1@DYALLOC.925    
*CALL ARGSIZE                                                              @DYALLOC.926    
*CALL ARGD1                                                                @DYALLOC.927    
*CALL ARGPTRO                                                              @DYALLOC.929    
     &                    NLOC ! #####################################     @DYALLOC.930    
     &,wsx_um,wsy_um                                                       FORTXD1.253    
     &,htn_um                                                              FORTXD1.254    
     &,pme_um                                                              FORTXD1.255    
     &,wme_um                                                              FORTXD1.256    
     &,sol_um                                                              FORTXD1.257    
     &,snowrate_um                                                         FORTXD1.258    
     &,climsst_um                                                          FORTXD1.259    
     &,climsal_um                                                          FORTXD1.260    
     &,river_um                                                            FORTXD1.261    
     & )                                                                   FORTXD1.262    
C*                                                                         FORTXD1.263    
                                                                           FORTXD1.264    
      IMPLICIT NONE                                                        FORTXD1.265    
                                                                           FORTXD1.266    
CL Include COMDECKS                                                        FORTXD1.267    
*CALL TYPSIZE                                                              @DYALLOC.931    
*CALL TYPD1                                                                @DYALLOC.932    
*CALL TYPPTRO                                                              @DYALLOC.934    
                                                                           FORTXD1.271    
C*L Type argument list                                                     FORTXD1.272    
                                                                           FORTXD1.273    
      INTEGER                                                              FORTXD1.274    
     & NLOC                     ! Row number                               FORTXD1.275    
      REAL                                                                 FORTXD1.276    
     & wsx_um(IMT),wsy_um(IMT)  ! Components of wind stress                FORTXD1.277    
     &,wme_um(IMT)              ! Wind mixing energy (opt X)               FORTXD1.278    
     &,sol_um(IMT)              ! Penetrative heat flux (opt E)            FORTXD1.279    
     &,htn_um(IMT)              ! Surface heat flux                        FORTXD1.280    
     &,pme_um(IMT)              ! Fresh water flux                         FORTXD1.281    
     &,snowrate_um(IMT)         ! Snow rate  (opt P)                       FORTXD1.282    
     &,climsst_um(IMT)          ! Climatological SST                       FORTXD1.283    
     &,climsal_um(IMT)          ! Climatological salinity                  FORTXD1.284    
     &,river_um(IMT)        ! River Runoff (option r)                      FORTXD1.285    
C*                                                                         FORTXD1.286    
                                                                           FORTXD1.287    
C Local variables                                                          FORTXD1.288    
                                                                           FORTXD1.289    
      INTEGER                                                              FORTXD1.290    
     & I   ! local indexes                                                 FORTXD1.291    
     &,start ! pointer to row of ancillary data in D1                      FORTXD1.292    
                                                                           FORTXD1.293    
CL Set pointer to start of row NLOC in field                               FORTXD1.294    
                                                                           FORTXD1.295    
      start=(NLOC-1)*IMT-1                                                 FORTXD1.296    
                                                                           FORTXD1.297    
CL Transfer rows of ancillary data                                         FORTXD1.298    
                                                                           FORTXD1.299    
      DO I=1,IMT                                                           FORTXD1.300    
        wsx_um(I)=  D1(joc_taux   + start+I)                               FORTXD1.301    
        wsy_um(I)=  D1(joc_tauy   + start+I)                               FORTXD1.302    
        htn_um(I)=  D1(joc_heat   + start+I)                               FORTXD1.303    
        pme_um(I)=  D1(joc_ple    + start+I)                               FORTXD1.304    
      END DO                                                               FORTXD1.305    
                                                                           FORTXD1.306    
      IF (joc_wme.GT.1) THEN                                               FORTXD1.307    
        DO I=1,IMT                                                         FORTXD1.308    
          wme_um(I)=  D1(joc_wme    + start+I)                             FORTXD1.309    
        END DO                                                             FORTXD1.310    
      ENDIF                                                                FORTXD1.311    
                                                                           FORTXD1.312    
      IF (joc_solar.GT.1) THEN                                             FORTXD1.313    
        DO I=1,IMT                                                         FORTXD1.314    
          sol_um(I)=  D1(joc_solar  + start+I)                             FORTXD1.315    
        END DO                                                             FORTXD1.316    
      ENDIF                                                                FORTXD1.317    
                                                                           FORTXD1.318    
      IF (joc_snowrate.GT.1) THEN                                          FORTXD1.319    
        DO I=1,IMT                                                         FORTXD1.320    
          snowrate_um(I)=  D1(joc_snowrate  + start+I)                     FORTXD1.321    
        END DO                                                             FORTXD1.322    
      ENDIF                                                                FORTXD1.323    
                                                                           FORTXD1.324    
      IF (joc_climsst.GT.1) THEN                                           FORTXD1.325    
        DO I=1,IMT                                                         FORTXD1.326    
          climsst_um(I)=  D1(joc_climsst  + start+I)                       FORTXD1.327    
        END DO                                                             FORTXD1.328    
      ENDIF                                                                FORTXD1.329    
                                                                           FORTXD1.330    
      IF (joc_climsal.GT.1) THEN                                           FORTXD1.331    
        DO I=1,IMT                                                         FORTXD1.332    
          climsal_um(I)=  D1(joc_climsal  + start+I)                       FORTXD1.333    
        END DO                                                             FORTXD1.334    
      ENDIF                                                                FORTXD1.335    
                                                                           FORTXD1.336    
       IF (joc_river .GT. 1) THEN                                          FORTXD1.337    
           DO I=1,IMT                                                      FORTXD1.338    
             river_um(I)= D1(joc_river + start + I)                        FORTXD1.339    
           ENDDO                                                           FORTXD1.340    
       ENDIF                                                               FORTXD1.341    
                                                                           FORTXD1.342    
      RETURN                                                               FORTXD1.343    
      END                                                                  FORTXD1.344    
*ENDIF                                                                     FORTXD1.493