 
      CALL SEQUENCE...
       extrac  XIN XOUT INPUT OUTPUT [-dlon1 VAL0 -dlon2 VAL1 \ 
                                      -dlat1 VAL2 -dlat2 VAL3 \ 
                                      -kind  VAL4 [VAL5] -nintyp VAL6 \ 
                                      -lv1 VAL7 -lv2 VAL8 ]
 
 
      DESCRIPTION...
       extrac  - ZEROES OUT ALL OF A GRID EXCEPT WINDOW(S) DEFINED IN INPUT
 
 
      AUTHOR  - B.Dugas, 09 SEPTEMBRE 1985.
      LAST REVISION: $Header: /home/cvs/RMNLIB/utils/rdiag/lspgm/extrac.ptn,v 4.23 2014/09/25 20:20:47 dugas Exp $
 
 
      PURPOSE - EXTRACTS CERTAIN PARTS OF AN ARRAY IN XIN, COMPLEX OR REAL,
                AND THEN PUTS THE RESULT IN  XOUT = MASK * XIN, WHERE
 
                             !  1 IF (I1 <= I <= I2) AND (J1 <=J <= J2)
                 MASK(I,J) =<
                             !  0 EVERYWHERE ELSE.
                         -
                PLEASE REFER TO THE INPUT PARAMETERS SECTION BELOW.
 
      NOTES   - 1) IF  KIND IS  SPEC, FOUR OR CMPL THEN I1 AND I2 DENOTE 
                   THE BEGINNING AND END OF THE RETAINED COMPLEX VECTOR.
                2) IF KIND IS GRID (GLOBAL OR HEMISPHERIC) THEN THE DATA
                   IS ASSUMED TO BE ORDERED FROM SOUTH TO NORTH. THIS IS
                   CHECKED AND ACCOUNTED FOR IN RPN/CMC STANDARD FILES.
                3) ALSO, AT LEAST ONE  AND UP TO  99 SETS OF I1, I2, J1 
                   ANS J2 ARE READ IN FROM INPUT.
                4) INPUT CARDS BETWEEN 20 AND 99 MAY GET IGNORED,(DEPEN-
                   DING ON THE TYPE AND  RANGE  OF  VALUES  SPECIFIED).
                   INPUT IS ALWAYS READ UNTIL *EOF* IS REACHED.
                5) BLANK INPUT LINES ARE IGNORED.
 
 
      INPUT FILE...
       XIN  = ANY CCC-STANDARD FILE
 
      OUTPUT FILE...
       XOUT = MASKED VERSION OF XIN AS DESCRIBED ABOVE.
 
 
      INPUT PARAMETERS...
 
       I1      = VECTOR CONTAINING THE FIRST COORDINATES (OR THE LONGITUDINAL
      (dlon1)    DEGREE, IF IFLG.NE.0) OF  THE LOWER LEFT-HAND CORNER  OF THE
                 BOXES WE WISH TO RETAIN FROM THE ORIGINAL DATA.
       I2      = VECTOR CONTAINING THE FIRST COORDINATES (OR THE LONGITUDINAL
      (dlon2)    DEGREE, IF IFLG.NE.0) OF THE HIGHER RIGHT-HAND CORNER OF THE
                 BOXES WE WISH TO RETAIN FROM THE ORIGINAL DATA.
       J1      = VECTOR CONTAINING THE SECOND COORDINATES (OR THE LATITUDINAL
      (dlat1)    DEGREE, IF IFLG.NE.0) OF  THE LOWER LEFT-HAND CORNER  OF THE
                 BOXES WE WISH TO RETAIN FROM THE ORIGINAL DATA.
       J2      = VECTOR CONTAINING THE SECOND COORDINATES (OR THE LATITUDINAL
      (dlat2)    DEGREE, IF IFLG.NE.0) OF THE HIGHER RIGHT-HAND CORNER OF THE
                 BOXES WE WISH TO RETAIN FROM THE ORIGINAL DATA.
                (J2 >= J1).
       IFLG    = USED TO IDENTIFY THE VALUES SUPPLIED IN I1, I2, J1 AND J2 AS
      (kind(1))  INDICES (IFLG.EQ.0) OR AS DEGREES (IFLG.NE.0)
       NTYP    = USED TO DETERMINE THE TYPE OF GRID (IGNORED  IF  IFLG.EQ.0
      (nintyp)   ZERO DEFAULTS TO A GAUSSIAN GRID  AND  ANYTHING  ELSE  TO
                 LAT-LONG GRID. ALLWAYS IGNORED WITH RPN/CMC STANDARD FILES.
       LV1     = UPPER VERTICAL LEVEL RETAINED.
       LV2     = LOWER VERTICAL LEVEL RETAINED.
                 IN COMMAND-LINE MODE, LV1 AND LV2 MAY ALSO BE THE REAL
                 DECODED LEVEL VALUES. IN THAT CASE, THE KIND(2) PARAMETER
                 *** ABSOLUTELY HAS TO BE SPECIFIED ***.
       KIND(2) = VERTICAL LEVEL TYPE. ONLY USE THIS WITH IN RPN STD FILES
                   AND WHEN LV1 AND LV2 CONTAIN DECODED VALUES. FURTHERMORE,
                   THIS PARAMETRE CAN ONLY BE SPECIFIED IN COMMAND-LINE MODE.
                   THE CURRENTLY SUPPORTED VALUES ARE:
                   'HAUTEUR'   , heights (m) with respect to sea level
                   'SIGMA'     , classical terrain following (0.0 -> 1.0)
                   'ETA'       , first version of the GEM ETA coordinate
                   'PRESSION'  , pressure (mb)
                   'ARBITRAIRE', arbitrary level (no units apply)
                   'HAUTEURS'  , heights (M) with respect to the surface
                   'HYBRIDE'   , hybrid GEM coordinate
                   'THETA'     , potential temperature coordinate
                   'GALCHEN'   , GalChen generalized coordinate
 
 
       NOTES 1) IFLG MUST BE ZERO FOR ALL THE FIELDS WHOSE KIND IS
                DIFFERENT FROM GRID (I.E. I1, I2, J1 AND J2 MAY HAVE
                DEGREE VALUES ONLY FOR GRID FIELDS, OTHERWISE THEY
                MUST CONTAIN INDICES VALUES)
                IF IFLG.NE.0 THEN
                   I1 , I2 VALUES (-359,360)
                   J1 , J2 VALUES (- 90, 90) WITH J2 >= J1
             2) IF THE COMMAND LINE ARGUMENTS ARE USED, ONLY ONE SET OF
                BOX COORDINATES CAN BE PASSED TO THE PROGRAM, BUT THESE
                CAN THEN BE IN FLOATING POINT FORMAT.
             3) LV1,LV2,IFLG AND NTYP ARE ONLY READ ONCE, ON THE FIRST CARD
             4) IF BOTH LV1 AND LV2 ARE ZERO, THEY DEFAULT TO THE FIRST
                AND LAST LEVELS, RESPECTIVELY. IF ONLY ONE OF THEM IS ZERO,
                IT IS SET TO THE VALUE OF THE OTHER.
             5) WHEN IFLG=0 AND I1 AND I2 ARE ZERO, ALL LONGITUDES ARE KEPT.
                THE SAME GOES FOR THE LATITUDES IF J1=J2=0..
 
       READ( 5,5010 ) I1(N+1),I2(N+1),J1(N+1),J2(N+1),IFLG,NTYP,LV1,LV2
 5010  FORMAT(10X,6I5)
 
 
      EXAMPLE OF INPUT CARD(S)...
 
  EXTRAC     11   41    1  101
            -10   40  -90   10    1    1
            271  361   31  161    0
            270  360  -60   70    1    1
              0   45   80   89    1    1
              1   46  171  180
 
         0123456789012345678901234567890123456789012345678901234567890
         1         2         3         4         5         6         7
 
 
      EXIT CONDITIONS...      
        0 NO PROBLEMS
        1 ILLEGAL REQUEST FOR DEGREE-MODE INPUT DIRECTIVE
        2 INCONSISTENT USE OF NTYP
        3 NO VALID INPUT DIRECTIVES FOUND
        4 MORE THAN ONE SIZE IN XIN
        5 PREMATURE EOF IN XIN
        6 INCONSISTENT VALUES IN INPUT PARAMETERS
        7 MORE THAN ONE KIND OF INPUT LEVEL REQUESTED
        8 PROBLEM WITH MEMORY ALLOCATIONS
