*IF DEF,PUMF,OR,DEF,CAMDUMP                                                GEX1F403.8      
C ******************************COPYRIGHT******************************    GTS2F400.7615   
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.7616   
C                                                                          GTS2F400.7617   
C Use, duplication or disclosure of this code is subject to the            GTS2F400.7618   
C restrictions as set forth in the contract.                               GTS2F400.7619   
C                                                                          GTS2F400.7620   
C                Meteorological Office                                     GTS2F400.7621   
C                London Road                                               GTS2F400.7622   
C                BRACKNELL                                                 GTS2F400.7623   
C                Berkshire UK                                              GTS2F400.7624   
C                RG12 2SZ                                                  GTS2F400.7625   
C                                                                          GTS2F400.7626   
C If no contract has been raised with this copy of the code, the use,      GTS2F400.7627   
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.7628   
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.7629   
C Modelling at the above address.                                          GTS2F400.7630   
C ******************************COPYRIGHT******************************    GTS2F400.7631   
C                                                                          GTS2F400.7632   
CLL  PROGRAM MAIN_PRINTDUMP and others ---------------------------         PRINTDU1.3      
CLL                                                                        PRINTDU1.4      
CLL  Purpose: Prints a summary  of contents of atmosphere, ocean or        PRINTDU1.5      
CLL           ancillary file.                                              PRINTDU1.6      
CLL           MAIN_PRINTDUMP reads in fixed length and integer             PRINTDU1.7      
CLL           headers of UM file to be printed, extracts dimensions        PRINTDU1.8      
CLL           of file and then passes these values to                      PRINTDU1.9      
CLL           subroutine PRINTDUMP.                                        PRINTDU1.10     
CLL                                                                        PRINTDU1.11     
CLL  Written by A. Dickinson 20/03/92                                      PRINTDU1.12     
CLL                                                                        PRINTDU1.13     
CLL  Model            Modification history from model version 3.0:         PRINTDU1.14     
CLL version  Date                                                          PRINTDU1.15     
CLL                                                                        AD311093.51     
CLL  3.3   31/10/93   Dimension of data array set to maximum value         AD311093.52     
CLL                   Author: A. Dickinson      Reviewer: P.Burton         AD311093.53     
CLL                                                                        PRINTDU1.16     
CLL   3.3   16/11/93  Cater for first dimension of 128 for lookup table    DR221193.115    
CLL                   in obs files and print only headers. D. Robinson.    DR221193.116    
CLL   3.3   17/11/93  Prevents pumf from attempting to read blank          DR221193.117    
CLL                   data records by skipping the section of code         DR221193.118    
CLL                   where data records are compared when the             DR221193.119    
CLL                   corresponding lookup record contains -99's           DR221193.120    
CLL                   Author: D.M.Goddard     Reviewer: D. Robinson        DR221193.121    
CLL   3.5  24/03/95    Changed OPEN to FILE_OPEN  P.Burton                 GPB1F305.121    
!     3.5  28/07/95  Submodels project. Open PPXREF file for use in        UDG2F305.460    
!                    subroutine PRLOOK                                     UDG2F305.461    
!                    Author D.M.Goddard    Reviewer S Swarbrick            UDG2F305.462    
!     4.0  18/09/95    Changes for submodel project                        UDG7F400.343    
!     4.1  18/06/96   Changes to cope with changes in STASH addressing     GDG0F401.1036   
!                     Author D.M. Goddard.                                 GDG0F401.1037   
!                                                                          UDG7F400.344    
CLL  4.1   11/05/96   Allowed for Obstore files.      C.Parrett            VSB1F401.394    
CLL  4.3      17/04/97    Tidy DEFS and code so that blank source is not   GEX1F403.9      
CLL                        produced (A. Brady)                             GEX1F403.10     
CLL  4.4   Oct. 1997 Changed error handling from routine HDPPXRF           GDW1F404.145    
CLL                  so only fatal (+ve) errors are handled.               GDW1F404.146    
CLL                                             Shaun de Witt              GDW1F404.147    
!   4.4  24/10/97   Initialise ICODE as it is no longer                    UDG9F404.80     
!                   initialised in HDPPXRF                                 UDG9F404.81     
!                   Author D.M. Goddard                                    UDG9F404.82     
!     4.5   13/07/98  Print out max and min values for boundary            UDG1F405.1      
!                     datasets.                                            UDG1F405.2      
!                     Author D.M. Goddard                                  UDG1F405.3      
!   4.5  21/08/98   Code added to print out the fields from                UDG1F405.1295   
!                   AC and VAR obs files                                   UDG1F405.1296   
!                   Author D.M. Goddard                                    UDG1F405.1297   
CLL                                                                        DR221193.122    
CLL  Programming standards:                                                PRINTDU1.17     
CLL                                                                        PRINTDU1.18     
CLL  Logical components covered:                                           PRINTDU1.19     
CLL                                                                        PRINTDU1.20     
CLL  System Tasks: F3,F4,F6                                                PRINTDU1.21     
CLL                                                                        PRINTDU1.22     
CLL  Documentation: UM Doc Paper F5                                        PRINTDU1.23     
CLL                                                                        PRINTDU1.24     
CLL  -----------------------------------------------------------------     PRINTDU1.25     

      PROGRAM MAIN_PRINTDUMP                                               ,10PRINTDU1.26     
                                                                           PRINTDU1.27     
      IMPLICIT NONE                                                        PRINTDU1.28     
                                                                           PRINTDU1.29     
      INTEGER                                                              PRINTDU1.30     
     & FIXHD(256)        !Space for fixed length header                    PRINTDU1.31     
     &,INTHD(100)        !Space for integer header                         PRINTDU1.32     
                                                                           PRINTDU1.33     
      INTEGER                                                              PRINTDU1.34     
     & LEN_FIXHD      !Length of fixed length header on input file         PRINTDU1.35     
     &,LEN_INTHD      !Length of integer header on input file              PRINTDU1.36     
     &,LEN_REALHD     !Length of real header on input file                 PRINTDU1.37     
     &,LEN1_LEVDEPC   !1st dim of lev dependent consts on input file       PRINTDU1.38     
     &,LEN2_LEVDEPC   !2nd dim of lev dependent consts on input file       PRINTDU1.39     
     &,LEN1_ROWDEPC   !1st dim of row dependent consts on input file       PRINTDU1.40     
     &,LEN2_ROWDEPC   !2nd dim of row dependent consts on input file       PRINTDU1.41     
     &,LEN1_COLDEPC   !1st dim of col dependent consts on input file       PRINTDU1.42     
     &,LEN2_COLDEPC   !2nd dim of col dependent consts on input file       PRINTDU1.43     
     &,LEN1_FLDDEPC   !1st dim of field dependent consts on input file     PRINTDU1.44     
     &,LEN2_FLDDEPC   !2nd dim of field dependent consts on input file     PRINTDU1.45     
     &,LEN_EXTCNST    !Length of extra consts on input file                PRINTDU1.46     
     &,LEN_DUMPHIST   !Length of history header on input file              PRINTDU1.47     
     &,LEN_CFI1       !Length of index1 on input file                      PRINTDU1.48     
     &,LEN_CFI2       !Length of index2 on input file                      PRINTDU1.49     
     &,LEN_CFI3       !Length of index3 on input file                      PRINTDU1.50     
     &,LEN1_LOOKUP    !1st dim of LOOKUP on input file                     PRINTDU1.51     
     &,LEN2_LOOKUP    !2nd dim of LOOKUP on input file                     PRINTDU1.52     
     &,LEN_DATA       !Length of data on input file                        PRINTDU1.53     
     &,ROW_LENGTH     !No of points E-W on input file                      PRINTDU1.54     
     &,P_ROWS         !No of p-rows on input file                          PRINTDU1.55     
     &,P_FIELD        !No of p-points per level on input file              PRINTDU1.56     
     &,MAX_FIELD_SIZE !Maximum field size on file                          AD311093.54     
                                                                           PRINTDU1.57     
      INTEGER ERR               !Return code from OPEN                     UDG2F305.463    
      INTEGER I                 !Loop index                                UDG2F305.464    
      INTEGER ErrorStatus      !Error code returned from FILE_OPEN         UDG7F400.345    
      INTEGER OpenStatus       !Error code returned from GET_FILE          UDG7F400.346    
      INTEGER NFTIN             !Unit number of input UM dump              UDG2F305.466    
      INTEGER LEN_IO            !Length of I/O returned by BUFFER IN       UDG2F305.467    
                                                                           UDG2F305.468    
      REAL A                    !BUFFER IN UNIT function                   UDG2F305.469    
      CHARACTER*80 FILENAME    !Name of user preSTASH master file          UDG7F400.347    
                                                                           PRINTDU1.65     
c                                                                          UBC4F402.1      
      integer wgdos_expand                                                 UBC4F402.2      
                                                                           PRINTDU1.66     
C External subroutines called:------------------------------------------   PRINTDU1.67     
      EXTERNAL IOERROR,ABORT_IO,BUFFIN,FILE_OPEN,SETPOS,                   GPB1F305.122    
     &         ABORT,PRINTDUMP                                             GPB1F305.123    
C*----------------------------------------------------------------------   PRINTDU1.69     
                                                                           GDG0F401.1038   
      wgdos_expand=1                                                       UBC4F402.3      
c                                                                          UBC4F402.4      
CL 1. Assign unit numbers                                                  PRINTDU1.72     
                                                                           PRINTDU1.73     
      NFTIN=20                                                             PRINTDU1.74     
                                                                           PRINTDU1.75     
      WRITE(6,*) " "                                                       UDG2F305.476    
      WRITE(6,'(20x,''FILE STATUS'')')                                     PRINTDU1.76     
      WRITE(6,'(20x,''==========='')')                                     PRINTDU1.77     
