CALL SEQUENCE... select2 IN S1 [S2] INPUT OUTPUT \ [ -t1 VAL1 -t2 VAL2 -t3 VAL3 \ -lv1 VAL4 -lv2 VAL5 -name "VAL6" ["VAL7"] \ -kind VAL8 ["VAL9"] ["VAL10"] ["VAL11"] -na ] DESCRIPTION... select2 - SELECTS UP TO TWO REQUESTED VARIABLES FROM A FILE AUTHORS - F.Zwiers AND B.Dugas, JAN 14/85. 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 - SELECT ALL VARIABLES (OR 1 OR 2 SPECIFIED VARIABLES) BETWEEN TIMESTEPS T1 AND T2 MAKING SURE THAT FOR EACH VARIABLE, *** RECORDS ARE IN THE CORRECT TIME ORDER *** NOTE - SELECT2 SUPPORTS SEVERAL TECHNIQUES FOR MEASURING TIME AND SHOULD BE CONSIDERED WHEN DEALING WITH DATES RATHER THAN TIMESTEPS. INPUT FILE... IN = FILE CONTAINING GRID OR SPECTRAL FIELDS TO BE SELECTED. OUTPUT FILES... S1 = FIRST SELECTED VARIABLE (OR ALL VARIABLES) S2 = SECOND SELECTED VARIABLE INPUT PARAMETERS... NT1,NT2 = TIMESTEP OR DATE RANGE (INCLUSIVE). (t1,t2) 1) IF (NT1=-1) OR (NT1,NT2 BLANK) ==> SELECT ALL INTERVALS (AND THEN ANT1,NT2 ARE IGNORED). THE TIME INTERVAL IS THEN THAT BETWEEN THE FIRST TWO VALID TIMESTEPS. 2) IF ONLY ONE OR THE OTHER OF NT1 AND NT2 IS SPECIFIED POSITIVE, THIS COMPLETELY DETERMINE THE DESIRED RANGE. 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, NOT ABORTING ON OUT OF SEQUENCE TIMESTEPS. 5) THE UNITS USED ARE SUPPOSED TO BE CONSISTENT WITH THOSE USED IN NT1 AND NT2 (AS DEFINED BY DTM) AND THE PROGRAM DOES NOT ATTEMPT TO CHECK THIS. 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 LEVEL TYPE 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 'MOMENTUM' , GEM4 momentum levels 'THERMODYN' , GEM4 thermodynamic levels KIND(3) = OUTPUT FILE MODE. KNOWN VALUES ARE "APPEND", "OVER". THE DEFAULT IS TO OVERWRITE ALL OUTPUT FILES. KIND(4) = DATA TYPE (AS IN TYPVAR FOR CMC/RPN FILES) TO LOOK FOR. THE DEFAULT IS ' ', I.E. NONE. 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. DTM = FLAG TO INDICATE METHOD OF TIME MEASUREMENT. (kind(1)) = 0 ==> IBUF(2),T1,T2 AND T3 IN TIMESTEPS UNITS. = 1 ==> IBUF(2),T1 AND T2 ARE IN THE FORMAT YYYYMMDDHH AND T3 IS IN HOURS. = 2 ==> IBUF(2),T1 AND T2 ARE IN THE FORMAT YYMMDDHHMM **** (YYYYMMDDHHMM in command-line mode) **** AND T3 IS IN MINUTES AND NO LEAP YEAR. = 3 ==> IBUF(2),T1 AND T2 ARE IN THE FORMAT YYYYMMDDHH AND T3 IS IN HOURS. BUT NOW, LEAP YEARS ARE ACCOUNTED FOR. NA = 0(1) STOP(CONTINUE) ON OUT OF SEQUENCE TIMESTEPS. NOTES: 1) DTM = 0,1 OR 2 DO NOT TAKE LEAP YEARS INTO ACCOUNT AND ARE INTENDED FOR USE WITH MODEL OUTPUT. 2) ONLY ONE VERTICAL LEVEL TYPE IS SUPPORTED WHEN A VERTICAL LEVEL INTERVAL IS SPECIFIED. EITHER OF FATAL ERRORS 7 OR 8 ARE OTHERWISE DETECTED (TIMESTEP REPITITION) AS TWO LEVEL TYPES WILL ALWAYS GENERATE TWO SETS OF VARIABLES. READ( 5,5010 ) NT1,NT2,ANT1,ANT2, LV1,LV2, + NAME1,NAME2,DTM,NA 5010 FORMAT(10X,5X,2I10,2A5,2I5,5X,2(1X,A4),2I5) TWO EXAMPLE OF INPUT CARD... SELECT. STEP 79020024 86060708 -10012 500 550 NAME GDEV SELECT2. STEP 0 999999 72 LEVS 500 500 NAME PHI 0123456789012345678901234567890123456789012345678901234567890 1 2 3 4 5 6 7 THE SECOND LINE WILL CREATE A TIME SERIES OF 500MB GPH FIELDS SAMPLED EVERY 72 TIME STEP. THE PROGRAM WILL ABORT IF OBSERVATIONS ARE NOT AVAILABLE AT TIME STEPS WHICH ARE MULTIPLES OF 72 OR IF ANY OBSERVATIONS ARE MISSING OR OUT OF TIME SEQUENCE. EXIT CONDITIONS... 0 NO PROBLEMS FATAL CONDITIONS... 1 DTM HASH ILLEGAL VALUE 2 T1 NOT IN RECOGNIZED FORMAT 3 T2 NOT IN RECOGNIZED FORMAT 4 ERROR READING FIRST SET ON FILE IN 5 NO RECORDS SAVED, OUTPUT EMPTY 6 FOUND TIME NOT IN RECOGNIZED FORMAT ON FILE IN 7 TIMESTEP OUT OF SEQUENCE FOR FIRST VARIABLE 8 TIMESTEP OUT OF SEQUENCE FOR SECOND VARIABLE 9 ERROR ABORT READING INPUT PARAMETERS 10 PREMATURE EOF ON FILE IN 12 MORE THAN ONE KIND OF INPUT LEVEL REQUESTED 13 MISMATCH BETWEEN NUMBER OF VARIABLES AND FILE NAMES 14 FILE IN IS EMPTY (NEW) 15 TocToc RECORD (!!) NOT FOUND ON FILE IN NON-FATAL CONDITIONS... 101 FOUND DISCONTINUOUS TIME SEQUENCE