CALL SEQUENCE... select IN S1 [S2 [S3 [S4 [ ... [S10] ... ]]]] INPUT OUTPUT \ [ -t1 VAL01 -t2 VAL02 -t3 VAL03 \ -lv1 VAL04 -lv2 VAL05 \ [ -kind "VAL06" "VAL07" "VAL08"] \ -name "VAL09" ["VAL10" ["VAL11" ["VAL12" [ ... ["VAL18"] ... ]]]] ] DESCRIPTION... select - SELECTS UP TO TEN REQUESTED VARIABLES FROM A FILE AUTHOR - J.D.Henderson AND R.Laprise, MAY 13/83. LAST REVISION: $Header: Code-beta-01-de-r.diag_6.3.1-et-cdf2rpn_2.2.1 @ Tue, 15 Nov 2016 12:28:00 -0500 (Bernard Dugas) $ PURPOSE - SELECTS EITHER ALL VARIABLES, OR ONE TO TEN NAMED VARIABLES, AT EQUAL TIMESTEP INTERVALS BETWEEN TWO SPECIFIED TIMESTEPS AND BETWEEN TWO SPECIFIED LEVELS FROM FILE IN. IF ALL VARIABLES ARE SELECTED THEY ARE PUT ON FILE S1. OTHERWISE 1 TO 10 VARIABLES ARE PUT ON FILES S1 TO S10. INPUT FILE... IN = FILE CONTAINING GRID OR SPECTRAL FIELDS TO BE SELECTED. OUTPUT FILES... S1 = FIRST SELECTED VARIABLE (OR ALL VARIABLES) S2 = SECOND SELECTED OPTIONAL VARIABLE S3 = THIRD SELECTED OPTIONAL VARIABLE S4 = FOURTH SELECTED OPTIONAL VARIABLE S4 = FIFTH SELECTED OPTIONAL VARIABLE S4 = SIXTH SELECTED OPTIONAL VARIABLE S4 = SEVENTH SELECTED OPTIONAL VARIABLE S4 = EIGHTH SELECTED OPTIONAL VARIABLE S4 = NINTH SELECTED OPTIONAL VARIABLE S10 = TENTH SELECTED OPTIONAL VARIABLE INPUT PARAMETERS... NT1,NT2 = TIMESTEP RANGE (INCLUSIVE). (t1,t2) 1) IF (NT1=-1) OR (NT1,NT2 BLANK) ==> SELECT ALL INTERVALS (AND THEN ANT1,NT2 ARE IGNORED). 2) IF ONLY ONE OR THE OTHER OF NT1 AND NT2 IS SPECIFIED POSITIVE, THIS COMPLETELY DETERMINE THE DESIRED RANGE. 3) THE DATE FORMAT USED IN NT1 AND NT2 CAN BE SPECIFIED VIA THE DATE_FORMAT ENVIRONMENT VARIABLE. THE DEFAULT VALUE FOR THIS IS YYYYMMDDHH. NOTE THAT IT CAN EXTENDED TO YYYYMMDDHHMMSS. ANT1,ANT2 = USED TO COMPUTE THE TIMESTEP INCREMENT "INT" (OR T3). (t3) 1) ANT2 IS USED *ONLY* IF THE NUMBER VALUE OF ANT1 IS NOT EQUAL TO ZERO AND THEN, ONLY IF, WHEN IT IS CONVERTED, IT RESULTS IN A NUMBER CONSISTING OF FULL 5 DIGITS FROM (0,...,9; NO ' ' OR '-' ALLOWED IN ANT2). THIS HAS SIMILAR EFFECT TO READING INT FROM ANT1 AND ANT2 FIELDS WITH A I10 FORMAT. 2) INT IS COMPUTED FROM ONLY ANT1 IF THE CONVERTED NUMBER VALUE OF ANT1 IS EQUAL TO ZERO (ANT2 IGNORED) OR ANT2 FIELD CONTAINS OTHER THAN (0,...,9). THIS HAS SIMILAR EFFECT TO READING INT FROM ANT1 FIELD WITH A I5 FORMAT. 3) THE RESULING VALUE OF INT IS RESET TO 1 IF IT IS ZERO. 4) DIFFERENT ACTIONS ARE TAKEN ACCORDING TO THE SIGN OF INT INT >0, DATA IS SELECTED EVERY INT STEPS FROM STEP NT1 <0, DATA IS SELECTED FROM THE FIRST TIMESTEP OF ANY OF THE SELECTED NAMES IN THE INTERVAL NT1 TO NT2 BY INCREMENT OF IABS(INT), TILL NT2 IS REACHED OR EXCEEDED. 5) IN COMMAND-LINE MODE, THE INT INCREMENT IS READ DIRECTLY VIA THE "-t3" ARGUMENT AND ANT2 IS NEVER USED. NEGATIVE INCREMENT VALUES ARE STILL SUPPORTED. LV1,LV2 = LEVEL RANGE (INCLUSIVE) USUALLY AS CODED INTEGERS. (lv1,lv2) 1) IF (LV1=-1) OR (LV1,LV2 BLANK) ==> SELECT ALL LEVELS 2) IF ONLY ONE OR THE OTHER OF LV1 AND LV2 IS SPECIFIED POSITIVE (AFTER DECODING BY LVACODE), THIS COMPLETELY DETERMINES THE DESIRED RANGE. 3) IF BOTH ARE SPECIFIED, LV2 >= LV1. IN COMMAND-LINE MODE, LV1 AND LV2 MAY ALSO BE THE REAL DECODED LEVEL VALUES. IN THAT CASE, THE KIND PARAMETER *** *** ABSOLUTELY HAS TO BE SPECIFIED *** ***. KIND(1) = VERTICAL LEVEL TYPE. IT CAN ONLY BE USED WITH CMC/RPN STD FILES AND THEN LV1 AND LV2 ARE ASSUMED TO 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 'MOMENTUM' , GEM4 momentum levels 'THERMODYN' , GEM4 thermodynamic levels KIND(2) = OUTPUT FILE MODE. KNOWN VALUES ARE "APPEND", "OVER". THE DEFAULT IS TO OVERWRITE ALL OUTPUT FILES. KIND(3) = DATA TYPE (AS IN TYPVAR FOR CMC/RPN FILES) TO LOOK FOR. THE DEFAULT IS ' ', I.E. ALL TYPES. NAME1 = FIRST VARIABLE TO BE SELECTED FOR FILE S1. (name) IF (NAME1 IS 'ALL' OR NAME1 IS BLANK) THEN ALL VARIABLES ARE SELECTED. NAME2 = SECOND VARIABLE TO BE SELECTED FOR FILE S2. NAME3 = THIRD VARIABLE TO BE SELECTED FOR FILE S3. NAME4 = FOURTH VARIABLE TO BE SELECTED FOR FILE S4. ** IT ONLY POSSIBLE TO SELECT MORE THAN FOUR VARIABLE NAMES ** ** WHEN USING COMMAND-LINE PARAMETRE MODE. ONLY FOUR VARIABLE ** ** NAMES ARE AVAILABLE IN STDIN-INPUT MODE. ** NAME5 = FIFTH VARIABLE TO BE SELECTED FOR FILE S5. NAME6 = SIXTH VARIABLE TO BE SELECTED FOR FILE S6. NAME7 = SEVENTH VARIABLE TO BE SELECTED FOR FILE S7. NAME8 = EIGHTH VARIABLE TO BE SELECTED FOR FILE S8. NAME9 = NINTH VARIABLE TO BE SELECTED FOR FILE S9. NAME10 = TENTH VARIABLE TO BE SELECTED FOR FILE S10. READ( 5,5010 ) NT1,NT2,ANT1,ANT2, LV1,LV2, + NAME1,NAME2,NAME3,NAME4 5010 FORMAT(10X,5X,2I10,2A5,2I5,5X,4(1X,A4)) EXAMPLE OF INPUT CARD... SELECT. STEP 79020024 86060708 -10012 500 550 NAME GDEV 0123456789012345678901234567890123456789012345678901234567890 1 2 3 4 5 6 7 NOTES: 1) Step numbers in file IN are assumed to be increasing. 2) If the -t1 and -t2 argument values are actually calendar dates, for example in a yyyymmddhh format, which is the usual case for CMC/RPN files, the -t3 argument value may give surprising results if different from 1. Consider a value of 3 hours, starting at 2010010100. SELECT will then only consider the following sequence of dates: 2010010100, 2010010103, ... , 2010010199, 2010010202, ... i.e. simply adding 3 units to the number given for argument -t1. Calendar date 2010010200 will not be considered valid. In the previous case, using module SELECT2 with argument -kind=1 would be a valid alternative. EXIT CONDITIONS... 0 NO PROBLEMS 1 INCONSISTENT VALUES IN INPUT PARAMETERS 2 NOT OK IN FILEV/GETSET2 AT THE FIRST SET 3 NO RECORDS SAVED, OUTPUT EMPTY 5 MORE THAN ONE KIND OF INPUT LEVEL REQUESTED 6 MISMATCH BETWEEN NUMBER OF VARIABLES AND FILE NAMES 7 FILE IN IS EMPTY (NEW) 8 VARIABLE NAME REQUESTED MORE THAN ONCE 9 TocToc RECORD (!!) NOT FOUND ON FILE IN