C     CALL OPEN(1,'PPXREF',6,0,0,ERR)                                      PRINTDU1.78     
      CALL FILE_OPEN(20,'FILE1',5,0,0,ERR)                                 GPB1F305.124    
                                                                           PRINTDU1.80     
                                                                           PRINTDU1.81     
CL 2. Buffer in fixed length header record                                 PRINTDU1.82     
                                                                           PRINTDU1.83     
      CALL BUFFIN(NFTIN,FIXHD,256,LEN_IO,A)                                PRINTDU1.84     
                                                                           PRINTDU1.85     
C Check for I/O errors                                                     PRINTDU1.86     
      IF(A.NE.-1.0.OR.LEN_IO.NE.256)THEN                                   PRINTDU1.87     
        CALL IOERROR('buffer in of fixed length header of input dump',     PRINTDU1.88     
     *  A,LEN_IO,256)                                                      PRINTDU1.89     
      CALL ABORT                                                           PRINTDU1.90     
      ENDIF                                                                PRINTDU1.91     
                                                                           PRINTDU1.92     
C Set missing data indicator to zero                                       PRINTDU1.93     
      DO  I=1,256                                                          PRINTDU1.94     
        IF(FIXHD(I).LT.0)FIXHD(I)=0                                        PRINTDU1.95     
      ENDDO                                                                PRINTDU1.96     
                                                                           PRINTDU1.97     
C Input file dimensions                                                    PRINTDU1.98     
      LEN_FIXHD=256                                                        PRINTDU1.99     
      LEN_INTHD=FIXHD(101)                                                 PRINTDU1.100    
      LEN_REALHD=FIXHD(106)                                                PRINTDU1.101    
      LEN1_LEVDEPC=FIXHD(111)                                              PRINTDU1.102    
      LEN2_LEVDEPC=FIXHD(112)                                              PRINTDU1.103    
      LEN1_ROWDEPC=FIXHD(116)                                              PRINTDU1.104    
      LEN2_ROWDEPC=FIXHD(117)                                              PRINTDU1.105    
      LEN1_COLDEPC=FIXHD(121)                                              PRINTDU1.106    
      LEN2_COLDEPC=FIXHD(122)                                              PRINTDU1.107    
      LEN1_FLDDEPC=FIXHD(126)                                              PRINTDU1.108    
      LEN2_FLDDEPC=FIXHD(127)                                              PRINTDU1.109    
      LEN_EXTCNST=FIXHD(131)                                               PRINTDU1.110    
      LEN_DUMPHIST=FIXHD(136)                                              PRINTDU1.111    
      LEN_CFI1=FIXHD(141)                                                  PRINTDU1.112    
      LEN_CFI2=FIXHD(143)                                                  PRINTDU1.113    
      LEN_CFI3=FIXHD(145)                                                  PRINTDU1.114    
      LEN1_LOOKUP=FIXHD(151)                                               PRINTDU1.115    
      LEN2_LOOKUP=FIXHD(152)                                               PRINTDU1.116    
      LEN_DATA=FIXHD(161)                                                  PRINTDU1.117    
                                                                           PRINTDU1.118    
                                                                           PRINTDU1.119    
CL 3. Buffer in integer constants from dump                                PRINTDU1.120    
                                                                           PRINTDU1.121    
       CALL BUFFIN(NFTIN,INTHD,FIXHD(101),LEN_IO,A)                        PRINTDU1.122    
                                                                           PRINTDU1.123    
C Check for I/O errors                                                     PRINTDU1.124    
      IF(A.NE.-1.0.OR.LEN_IO.NE.FIXHD(101))THEN                            PRINTDU1.125    
        CALL IOERROR('buffer in of integer constants in input dump',       PRINTDU1.126    
     *  A,LEN_IO,FIXHD(101))                                               PRINTDU1.127    
      CALL ABORT                                                           PRINTDU1.128    
      ENDIF                                                                PRINTDU1.129    
                                                                           PRINTDU1.130    
C Set missing data indicator to zero                                       PRINTDU1.131    
      DO  I=1,FIXHD(101)                                                   PRINTDU1.132    
        IF(INTHD(I).LT.0)INTHD(I)=0                                        PRINTDU1.133    
      ENDDO                                                                PRINTDU1.134    
                                                                           PRINTDU1.135    
       ROW_LENGTH=INTHD(6)                                                 PRINTDU1.136    
       P_ROWS=INTHD(7)                                                     PRINTDU1.137    
       P_FIELD=ROW_LENGTH*P_ROWS                                           PRINTDU1.138    
                                                                           PRINTDU1.139    
                                                                           AD311093.55     
CL Extract maximum field size from LOOKUP header                           AD311093.56     
      CALL FIND_MAX_FIELD_SIZE                                             AD311093.57     
     &     (NFTIN,FIXHD(151),FIXHD(152),FIXHD,MAX_FIELD_SIZE,              UBC4F402.5      
     &      wgdos_expand)                                                  UBC4F402.6      
C Rewind file                                                              PRINTDU1.140    
      CALL SETPOS(NFTIN,0,ErrorStatus)                                     GTD0F400.115    
                                                                           PRINTDU1.142    
CL 4. Call PRINTDUMP                                                       PRINTDU1.143    
                                                                           PRINTDU1.144    
      CALL PRINTDUMP(LEN_FIXHD,LEN_INTHD,LEN_REALHD,                       PRINTDU1.145    
     &  LEN1_LEVDEPC,LEN2_LEVDEPC,LEN1_ROWDEPC,                            PRINTDU1.146    
     &  LEN2_ROWDEPC,LEN1_COLDEPC,LEN2_COLDEPC,                            PRINTDU1.147    
     &  LEN1_FLDDEPC,LEN2_FLDDEPC,LEN_EXTCNST,                             PRINTDU1.148    
     &  LEN_DUMPHIST,LEN_CFI1,LEN_CFI2,LEN_CFI3,                           PRINTDU1.149    
     &  LEN1_LOOKUP,LEN2_LOOKUP,LEN_DATA,P_FIELD,                          PRINTDU1.150    
     &  nftin,max_field_size,wgdos_expand)                                 UBC4F402.7      
                                                                           PRINTDU1.152    
      STOP                                                                 PRINTDU1.153    
      END                                                                  PRINTDU1.154    
CLL  SUBROUTINE PRINTDUMP---------------------------------------------     PRINTDU1.155    
CLL                                                                        PRINTDU1.156    
CLL Purpose: Prints a summary of contents of atmosphere, ocean or          PRINTDU1.157    
CLL          ancillary file.                                               PRINTDU1.158    
CLL          PRINTDUMP reads in headers and data fields from unit NFTIN    PRINTDU1.159    
CLL          printing out a summary of their contents.                     PRINTDU1.160    
CLL          Printout of headers is written to unit 7.                     PRINTDU1.161    
CLL          Printout of data fileds is written to unit 6.                 PRINTDU1.162    
CLL                                                                        PRINTDU1.163    
CLL  Written by A. Dickinson                                               PRINTDU1.164    
CLL                                                                        PRINTDU1.165    
CLL  Model            Modification history from model version 3.0:         PRINTDU1.166    
CLL version  Date                                                          PRINTDU1.167    
CLL                                                                        PRINTDU1.168    
CLL   3.3   08/12/93  Extra argument for READFLDS. D. Robinson.            DR081293.101    
CLL   4.0   10/07/95  Don't print out data section for VARobs,             ASB1F400.79     
CLL                   Cx and Cov files. C.Parrett.                         ASB1F400.80     
CLL                                                                        DR081293.102    
CLL  Documentation: UM Doc Paper F5                                        PRINTDU1.169    
CLL                                                                        PRINTDU1.170    
CLL  System Tasks: F3,F4,F6                                                PRINTDU1.171    
CLL                                                                        PRINTDU1.172    
CLL  -----------------------------------------------------------------     PRINTDU1.173    
C*L  Arguments:-------------------------------------------------------     PRINTDU1.174    

      SUBROUTINE PRINTDUMP                                                  1,39PRINTDU1.175    
     &  (LEN_FIXHD,LEN_INTHD,LEN_REALHD,                                   PRINTDU1.176    
     &  LEN1_LEVDEPC,LEN2_LEVDEPC,LEN1_ROWDEPC,                            PRINTDU1.177    
     &  LEN2_ROWDEPC,LEN1_COLDEPC,LEN2_COLDEPC,                            PRINTDU1.178    
     &  LEN1_FLDDEPC,LEN2_FLDDEPC,LEN_EXTCNST,                             PRINTDU1.179    
     &  LEN_DUMPHIST,LEN_CFI1,LEN_CFI2,LEN_CFI3,                           PRINTDU1.180    
     &  LEN1_LOOKUP,LEN2_LOOKUP,LEN_DATA,P_FIELD,                          PRINTDU1.181    
     &  nftin,max_field_size,wgdos_expand)                                 UBC4F402.8      
CL                                                                         PRINTDU1.183    
CL                                                                         PRINTDU1.184    
                                                                           PRINTDU1.185    
      IMPLICIT NONE                                                        PRINTDU1.186    
                                                                           PRINTDU1.187    
      INTEGER                                                              PRINTDU1.188    
                                                                           PRINTDU1.189    
     & LEN_FIXHD    !IN Length of fixed length header on input file        PRINTDU1.190    
     &,LEN_INTHD    !IN Length of integer header on input file             PRINTDU1.191    
     &,LEN_REALHD   !IN Length of real header on input file                PRINTDU1.192    
     &,LEN1_LEVDEPC !IN 1st dim of lev dependent consts on input file      PRINTDU1.193    
     &,LEN2_LEVDEPC !IN 2nd dim of lev dependent consts on input file      PRINTDU1.194    
     &,LEN1_ROWDEPC !IN 1st dim of row dependent consts on input file      PRINTDU1.195    
     &,LEN2_ROWDEPC !IN 2nd dim of row dependent consts on input file      PRINTDU1.196    
     &,LEN1_COLDEPC !IN 1st dim of col dependent consts on input file      PRINTDU1.197    
     &,LEN2_COLDEPC !IN 2nd dim of col dependent consts on input file      PRINTDU1.198    
     &,LEN1_FLDDEPC !IN 1st dim of field dependent consts on input fi      PRINTDU1.199    
     &,LEN2_FLDDEPC !IN 2nd dim of field dependent consts on input fi      PRINTDU1.200    
     &,LEN_EXTCNST  !IN Length of extra consts on input file               PRINTDU1.201    
     &,LEN_DUMPHIST !IN Length of history header on input file             PRINTDU1.202    
     &,LEN_CFI1     !IN Length of index1 on input file                     PRINTDU1.203    
     &,LEN_CFI2     !IN Length of index2 on input file                     PRINTDU1.204    
     &,LEN_CFI3     !IN Length of index3 on input file                     PRINTDU1.205    
     &,LEN1_LOOKUP  !IN 1st dim of LOOKUP on input file                    PRINTDU1.206    
     &,LEN2_LOOKUP  !IN 2nd dim of LOOKUP on input file                    PRINTDU1.207    
     &,LEN_DATA     !IN Length of data on input file                       PRINTDU1.208    
     &,P_FIELD      !IN No of p-points per level on input file             PRINTDU1.209    
     &,MAX_FIELD_SIZE !IN Maximum field size on file                       AD311093.61     
     &,wgdos_expand ! IN set to 1 to exapnd WGDOS Fields for comparison    UBC4F402.9      
c                                                                          UBC4F402.10     
      integer lblrec_1                                                     UBC4F402.11     
                                                                           PRINTDU1.210    
      INTEGER                                                              PRINTDU1.211    
     &  NFTIN,                                                             GEX1F403.11     
     &  NFTOUT                                                             GEX1F403.12     
                                                                           PRINTDU1.213    
*CALL CSUBMODL                                                             GDG0F401.1039   
*CALL CPPXREF                                                              GDG0F401.1040   
*CALL PPXLOOK                                                              GDG0F401.1041   
*CALL CSTASH                                                               GDG0F401.1042   
*CALL CLOOKADD                                                             UBC4F402.12     
*CALL C_MDI                                                                UDG1F405.1298   
                                                                           PRINTDU1.214    
C Local arrays:---------------------------------------------------------   PRINTDU1.215    
      INTEGER                                                              PRINTDU1.216    
     & FIXHD(LEN_FIXHD),                         !                         PRINTDU1.217    
     & INTHD(LEN_INTHD),                         !\  integer               PRINTDU1.218    
     & CFI1(LEN_CFI1+1),CFI2(LEN_CFI2+1),        ! > file headers          PRINTDU1.219    
     & CFI3(LEN_CFI3+1),                         !/                        PRINTDU1.220    
     & LOOKUP(LEN1_LOOKUP,LEN2_LOOKUP)           !                         PRINTDU1.221    
                                                                           PRINTDU1.222    
      REAL                                                                 PRINTDU1.223    
     & REALHD(LEN_REALHD),                                                 PRINTDU1.224    
     & LEVDEPC(1+LEN1_LEVDEPC*LEN2_LEVDEPC),     !                         PRINTDU1.225    
     & ROWDEPC(1+LEN1_ROWDEPC*LEN2_ROWDEPC),     !                         PRINTDU1.226    
     & COLDEPC(1+LEN1_COLDEPC*LEN2_COLDEPC),     !\  real                  PRINTDU1.227    
     & FLDDEPC(1+LEN1_FLDDEPC*LEN2_FLDDEPC),     ! > file headers          PRINTDU1.228    
     & EXTCNST(LEN_EXTCNST+1),                   !/                        PRINTDU1.229    
     & DUMPHIST(LEN_DUMPHIST+1),                 !                         PRINTDU1.230    
     & D1(MAX_FIELD_SIZE)  ! Data array used to read in each field         AD311093.62     
                                                                           GDG0F401.1045   
      INTEGER RowNumber                                                    GDG0F401.1046   
                                                                           PRINTDU1.232    
C External subroutines called:------------------------------------------   PRINTDU1.233    
      EXTERNAL ABORT,ABORT_IO,READFLDS,READHEAD,HDPPXRF,GETPPX,            GDG0F401.1043   
     &         PRINT_REAL,PRINT_INTE                                       GDG0F401.1044   
C*----------------------------------------------------------------------   PRINTDU1.235    
C*L  Local variables:---------------------------------------------------   PRINTDU1.236    
                                                                           PRINTDU1.237    
      INTEGER                                                              PRINTDU1.238    
     & ICODE        ! Error return code from subroutines                   PRINTDU1.239    
     &,START_BLOCK  ! READHEAD argument (not used)                         PRINTDU1.240    
     &,I,J,K,L      ! Loop indices                                         PRINTDU1.241    
*IF DEF,CAMDUMP                                                            GEX1F403.13     
     &,ok_count     ! no. of dumps we wrote out.                           GEX1F403.14     
*ENDIF                                                                     GEX1F403.15     
                                                                           PRINTDU1.242    
      CHARACTER                                                            PRINTDU1.243    
     & CMESSAGE*100 ! Character string returned if ICODE .ne. 0            PRINTDU1.244    
     &,STRING*20    ! Format control for header printout                   PRINTDU1.245    
     &,FILENAME*80  !Name of user preSTASH master file                     GNF2F401.1      
      INTEGER NFT1,NFT2                                                    GDG0F401.1047   
      PARAMETER (NFT1=22, NFT2=2)                                          GDG0F401.1048   
                                                                           UDG1F405.4      
      INTEGER POS_MAX,POS_MIN                                              UDG1F405.5      
      REAL    F_MAX,F_MIN                                                  UDG1F405.6      
! Variables for printing out observation fields                            UDG1F405.1299   
      INTEGER IIII             !loop counter                               UDG1F405.1300   
      INTEGER BLK, NBLK, PBEGIN, PEND, OBS_LEFT                            UDG1F405.1301   
      INTEGER NumMeta, NumLevs, Lev, NumObs, NumObs_print, N               UDG1F405.1302   
      INTEGER NumItem,NumObVariables, Variable, Shift, IPGE                UDG1F405.1303   
                                                                           UDG1F405.1304   
      character*5 CNPRINT                                                  UDG1F405.1305   
c                                                                          UDG1F405.1306   
      real PGE(8),PGE1(8),PGE2(8)                                          UDG1F405.1307   
C*----------------------------------------------------------------------   PRINTDU1.246    
                                                                           PRINTDU1.247    
      NFTOUT=7                  ! Out file on unit 7.                      GEX1F403.16     
      cmessage = ' '                                                       GDW1F404.148    
                                                                           GEX1F403.17     
CL 0. Read in PPXREF                                                       GDG0F401.1049   
                                                                           GDG0F401.1050   
      ppxRecs=1                                                            GDG0F401.1051   
      RowNumber=0                                                          GDG0F401.1052   
      ICODE=0                                                              UDG9F404.83     
      CALL HDPPXRF(NFT1,'STASHmaster_A',ppxRecs,ICODE,CMESSAGE)            GDG0F401.1053   
      IF(ICODE.GT.0)THEN                                                   UDG9F404.84     
        WRITE(6,*) 'Error reading STASHmaster_A'                           UDG9F404.85     
        WRITE(6,*) CMESSAGE                                                UDG9F404.86     
        CALL ABORT                                                         UDG9F404.87     
      END IF                                                               UDG9F404.88     
      CALL HDPPXRF(NFT1,'STASHmaster_O',ppxRecs,ICODE,CMESSAGE)            GDG0F401.1054   
      IF(ICODE.GT.0)THEN                                                   UDG9F404.89     
        WRITE(6,*) 'Error reading STASHmaster_O'                           UDG9F404.90     
        WRITE(6,*) CMESSAGE                                                UDG9F404.91     
        CALL ABORT                                                         UDG9F404.92     
      END IF                                                               UDG9F404.93     
      CALL HDPPXRF(NFT1,'STASHmaster_S',ppxRecs,ICODE,CMESSAGE)            GDG0F401.1055   
      IF(ICODE.GT.0)THEN                                                   UDG9F404.94     
        WRITE(6,*) 'Error reading STASHmaster_S'                           UDG9F404.95     
        WRITE(6,*) CMESSAGE                                                UDG9F404.96     
        CALL ABORT                                                         UDG9F404.97     
      END IF                                                               UDG9F404.98     
      CALL HDPPXRF(NFT1,'STASHmaster_W',ppxRecs,ICODE,CMESSAGE)            GDG0F401.1056   
      IF(ICODE.GT.0)THEN                                                   GDW1F404.149    
        WRITE(6,*) 'Error reading STASHmaster_W'                           UDG9F404.99     
        WRITE(6,*) CMESSAGE                                                GDG0F401.1058   
        CALL ABORT                                                         GDG0F401.1059   
      ENDIF                                                                GDG0F401.1060   
                                                                           GDG0F401.1061   
      CALL GETPPX(NFT1,NFT2,'STASHmaster_A',RowNumber,                     GDG0F401.1062   
*CALL ARGPPX                                                               GDG0F401.1063   
     &            ICODE,CMESSAGE)                                          GDG0F401.1064   
      CALL GETPPX(NFT1,NFT2,'STASHmaster_O',RowNumber,                     GDG0F401.1065   
*CALL ARGPPX                                                               GDG0F401.1066   
     &            ICODE,CMESSAGE)                                          GDG0F401.1067   
      CALL GETPPX(NFT1,NFT2,'STASHmaster_S',RowNumber,                     GDG0F401.1068   
*CALL ARGPPX                                                               GDG0F401.1069   
     &            ICODE,CMESSAGE)                                          GDG0F401.1070   
      CALL GETPPX(NFT1,NFT2,'STASHmaster_W',RowNumber,                     GDG0F401.1071   
*CALL ARGPPX                                                               GDG0F401.1072   
     &            ICODE,CMESSAGE)                                          GDG0F401.1073   
      IF(ICODE.NE.0)THEN                                                   GDG0F401.1074   
        WRITE(6,*) CMESSAGE                                                GDG0F401.1075   
        CALL ABORT                                                         GDG0F401.1076   
      ENDIF                                                                GDG0F401.1077   
                                                                           GDG0F401.1078   
!User STASHmaster                                                          GDG0F401.1079   
      CALL HDPPXRF(0,' ',ppxRecs,ICODE,CMESSAGE)                           GDG0F401.1080   
      IF(ICODE.NE.0)THEN                                                   GDG0F401.1081   
        WRITE(6,*) CMESSAGE                                                GDG0F401.1082   
        CALL ABORT                                                         GDG0F401.1083   
      ENDIF                                                                GDG0F401.1084   
                                                                           GDG0F401.1085   
      CALL GETPPX(0,NFT2,' ',RowNumber,                                    GDG0F401.1086   
*CALL ARGPPX                                                               GDG0F401.1087   
     &            ICODE,CMESSAGE)                                          GDG0F401.1088   
      IF(ICODE.NE.0)THEN                                                   GDG0F401.1089   
        WRITE(6,*) CMESSAGE                                                GDG0F401.1090   
        CALL ABORT                                                         GDG0F401.1091   
      ENDIF                                                                GDG0F401.1092   
                                                                           GDG0F401.1093   
*IF DEF,CAMDUMP                                                            GEX1F403.18     
CLL   Initialise counter for no of dumps written out                       GEX1F403.19     
      OK_COUNT=0                                                           GEX1F403.20     
                                                                           GEX1F403.21     
*ENDIF                                                                     GEX1F403.22     
CL 1. Read in file header                                                  PRINTDU1.248    
                                                                           PRINTDU1.249    
      CALL READHEAD(NFTIN,FIXHD,LEN_FIXHD,                                 PRINTDU1.250    
     &                INTHD,LEN_INTHD,                                     PRINTDU1.251    
     &                REALHD,LEN_REALHD,                                   PRINTDU1.252    
     &                LEVDEPC,LEN1_LEVDEPC,LEN2_LEVDEPC,                   PRINTDU1.253    
     &                ROWDEPC,LEN1_ROWDEPC,LEN2_ROWDEPC,                   PRINTDU1.254    
     &                COLDEPC,LEN1_COLDEPC,LEN2_COLDEPC,                   PRINTDU1.255    
     &                FLDDEPC,LEN1_FLDDEPC,LEN2_FLDDEPC,                   PRINTDU1.256    
     &                EXTCNST,LEN_EXTCNST,                                 PRINTDU1.257    
     &                DUMPHIST,LEN_DUMPHIST,                               PRINTDU1.258    
     &                CFI1,LEN_CFI1,                                       PRINTDU1.259    
     &                CFI2,LEN_CFI2,                                       PRINTDU1.260    
     &                CFI3,LEN_CFI3,                                       PRINTDU1.261    
     &                LOOKUP,LEN1_LOOKUP,LEN2_LOOKUP,                      PRINTDU1.262    
     &                LEN_DATA,                                            PRINTDU1.263    
*CALL ARGPPX                                                               GDG0F401.1094   
     &                START_BLOCK,ICODE,CMESSAGE)                          PRINTDU1.264    
                                                                           PRINTDU1.265    
      IF(ICODE.NE.0)THEN                                                   PRINTDU1.266    
        WRITE(6,*)CMESSAGE,ICODE                                           PRINTDU1.267    
        CALL ABORT                                                         PRINTDU1.268    
      ENDIF                                                                PRINTDU1.269    
C                                                                          GNF2F401.2      
C       Open up unit NFTOUT (N.Farnon)                                     GEX1F403.23     
C                                                                          GNF2F401.4      
      CALL GET_FILE(NFTOUT,FILENAME,80,ICODE)                              GEX1F403.24     
*IF DEF,CAMDUMP                                                            GEX1F403.25     
      OPEN(NFTOUT,RECL=5000,FILE=FILENAME,STATUS='NEW',IOSTAT=ICODE)       GEX1F403.26     
*ELSE                                                                      GEX1F403.27     
      OPEN(NFTOUT,FILE=FILENAME,STATUS='NEW',IOSTAT=ICODE)                 GEX1F403.28     
*ENDIF                                                                     GEX1F403.29     
      IF (ICODE.NE.0) THEN                                                 GNF2F401.7      
        WRITE(6,*) 'Can not write to ',FILENAME                            GNF2F401.8      
      ELSE                                                                 GNF2F401.9      
        WRITE(6,*) 'OPEN: ',NFTOUT,':',FILENAME,'has been created'         GEX1F403.30     
      ENDIF                                                                GNF2F401.11     
C                                                                          GNF2F401.12     
                                                                           PRINTDU1.270    
*IF DEF,PUMF                                                               GEX1F403.31     
CL 2. Print out Fixed Length Header                                        PRINTDU1.271    
      WRITE(NFTOUT,*)                                                      GEX1F403.32     
      WRITE(NFTOUT,*)'                FIXED LENGTH HEADER'                 GEX1F403.33     
      WRITE(NFTOUT,*)'                -------------------'                 GEX1F403.34     
      WRITE(NFTOUT,*)                                                      GEX1F403.35     
      CALL PRINT_INTE(FIXHD,LEN_FIXHD,LEN_FIXHD,1,NFTOUT)                  GEX1F403.36     
                                                                           PRINTDU1.277    
CL 3. Print out Integer Header                                             PRINTDU1.278    
      IF(LEN_INTHD.GT.0)THEN                                               PRINTDU1.279    
        WRITE(NFTOUT,*)                                                    GEX1F403.37     
        WRITE(NFTOUT,*)'               INTEGER HEADER'                     GEX1F403.38     
        WRITE(NFTOUT,*)'               --------------'                     GEX1F403.39     
        WRITE(NFTOUT,*)                                                    GEX1F403.40     
        CALL PRINT_INTE(INTHD,LEN_INTHD,LEN_INTHD,1,NFTOUT)                GEX1F403.41     
      ENDIF                                                                PRINTDU1.285    
                                                                           PRINTDU1.286    
CL 4. Print out Real Header                                                PRINTDU1.287    
      IF(LEN_REALHD.GT.0)THEN                                              PRINTDU1.288    
        WRITE(NFTOUT,*)                                                    GEX1F403.42     
        WRITE(NFTOUT,*)'                REAL HEADER'                       GEX1F403.43     
        WRITE(NFTOUT,*)'                -----------'                       GEX1F403.44     
        WRITE(NFTOUT,*)                                                    GEX1F403.45     
        CALL PRINT_REAL(REALHD,LEN_REALHD,LEN_REALHD,1,NFTOUT)             GEX1F403.46     
      ENDIF                                                                PRINTDU1.294    
                                                                           PRINTDU1.295    
CL 5. Print out Level Dependent Constants                                  PRINTDU1.296    
      IF(FIXHD(110).GT.0 .AND. LEN2_LEVDEPC.GT.0)THEN                      DR221193.123    
        WRITE(NFTOUT,*)                                                    GEX1F403.47     
        WRITE(NFTOUT,*)'                LEVEL DEPENDENT CONSTS'            GEX1F403.48     
        WRITE(NFTOUT,*)'                ----------------------'            GEX1F403.49     
        WRITE(NFTOUT,*)                                                    GEX1F403.50     
        DO K=1,LEN2_LEVDEPC                                                PRINTDU1.302    
        WRITE(NFTOUT,*)K,':'                                               GEX1F403.51     
        CALL PRINT_REAL(LEVDEPC,LEN1_LEVDEPC,LEN1_LEVDEPC,K,NFTOUT)        GEX1F403.52     
        ENDDO                                                              PRINTDU1.305    
      ENDIF                                                                PRINTDU1.306    
                                                                           PRINTDU1.307    
CL 7. Print out Row Dependent Constants                                    PRINTDU1.308    
      IF(FIXHD(115).GT.0 .AND. LEN2_ROWDEPC.GT.0)THEN                      DR221193.124    
        WRITE(NFTOUT,*)                                                    GEX1F403.53     
        WRITE(NFTOUT,*)'                  ROW DEPENDENT CONSTS'            GEX1F403.54     
        WRITE(NFTOUT,*)'                  --------------------'            GEX1F403.55     
        WRITE(NFTOUT,*)                                                    GEX1F403.56     
        DO K=1,LEN2_ROWDEPC                                                PRINTDU1.314    
        WRITE(NFTOUT,*)K,':'                                               GEX1F403.57     
        CALL PRINT_REAL(ROWDEPC,LEN1_ROWDEPC,LEN1_ROWDEPC,K,NFTOUT)        GEX1F403.58     
        ENDDO                                                              PRINTDU1.317    
      ENDIF                                                                PRINTDU1.318    
                                                                           PRINTDU1.319    
CL 8. Print out Column Dependent Consts                                    PRINTDU1.320    
      IF(FIXHD(120).GT.0 .AND. LEN2_COLDEPC.GT.0)THEN                      DR221193.125    
        WRITE(NFTOUT,*)                                                    GEX1F403.59     
        WRITE(NFTOUT,*)'               COLUMN DEPENDENT CONSTS'            GEX1F403.60     
        WRITE(NFTOUT,*)'               -----------------------'            GEX1F403.61     
        WRITE(NFTOUT,*)                                                    GEX1F403.62     
        DO K=1,LEN2_COLDEPC                                                PRINTDU1.326    
        WRITE(NFTOUT,*)K,':'                                               GEX1F403.63     
        CALL PRINT_REAL(COLDEPC,LEN1_COLDEPC,LEN1_COLDEPC,K,NFTOUT)        GEX1F403.64     
        ENDDO                                                              PRINTDU1.329    
      ENDIF                                                                PRINTDU1.330    
                                                                           PRINTDU1.331    
CL 9. Print out Field Dependent Consts                                     PRINTDU1.332    
      IF(FIXHD(125).GT.0 .AND. LEN2_FLDDEPC.GT.0)THEN                      DR221193.126    
        WRITE(NFTOUT,*)                                                    GEX1F403.65     
        WRITE(NFTOUT,*)'               FIELD DEPENDENT CONSTS'             GEX1F403.66     
        WRITE(NFTOUT,*)'               ----------------------'             GEX1F403.67     
        WRITE(NFTOUT,*)                                                    GEX1F403.68     
        DO K=1,LEN2_FLDDEPC                                                PRINTDU1.338    
        WRITE(NFTOUT,*)K,':'                                               GEX1F403.69     
        CALL PRINT_REAL(FLDDEPC,LEN1_FLDDEPC,LEN1_FLDDEPC,K,NFTOUT)        GEX1F403.70     
        ENDDO                                                              PRINTDU1.341    
      ENDIF                                                                PRINTDU1.342    
                                                                           PRINTDU1.343    
CL 10. Print out Extra Constants                                           PRINTDU1.344    
      IF(FIXHD(130).GT.0 .AND. LEN_EXTCNST.GT.0)THEN                       DR221193.127    
        WRITE(NFTOUT,*)                                                    GEX1F403.71     
        WRITE(NFTOUT,*)'                EXTRA CONSTS'                      GEX1F403.72     
        WRITE(NFTOUT,*)'                ------------'                      GEX1F403.73     
        WRITE(NFTOUT,*)                                                    GEX1F403.74     
        CALL PRINT_REAL(EXTCNST,LEN_EXTCNST,LEN_EXTCNST,1,NFTOUT)          GEX1F403.75     
      ENDIF                                                                PRINTDU1.351    
                                                                           PRINTDU1.352    
CL 11. Print out CFI1                                                      PRINTDU1.353    
      IF(FIXHD(140).GT.0 .AND. LEN_CFI1.GT.0)THEN                          DR221193.128    
        WRITE(NFTOUT,*)                                                    GEX1F403.76     
        WRITE(NFTOUT,*)'               COMPRESSED FIELD INDEX 1'           GEX1F403.77     
        WRITE(NFTOUT,*)'               ------------------------'           GEX1F403.78     
        WRITE(NFTOUT,*)                                                    GEX1F403.79     
        CALL PRINT_INTE(CFI1,LEN_CFI1,LEN_CFI1,1,NFTOUT)                   GEX1F403.80     
      ENDIF                                                                PRINTDU1.360    
                                                                           PRINTDU1.361    
CL 12. Print out CFI2                                                      PRINTDU1.362    
      IF(FIXHD(142).GT.0 .AND. LEN_CFI2.GT.0)THEN                          DR221193.129    
        WRITE(NFTOUT,*)                                                    GEX1F403.81     
        WRITE(NFTOUT,*)'               COMPRESSED FIELD INDEX 2'           GEX1F403.82     
        WRITE(NFTOUT,*)'               ------------------------'           GEX1F403.83     
        WRITE(NFTOUT,*)                                                    GEX1F403.84     
        CALL PRINT_INTE(CFI2,LEN_CFI2,LEN_CFI2,1,NFTOUT)                   GEX1F403.85     
      ENDIF                                                                PRINTDU1.369    
                                                                           PRINTDU1.370    
CL 12. Print out CFI3                                                      PRINTDU1.371    
      IF(FIXHD(144).GT.0 .AND. LEN_CFI3.GT.0)THEN                          DR221193.130    
        WRITE(NFTOUT,*)                                                    GEX1F403.86     
        WRITE(NFTOUT,*)'               COMPRESSED FIELD INDEX 3'           GEX1F403.87     
        WRITE(NFTOUT,*)'               ------------------------'           GEX1F403.88     
        WRITE(NFTOUT,*)                                                    GEX1F403.89     
        CALL PRINT_INTE(CFI3,LEN_CFI3,LEN_CFI3,1,NFTOUT)                   GEX1F403.90     
      ENDIF                                                                PRINTDU1.378    
                                                                           PRINTDU1.379    
CL 13. Print out LOOKUP Headers                                            PRINTDU1.380    
      IF(LEN2_LOOKUP.GT.0)THEN                                             PRINTDU1.381    
        WRITE(NFTOUT,*)                                                    GEX1F403.91     
        WRITE(NFTOUT,*)'               LOOKUP HEADERS'                     GEX1F403.92     
        WRITE(NFTOUT,*)'               --------------'                     GEX1F403.93     
        WRITE(NFTOUT,*)                                                    GEX1F403.94     
        DO K=1,LEN2_LOOKUP                                                 PRINTDU1.386    
        IF (LOOKUP(1,K).NE.-99) THEN                                       DR221193.131    
        WRITE(NFTOUT,*)K,':'                                               GEX1F403.95     
        WRITE(NFTOUT,*) 'Words 1-45'                                       GEX1F403.96     
        CALL PRINT_INTE(LOOKUP(1,1),45,LEN1_LOOKUP,K,NFTOUT)               GEX1F403.97     
        WRITE(NFTOUT,*) 'Words 46-64'                                      GEX1F403.98     
        CALL PRINT_REAL(LOOKUP(46,1),19,LEN1_LOOKUP,K,NFTOUT)              GEX1F403.99     
        IF (LEN1_LOOKUP.GT.64) THEN                                        DR221193.134    
          WRITE(NFTOUT,*) 'Words 65-128'                                   GEX1F403.100    
          CALL PRINT_INTE(LOOKUP(65,1),64,LEN1_LOOKUP,K,NFTOUT)            GEX1F403.101    
        ENDIF                                                              DR221193.137    
        ENDIF                                                              DR221193.138    
        ENDDO                                                              PRINTDU1.390    
      ENDIF                                                                PRINTDU1.391    
                                                                           PRINTDU1.392    
CL 13. Print out individual fields                                         PRINTDU1.393    
                                                                           DR221193.139    
      WRITE(6,*)                                                           DR221193.140    
      WRITE(6,*)'               DATA FIELDS'                               DR221193.141    
      WRITE(6,*)'               -----------'                               DR221193.142    
      WRITE(6,*)                                                           DR221193.143    
                                                                           DR221193.144    
      IF (FIXHD(5).GE.8 .AND. FIXHD(5).LE.10) THEN !Cx/Cov/ObS             UDG1F405.1308   
                                                                           DR221193.146    
        WRITE (6,*)                                                        DR221193.147    
        WRITE (6,*) 'Observation file : Observations not printed out'      DR221193.148    
        WRITE (6,*)                                                        DR221193.149    
                                                                           DR221193.150    
      ELSE                                                                 DR221193.151    
                                                                           DR221193.152    
                                                                           DR221193.159    
      DO I=1,LEN2_LOOKUP                                                   PRINTDU1.394    
                                                                           PRINTDU1.395    
       lblrec_1=lookup(lblrec, i)                                          UBC4F402.14     
       IF (LOOKUP(1,I).NE.-99) THEN                                        DR221193.160    
        CALL READFLDS(NFTIN,1,I,LOOKUP,LEN1_LOOKUP,                        GDG0F401.1095   
     &                D1,MAX_FIELD_SIZE,FIXHD,                             GDG0F401.1096   
*CALL ARGPPX                                                               GDG0F401.1097   
     &               wgdos_expand,icode,cmessage)                          UBC4F402.15     
        IF(ICODE.NE.0)CALL ABORT_IO('PRINTDUMP',CMESSAGE,ICODE,NFTIN)      PRINTDU1.398    
        IF(FIXHD(5).EQ.5)THEN                                              UDG1F405.7      
! Boundary dataset. READFLDS does not write out max and min values         UDG1F405.8      
! for boundary datasets.                                                   UDG1F405.9      
          F_MIN=D1(1)                                                      UDG1F405.10     
          F_MAX=D1(1)                                                      UDG1F405.11     
          POS_MAX=1                                                        UDG1F405.12     
          POS_MIN=1                                                        UDG1F405.13     
          DO J=1,LOOKUP(LBLREC,I)                                          UDG1F405.14     
            IF(D1(J).GT.F_MAX)THEN                                         UDG1F405.15     
              F_MAX=D1(J)                                                  UDG1F405.16     
              POS_MAX=J                                                    UDG1F405.17     
            ENDIF                                                          UDG1F405.18     
            IF(D1(J).LT.F_MIN)THEN                                         UDG1F405.19     
              F_MIN=D1(J)                                                  UDG1F405.20     
              POS_MIN=J                                                    UDG1F405.21     
            END IF                                                         UDG1F405.22     
          END DO                                                           UDG1F405.23     
                                                                           UDG1F405.24     
          WRITE(6,'('' MINIMUM='',E12.5,'' POSITION='',I8,                 UDG1F405.25     
     &              '' MAXIMUM='',E12.5,'' POSITION='',I8)')               UDG1F405.26     
     &          F_MIN,POS_MIN,F_MAX,POS_MAX                                UDG1F405.27     
                                                                           UDG1F405.28     
          WRITE(6,'('' '')')                                               UDG1F405.29     
        END IF                                                             UDG1F405.30     
        IF (FIXHD(5) .EQ. 6) THEN ! ACOBS file                             UDG1F405.1309   
          NumMeta=5                                                        UDG1F405.1310   
          NumLevs=INT(LEVDEPC((I-1)*LEN1_LEVDEPC+2))                       UDG1F405.1311   
          NumObs=LOOKUP(66,I)                                              UDG1F405.1312   
          CALL FORT_GET_ENV("NPRINT",6,CNPRINT,5,ICODE)                    UDG1F405.1313   
          IF (ICODE .NE. 0) THEN                                           UDG1F405.1314   
           WRITE(6,'(A33)') 'ERROR ENCOUNTERED IN FORT_GET_ENV'            UDG1F405.1315   
           RETURN                                                          UDG1F405.1316   
          END IF                                                           UDG1F405.1317   
          READ(CNPRINT,'(I5)') NumObs_print                                UDG1F405.1318   
          NumObs_print=MIN(NumObs_print,NumObs)                            UDG1F405.1319   
          NBLK=INT(NumObs_print/8)                                         UDG1F405.1320   
          WRITE (6,'(/,A10,I5,A6,I3,A13)') 'There are ',                   UDG1F405.1321   
     &           NumObs,' type ',                                          UDG1F405.1322   
     &           LOOKUP(65,I),' observations'                              UDG1F405.1323   
          PEND=0                                                           UDG1F405.1324   
          DO BLK = 1, NBLK                                                 UDG1F405.1325   
           N=0                                                             UDG1F405.1326   
           PBEGIN=((BLK-1)*8)+1                                            UDG1F405.1327   
           PEND=((BLK-1)*8)+8                                              UDG1F405.1328   
           WRITE (6,*)                                                     UDG1F405.1329   
           WRITE (6,'(A12,8I12)')     'Observation:',                      UDG1F405.1330   
     &           ((PBEGIN-1+IIII),IIII=1,8)                                UDG1F405.1331   
           WRITE (6,'(A12,8F12.2)') 'Latitude  : ',                        UDG1F405.1332   
     &           (D1(0*NumObs+IIII),IIII=PBEGIN,PEND)                      UDG1F405.1333   
           WRITE (6,'(A12,8F12.2)') 'Longitude : ',                        UDG1F405.1334   
     &           (D1(1*NumObs+IIII),IIII=PBEGIN,PEND)                      UDG1F405.1335   
           WRITE (6,'(A12,8F12.2)') 'Time      : ',                        UDG1F405.1336   
     &           (D1(2*NumObs+IIII),IIII=PBEGIN,PEND)                      UDG1F405.1337   
           WRITE (6,'(A12,8F12.2)') 'MOT       : ',                        UDG1F405.1338   
     &           (D1(3*NumObs+IIII),IIII=PBEGIN,PEND)                      UDG1F405.1339   
           IF (INT(LEVDEPC((I-1)*LEN1_LEVDEPC+1)) .EQ. 1) THEN             UDG1F405.1340   
            N=1                                                            UDG1F405.1341   
            WRITE (6,'(A12,8F12.2)') 'Pressure  : ',                       UDG1F405.1342   
     &            (D1(5*NumObs+IIII)/100.,IIII=PBEGIN,PEND)                UDG1F405.1343   
           END IF                                                          UDG1F405.1344   
           DO Lev = 1, NumLevs                                             UDG1F405.1345   
            WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                    UDG1F405.1346   
     &            (D1((5+N)*NumObs+(NumObs*(Lev-1))+IIII),                 UDG1F405.1347   
     &                 IIII=PBEGIN,PEND)                                   UDG1F405.1348   
           END DO                                                          UDG1F405.1349   
           DO Lev = 1, NumLevs                                             UDG1F405.1350   
            WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                    UDG1F405.1351   
     &            (D1((5+N)*NumObs+(NumObs*(NumLevs+Lev-1))+IIII),         UDG1F405.1352   
     &                 IIII=PBEGIN,PEND)                                   UDG1F405.1353   
           END DO                                                          UDG1F405.1354   
           IF ( LOOKUP(65,I) .EQ. 301 .OR.                                 UDG1F405.1355   
     &          LOOKUP(65,I) .EQ. 302 .OR.                                 UDG1F405.1356   
     &          LOOKUP(65,I) .EQ. 303 .OR.                                 UDG1F405.1357   
     &          LOOKUP(65,I) .EQ. 304 .OR.                                 UDG1F405.1358   
     &          LOOKUP(65,I) .EQ. 305 .OR.                                 UDG1F405.1359   
     &          LOOKUP(65,I) .EQ. 306 ) THEN                               UDG1F405.1360   
             DO Lev = 1, NumLevs                                           UDG1F405.1361   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1362   
     &              (D1((5+N)*NumObs+(NumObs*(2*NumLevs+Lev-1))+IIII),     UDG1F405.1363   
     &                   IIII=PBEGIN,PEND)                                 UDG1F405.1364   
             END DO                                                        UDG1F405.1365   
           END IF                                                          UDG1F405.1366   
          END DO                                                           UDG1F405.1367   
          OBS_LEFT=NumObs_print - NBLK*8                                   UDG1F405.1368   
          IF (OBS_LEFT .NE. 0 .AND. NumObs .NE. 0) THEN                    UDG1F405.1369   
           N=0                                                             UDG1F405.1370   
           WRITE (6,*)                                                     UDG1F405.1371   
           WRITE (6,'(A12,8I12)')     'Observation:',                      UDG1F405.1372   
     &           (IIII,IIII=PEND+1,PEND+OBS_LEFT)                          UDG1F405.1373   
           WRITE (6,'(A12,8F12.2)') 'Latitude  : ',                        UDG1F405.1374   
     &           (D1(0*NumObs+IIII),IIII=PEND+1,PEND+OBS_LEFT)             UDG1F405.1375   
           WRITE (6,'(A12,8F12.2)') 'Longitude : ',                        UDG1F405.1376   
     &           (D1(1*NumObs+IIII),IIII=PEND+1,PEND+OBS_LEFT)             UDG1F405.1377   
           WRITE (6,'(A12,8F12.2)') 'Time      : ',                        UDG1F405.1378   
     &           (D1(2*NumObs+IIII),IIII=PEND+1,PEND+OBS_LEFT)             UDG1F405.1379   
           WRITE (6,'(A12,8F12.2)') 'MOT       : ',                        UDG1F405.1380   
     &           (D1(3*NumObs+IIII),IIII=PEND+1,PEND+OBS_LEFT)             UDG1F405.1381   
           IF (INT(LEVDEPC((I-1)*LEN1_LEVDEPC+1)) .EQ. 1) THEN             UDG1F405.1382   
            N=1                                                            UDG1F405.1383   
            WRITE (6,'(A12,8F12.2)') 'Pressure  : ',                       UDG1F405.1384   
     &            (D1(5*NumObs+IIII)/100.,IIII=PEND+1,PEND+OBS_LEFT)       UDG1F405.1385   
           END IF                                                          UDG1F405.1386   
           DO Lev = 1, NumLevs                                             UDG1F405.1387   
             WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                   UDG1F405.1388   
     &             (D1((5+N)*NumObs+(NumObs*(Lev-1))+IIII),                UDG1F405.1389   
     &                  IIII=PEND+1,PEND+OBS_LEFT)                         UDG1F405.1390   
           END DO                                                          UDG1F405.1391   
           DO Lev = 1, NumLevs                                             UDG1F405.1392   
            WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                    UDG1F405.1393   
     &            (D1((5+N)*NumObs+(NumObs*(NumLevs+Lev-1))+IIII),         UDG1F405.1394   
     &                 IIII=PEND+1,PEND+OBS_LEFT)                          UDG1F405.1395   
           END DO                                                          UDG1F405.1396   
           IF ( LOOKUP(65,I) .EQ. 301 .OR.                                 UDG1F405.1397   
     &          LOOKUP(65,I) .EQ. 302 .OR.                                 UDG1F405.1398   
     &          LOOKUP(65,I) .EQ. 303 .OR.                                 UDG1F405.1399   
     &          LOOKUP(65,I) .EQ. 304 .OR.                                 UDG1F405.1400   
     &          LOOKUP(65,I) .EQ. 305 .OR.                                 UDG1F405.1401   
     &          LOOKUP(65,I) .EQ. 306 ) THEN                               UDG1F405.1402   
            DO Lev = 1, NumLevs                                            UDG1F405.1403   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1404   
     &              (D1((5+N)*NumObs+(NumObs*(2*NumLevs+Lev-1))+IIII),     UDG1F405.1405   
     &                   IIII=PEND+1,PEND+OBS_LEFT)                        UDG1F405.1406   
            END DO                                                         UDG1F405.1407   
           END IF                                                          UDG1F405.1408   
          ENDIF                                                            UDG1F405.1409   
        ENDIF                                                              UDG1F405.1410   
                                                                           UDG1F405.1411   
        IF (FIXHD(5) .EQ. 7) THEN ! VAROBS file                            UDG1F405.1412   
          NumMeta=7                                                        UDG1F405.1413   
          NumItem=3                                                        UDG1F405.1414   
          NumObVariables=(LOOKUP(67,I)-NumMeta)/NumItem                    UDG1F405.1415   
          NumLevs=INT(LEVDEPC((I-1)*LEN1_LEVDEPC+2))                       UDG1F405.1416   
          Shift=NumMeta+(NumLevs*NumObVariables*NumItem)                   UDG1F405.1417   
          NumObs=LOOKUP(66,I)                                              UDG1F405.1418   
          CALL FORT_GET_ENV("NPRINT",6,CNPRINT,5,ICODE)                    UDG1F405.1419   
          IF (ICODE .NE. 0) THEN                                           UDG1F405.1420   
           WRITE(6,'(A33)') 'ERROR ENCOUNTERED IN FORT_GET_ENV'            UDG1F405.1421   
           RETURN                                                          UDG1F405.1422   
          END IF                                                           UDG1F405.1423   
          READ(CNPRINT,'(I5)') NumObs_print                                UDG1F405.1424   
          NumObs_print=MIN(NumObs_print,NumObs)                            UDG1F405.1425   
          NBLK=INT(NumObs_print/8)                                         UDG1F405.1426   
          PEND=0                                                           UDG1F405.1427   
          DO BLK = 1, NBLK                                                 UDG1F405.1428   
           PBEGIN=((BLK-1)*8)+1                                            UDG1F405.1429   
           PEND=((BLK-1)*8)+8                                              UDG1F405.1430   
           WRITE (6,*)                                                     UDG1F405.1431   
           WRITE (6,'(A12,8I12)')     'Observation:',                      UDG1F405.1432   
     &           ((PBEGIN-1+IIII),IIII=1,8)                                UDG1F405.1433   
           WRITE (6,'(A12,8F12.2)') 'Latitude  : ',                        UDG1F405.1434   
     &           (D1((IIII-1)*Shift+1),IIII=PBEGIN,PEND)                   UDG1F405.1435   
           WRITE (6,'(A12,8F12.2)') 'Longitude : ',                        UDG1F405.1436   
     &           (D1((IIII-1)*Shift+2),IIII=PBEGIN,PEND)                   UDG1F405.1437   
           WRITE (6,'(A12,8F12.2)') 'Time      : ',                        UDG1F405.1438   
     &           (D1((IIII-1)*Shift+3),IIII=PBEGIN,PEND)                   UDG1F405.1439   
           WRITE (6,'(A12,8F12.2)') 'MOT       : ',                        UDG1F405.1440   
     &           (D1((IIII-1)*Shift+4),IIII=PBEGIN,PEND)                   UDG1F405.1441   
           DO Variable = 1, NumObVariables                                 UDG1F405.1442   
            WRITE (6,*)                                                    UDG1F405.1443   
            DO Lev = 1, NumLevs                                            UDG1F405.1444   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1445   
     &              (D1((IIII-1)*Shift+NumMeta+                            UDG1F405.1446   
     &       (NumObVariables*NumItem*(Lev-1))+(Variable-1)*NumItem+1),     UDG1F405.1447   
     &               IIII=PBEGIN,PEND)                                     UDG1F405.1448   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1449   
     &              (D1((IIII-1)*Shift+NumMeta+                            UDG1F405.1450   
     &              (NumObVariables*NumItem*(Lev-1))+                      UDG1F405.1451   
     &              (Variable-1)*NumItem+2),                               UDG1F405.1452   
     &               IIII=PBEGIN,PEND)                                     UDG1F405.1453   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1454   
     &              (D1((IIII-1)*Shift+NumMeta+                            UDG1F405.1455   
     &              (NumObVariables*NumItem*(Lev-1))+                      UDG1F405.1456   
     &              (Variable-1)*NumItem+3),                               UDG1F405.1457   
     &               IIII=PBEGIN,PEND)                                     UDG1F405.1458   
              DO IPGE=1,8                                                  UDG1F405.1459   
                PGE(IPGE)=D1((PBEGIN+IPGE-2)*Shift+NumMeta+                UDG1F405.1460   
     &            (NumObVariables*NumItem*(Lev-1))+                        UDG1F405.1461   
     &            (Variable-1)*NumItem+3)                                  UDG1F405.1462   
                IF (PGE(IPGE) .NE. RMDI) THEN                              UDG1F405.1463   
                  PGE2(IPGE)=INT(PGE(IPGE))                                UDG1F405.1464   
                  PGE1(IPGE)=PGE(IPGE)-PGE2(IPGE)                          UDG1F405.1465   
                  PGE2(IPGE)=PGE2(IPGE)/10000.0                            UDG1F405.1466   
                ELSE                                                       UDG1F405.1467   
                  PGE1(IPGE)=RMDI                                          UDG1F405.1468   
                  PGE2(IPGE)=RMDI                                          UDG1F405.1469   
                END IF                                                     UDG1F405.1470   
              END DO                                                       UDG1F405.1471   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1472   
     &              (PGE1(IIII),IIII=1,8)                                  UDG1F405.1473   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1474   
     &              (PGE2(IIII),IIII=1,8)                                  UDG1F405.1475   
            END DO                                                         UDG1F405.1476   
           END DO                                                          UDG1F405.1477   
          END DO                                                           UDG1F405.1478   
          OBS_LEFT=NumObs_print - NBLK*8                                   UDG1F405.1479   
          IF (OBS_LEFT .NE. 0 .AND. NumObs .NE. 0) THEN                    UDG1F405.1480   
           WRITE (6,*)                                                     UDG1F405.1481   
           WRITE (6,'(A12,8I12)')     'Observation:',                      UDG1F405.1482   
     &           (IIII,IIII=PEND+1,PEND+OBS_LEFT)                          UDG1F405.1483   
           WRITE (6,'(A12,8F12.2)') 'Latitude  : ',                        UDG1F405.1484   
     &           (D1((IIII-1)*Shift+1),IIII=PEND+1,PEND+OBS_LEFT)          UDG1F405.1485   
           WRITE (6,'(A12,8F12.2)') 'Longitude : ',                        UDG1F405.1486   
     &           (D1((IIII-1)*Shift+2),IIII=PEND+1,PEND+OBS_LEFT)          UDG1F405.1487   
           WRITE (6,'(A12,8F12.2)') 'Time      : ',                        UDG1F405.1488   
     &           (D1((IIII-1)*Shift+3),IIII=PEND+1,PEND+OBS_LEFT)          UDG1F405.1489   
           WRITE (6,'(A12,8F12.2)') 'MOT       : ',                        UDG1F405.1490   
     &           (D1((IIII-1)*Shift+4),IIII=PEND+1,PEND+OBS_LEFT)          UDG1F405.1491   
           DO Variable = 1, NumObVariables                                 UDG1F405.1492   
            WRITE (6,*)                                                    UDG1F405.1493   
            DO Lev = 1, NumLevs                                            UDG1F405.1494   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1495   
     &              (D1((IIII-1)*Shift+NumMeta+                            UDG1F405.1496   
     &              (NumObVariables*NumItem*(Lev-1))+                      UDG1F405.1497   
     &              (Variable-1)*NumItem+1),                               UDG1F405.1498   
     &               IIII=PEND+1,PEND+OBS_LEFT)                            UDG1F405.1499   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1500   
     &              (D1((IIII-1)*Shift+NumMeta+                            UDG1F405.1501   
     &              (NumObVariables*NumItem*(Lev-1))+                      UDG1F405.1502   
     &              (Variable-1)*NumItem+2),                               UDG1F405.1503   
     &               IIII=PEND+1,PEND+OBS_LEFT)                            UDG1F405.1504   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1505   
     &              (D1((IIII-1)*Shift+NumMeta+                            UDG1F405.1506   
     &              (NumObVariables*NumItem*(Lev-1))+                      UDG1F405.1507   
     &              (Variable-1)*NumItem+3),                               UDG1F405.1508   
     &               IIII=PEND+1,PEND+OBS_LEFT)                            UDG1F405.1509   
              DO IPGE=1,OBS_LEFT                                           UDG1F405.1510   
                PGE(IPGE)=D1((IPGE+PEND-2)*Shift+NumMeta+                  UDG1F405.1511   
     &                   (NumObVariables*NumItem*(Lev-1))+                 UDG1F405.1512   
     &                   (Variable-1)*NumItem+3)                           UDG1F405.1513   
                IF (PGE(IPGE) .NE. RMDI) THEN                              UDG1F405.1514   
                  PGE2(IPGE)=INT(PGE(IPGE))                                UDG1F405.1515   
                  PGE1(IPGE)=PGE(IPGE)-PGE2(IPGE)                          UDG1F405.1516   
                  PGE2(IPGE)=PGE2(IPGE)/10000.0                            UDG1F405.1517   
                ELSE                                                       UDG1F405.1518   
                  PGE1(IPGE)=RMDI                                          UDG1F405.1519   
                  PGE2(IPGE)=RMDI                                          UDG1F405.1520   
                END IF                                                     UDG1F405.1521   
              END DO                                                       UDG1F405.1522   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1523   
     &              (PGE1(IIII),IIII=PEND+1,PEND+OBS_LEFT)                 UDG1F405.1524   
              WRITE (6,'(A6,I3,3X,8F12.3)') ' Level',Lev,                  UDG1F405.1525   
     &              (PGE2(IIII),IIII=PEND+1,PEND+OBS_LEFT)                 UDG1F405.1526   
            END DO                                                         UDG1F405.1527   
           END DO                                                          UDG1F405.1528   
          END IF                                                           UDG1F405.1529   
        END IF                                                             UDG1F405.1530   
       ENDIF                                                               DR221193.161    
       lookup(lblrec, i)=lblrec_1                                          UBC4F402.16     
                                                                           PRINTDU1.399    
      ENDDO                                                                PRINTDU1.400    
                                                                           DR221193.162    
      ENDIF                                                                DR221193.163    
*ELSEIF DEF,CAMDUMP                                                        GEX1F403.102    
                                                                           GEX1F403.103    
C     Print out LOOKUP Headers                                             GEX1F403.104    
      IF(LEN2_LOOKUP.GT.0)THEN                                             GEX1F403.105    
        DO K=1,LEN2_LOOKUP                                                 GEX1F403.106    
          IF (LOOKUP(1,K).NE.-99) THEN                                     GEX1F403.107    
            OK_COUNT=OK_COUNT+1                                            GEX1F403.108    
            CALL PRINTCAM(LOOKUP(1,K),LOOKUP(1,K),LEN1_LOOKUP,             GEX1F403.109    
     &        LEN1_LOOKUP,K,NFTOUT,ICODE,CMESSAGE)                         GEX1F403.110    
            IF(ICODE.NE.0)THEN                                             GEX1F403.111    
              WRITE(6,*)CMESSAGE,ICODE                                     GEX1F403.112    
              CALL ABORT                                                   GEX1F403.113    
            ENDIF                                                          GEX1F403.114    
          ENDIF                                                            GEX1F403.115    
        ENDDO                                                              GEX1F403.116    
      ENDIF                                                                GEX1F403.117    
                                                                           GEX1F403.118    
      IF (OK_COUNT.EQ.0) THEN                                              GEX1F403.119    
        WRITE(6,*)'FATAL ERROR: All headers contain -99'                   GEX1F403.120    
      ENDIF                                                                GEX1F403.121    
*ENDIF                                                                     GEX1F403.122    
                                                                           PRINTDU1.401    
      RETURN                                                               PRINTDU1.402    
      END                                                                  PRINTDU1.403    
CLL  SUBROUTINE PRINT_REAL--------------------------------------------     PRINTDU1.404    
CLL                                                                        PRINTDU1.405    
CLL Purpose: Prints out a real array to unit 7, formatting as four         PRINTDU1.406    
CLL          numbers across a page.                                        PRINTDU1.407    
CLL                                                                        PRINTDU1.408    
CLL  Written by A. Dickinson 20/03/92                                      PRINTDU1.409    
CLL                                                                        PRINTDU1.410    
CLL  Model            Modification history from model version 3.0:         PRINTDU1.411    
CLL version  Date                                                          PRINTDU1.412    
CLL                                                                        PRINTDU1.413    
CLL  Documentation: None                                                   PRINTDU1.414    
CLL                                                                        PRINTDU1.415    
CLL  -----------------------------------------------------------------     PRINTDU1.416    
C*L  Arguments:-------------------------------------------------------     PRINTDU1.417    

      SUBROUTINE PRINT_REAL(A,N_POINTS,N_FIELD,K,NFTOUT)                    7GEX1F403.123    
                                                                           PRINTDU1.419    
      IMPLICIT NONE                                                        PRINTDU1.420    
                                                                           PRINTDU1.421    
      INTEGER                                                              PRINTDU1.422    
     & N_POINTS       !IN No of values to be printed                       PRINTDU1.423    
     &,N_FIELD        !IN 1st dimension of array A                         PRINTDU1.424    
     &,K              !IN Element in 2nd dimension of array A              PRINTDU1.425    
     &,NFTOUT         !IN Output file unit number                          GEX1F403.124    
                                                                           PRINTDU1.426    
      REAL                                                                 PRINTDU1.427    
     & A(N_FIELD)     !IN Array to be printed out                          PRINTDU1.428    
                                                                           PRINTDU1.429    
C*----------------------------------------------------------------------   PRINTDU1.430    
C*L  Local variables:---------------------------------------------------   PRINTDU1.431    
      INTEGER                                                              PRINTDU1.432    
     & I,J            ! Loop indices                                       PRINTDU1.433    
                                                                           PRINTDU1.434    
C*----------------------------------------------------------------------   PRINTDU1.435    
                                                                           PRINTDU1.436    
CL 1. Print out data modulo 4                                              PRINTDU1.437    
        DO I=1,N_POINTS-3,4                                                PRINTDU1.438    
          WRITE(NFTOUT,'(1x,4(I5,'':'',G12.6))')                           GEX1F403.125    
     &    I,A(I+(K-1)*N_FIELD),                                            PRINTDU1.440    
     &    I+1,A(I+1+(K-1)*N_FIELD),                                        PRINTDU1.441    
     &    I+2,A(I+2+(K-1)*N_FIELD),                                        PRINTDU1.442    
     &    I+3,A(I+3+(K-1)*N_FIELD)                                         PRINTDU1.443    
        ENDDO                                                              PRINTDU1.444    
                                                                           PRINTDU1.445    
CL 2. Print out remainder of data                                          PRINTDU1.446    
        IF(I.LE.N_POINTS)THEN                                              PRINTDU1.447    
          DO J=I,N_POINTS                                                  PRINTDU1.448    
            WRITE(NFTOUT,'(T2,I5,'':'',G12.6,$)')                          GEX1F403.126    
     &      J,A(J+(K-1)*N_FIELD)                                           PRINTDU1.450    
          ENDDO                                                            PRINTDU1.451    
          WRITE(NFTOUT,'(/)')                                              GEX1F403.127    
        ENDIF                                                              PRINTDU1.453    
                                                                           PRINTDU1.454    
        RETURN                                                             PRINTDU1.455    
        END                                                                PRINTDU1.456    
CLL  SUBROUTINE PRINT_INTE--------------------------------------------     PRINTDU1.457    
CLL                                                                        PRINTDU1.458    
CLL Purpose: Prints out a integer array to unit 7, formatting as four      PRINTDU1.459    
CLL          numbers across a page.                                        PRINTDU1.460    
CLL                                                                        PRINTDU1.461    
CLL  Written by A. Dickinson                                               PRINTDU1.462    
CLL                                                                        PRINTDU1.463    
CLL  Model            Modification history from model version 3.0:         PRINTDU1.464    
CLL version  Date                                                          PRINTDU1.465    
CLL                                                                        PRINTDU1.466    
CLL  Documentation: None                                                   PRINTDU1.467    
CLL                                                                        PRINTDU1.468    
CLL  -----------------------------------------------------------------     PRINTDU1.469    
C*L  Arguments:-------------------------------------------------------     PRINTDU1.470    

      SUBROUTINE PRINT_INTE(A,N_POINTS,N_FIELD,K,NFTOUT)                    7GEX1F403.128    
                                                                           PRINTDU1.472    
      IMPLICIT NONE                                                        PRINTDU1.473    
                                                                           PRINTDU1.474    
      INTEGER                                                              PRINTDU1.475    
     & N_POINTS       !IN No of values to be printed                       PRINTDU1.476    
     &,N_FIELD        !IN 1st dimension of array A                         PRINTDU1.477    
     &,K              !IN Element in 2nd dimension of array A              PRINTDU1.478    
     &,NFTOUT         !IN Output file unit number                          GEX1F403.129    
                                                                           PRINTDU1.479    
      INTEGER                                                              PRINTDU1.480    
     & A(N_FIELD)     !IN Array to be printed out                          PRINTDU1.481    
                                                                           PRINTDU1.482    
C*----------------------------------------------------------------------   PRINTDU1.483    
C*L  Local variables:---------------------------------------------------   PRINTDU1.484    
      INTEGER                                                              PRINTDU1.485    
     & I,J            ! Loop indices                                       PRINTDU1.486    
                                                                           PRINTDU1.487    
C*----------------------------------------------------------------------   PRINTDU1.488    
                                                                           PRINTDU1.489    
CL 1. Print out data modulo 4                                              PRINTDU1.490    
        DO I=1,N_POINTS-3,4                                                PRINTDU1.491    
          WRITE(NFTOUT,'(1x,4(I5,'':'',I12))')                             GEX1F403.130    
     &    I,A(I+(K-1)*N_FIELD),                                            PRINTDU1.493    
     &    I+1,A(I+1+(K-1)*N_FIELD),                                        PRINTDU1.494    
     &    I+2,A(I+2+(K-1)*N_FIELD),                                        PRINTDU1.495    
     &    I+3,A(I+3+(K-1)*N_FIELD)                                         PRINTDU1.496    
        ENDDO                                                              PRINTDU1.497    
                                                                           PRINTDU1.498    
CL 2. Print out remainder of data                                          PRINTDU1.499    
        IF(I.LE.N_POINTS)THEN                                              PRINTDU1.500    
          DO J=I,N_POINTS                                                  PRINTDU1.501    
            WRITE(NFTOUT,'(T2,I5,'':'',I12,$)')                            GEX1F403.131    
     &      J,A(J+(K-1)*N_FIELD)                                           PRINTDU1.503    
          ENDDO                                                            PRINTDU1.504    
          WRITE(NFTOUT,'(/)')                                              GEX1F403.132    
        ENDIF                                                              PRINTDU1.506    
                                                                           PRINTDU1.507    
        RETURN                                                             PRINTDU1.508    
        END                                                                PRINTDU1.509    
*ENDIF                                                                     PRINTDU1.510