SUBROUTINE RADPREP(KFILDI,KFILDO, 1 ND1,ND2,ND3,ND2X3,ND4,ND5, 2 ND7,ND8, 3 ISCALD,PLAIN2,IPLAIN,L3264B,L3264W, 4 IPACK,DATA,SDATA,IWORK,DATA_RAD,OUT_DATA, 5 RADMSK,FLT,FLTPT,STALAT,STALON, 6 IS0,IS1,IS2,IS4, 7 IDATE,NWORK) C$$$ MAIN PROGRAM DOCUMENTATION BLOCK *** C C MAIN PROGRAM: RADPREP C PRGMMR: WIEDENFELD ORG: OST21 DATE: 2005-08-15 C C ABSTRACT: PROGRAM RADPREP GENERATES THE OPERATIONAL RADAR C LAMP DATA SET. C C PROGRAM HISTORY LOG: C MAY 2005 WEISS MOS/LAMP2000 C AUGUST 2005 CHARBA MODIFIED SUCH THAT THE IP( ) ARRAY IS C PASSED TO SUBROUTINE RCMQC. THE ARRAY C ELEMENTS IP(20), IP(21), AND IP(22) ARE C USED AS UNIT NUMBERS FOR WRITING PRINT C OUTPUT IN ROUTINES CALLED BY RCMQC. C ALSO MADE MINOR CHANGES TO DOCUMENTA- C TION. C AUGUST 2005 WEISS FINALIZED CODE (MOSTLY COSMETIC). C ALSO ELIMINATED INPUTS KFILIN,MODNUM, C NAMIN, AND ND6. THESE CHANGES ARE C RELATED TO THE DK RADAR NAME READ C CHANGES IN INT_RADPREP. C AUGUST 2005 WIEDENFLED MODIFIED CODE FOR OPERATIONAL USE. C AUGUST 2005 WEISS CODE WILL NOW PROCESS DK RADAR WHEN ONLY C ONE RECORD IS AVAILABLE. C AUGUST 2005 WIEDENFELD MODIFIED THE STOP 110 AND SYNTAX FROM C THE ABOVE FIX. C SEPTEMBER 2005 WIEDENFELD ADDED CHECK TO CHANGE MODIFY RAW RADAR C FIELD TO HAVE MISSING VALUES OF 9999'S C RATHER THAN 7'S. C OCTOBER 2005 WIEDENFELD FIXED MISTAKE IN ERROR CHECK FOR ROUTINE C PWOTGM. MOVED ERROR CHECK TO BE CALLED FROM C WITHIN IF STATEMENT. C NOVEMBER 2012 GHIRARDELLI REMOVED WHERE CODE OPENS RADAR AND LTG C FILES. THESE FILES HAVE ALREADY BEEN C OPENED AS BIGENDIAN FILES VIA C INT_RADPREP'S CALL TO RDSNAM. BY C OPENING THE FILES _AGAIN_ BUT WITHOUT C THE CONVERT FEATURE, THEY WERE NOT BEING C OPENED CORRECTLY. THE OPENING OF THOSE C FILES IN THIS CODE IS UNNECESSARY AS C THEY ARE ALREADY BEING PROPERLY OPENED C ELSEWHERE. C C DATA SET USE C INPUT FILES: C FORT.KFILDI - UNIT NUMBER OF INPUT FILE. (INPUT) C FORT.KFILDO - UNIT NUMBER OF OUTPUT (PRINT) FILE. (INPUT) C FORT.KFILDK - UNIT NUMBER FOR THE DK RADAR INPUT SEQUENTIAL C FILE (INPUT) C FORT.KFILDT - UNIT NUMBER FOR READING THE DATE LIST. C (INPUT) C FORT.KFILRA - UNIT NUMBER OF INPUT RANDOM ACCESS MASK FILE C CONTAINING MOS-2000 CONSTANT DATA. (INPUT) C FORT.KFILLT - UNIT NUMBER FOR THE LIGHTNING INPUT SEQUENTIAL C FILE (INPUT) C C OUTPUT FILES: C FORT.KFILGO - UNIT NUMBER FOR THE SEQUENTIAL OUTPUT C FILE. (OUTPUT) C C FORT.IP(J) - UNIT NUMBERS FOR OPTIONAL OUTPUT (SEE IP( ) C UNDER "VARIABLES" BELOW.) (J=1,25) (INPUT) C C VARIABLES C KFILDI = UNIT NUMBER TO READ INPUT FILE 'lmp_radprep.cn'. C (INPUT) C KFILDO = UNIT NUMBER OF OUTPUT (PRINT) FILE. INITIALLY, C THIS IS SET BY DATA STATEMENT. LATER, IN C IPOPEN, IF IP(1) NE 0, KFILDO IS SET = IP(1). C THIS ALLOWS CHANGING THE "DEFAULT" PRINT FILE ON C THE FLY. OTHERWISE, ON SOME SYSTEMS, THE OUTPUT C FILE MIGHT HAVE THE SAME NAME AND BE OVERWRITTEN. C WHEN THE OUTPUT FILE IS NOT THE ORIGINAL DEFAULT, C THE NAME IS GENERATED AND CAN BE DIFFERENT FOR C EACH RUN. (INPUT) C ND1 = MAXIMUM NUMBER OF STATIONS THAT CAN BE DEALT C WITH (I.E., INTERPOLATION DONE FOR). NOTE THAT C THIS DOES NOT INCLUDE THE NUMBER OF STATIONS IN C THE DIRECTORY UNLESS, OF COURSE, THE STATION C DIRECTORY IS TO BE USED AS THE STATION LIST. C SET BY PARAMETER. (INPUT) C ND2 = ND2*ND3 IS THE MAXIMUM SIZE OF THE GRID THAT CAN C BE DEALT WITH. ND2 AND ND3 ARE SET SEPARATELY C TO HIGHLIGHT THE POSSIBLE DIMENSIONS OF THE C GRID. HOWEVER, IN THE CALLED ROUTINES, THE SIZE C IS ONLY LIMITED BY THE PRODUCT, NOT EACH C DIMENSION INDIVIDUALLY. NOT ACTUALLY USED C EXCEPT IN DRU_RADPREP. SET BY PARAMETER. (INPUT) C ND3 = ND2*ND3 IS THE MAXIMUM SIZE OF THE GRID THAT CAN C BE DEALT WITH. SEE ND2. SET BY PARAMETER. C (INPUT) C ND2X3 = THE DIMENSION OF SEVERAL ARRAYS. SET BY C PARAMETER. (INPUT) C ND4 = THE MAXIMUM NUMBER OF VARIABLES FOR WHICH C GRIDDED VALUES CAN BE PROVIDED. SET BY C PARAMETER. (INPUT) C ND5 = DIMENSION OF IPACK, IWORK, DATA. C THESE ARE GENERAL PURPOSE ARRAYS, SOMETIMES USED C FOR GRIDS. TWO SIZES OF ARRAYS (ND5 AND ND2X3) C ARE USED IN CASE AN ARRAY NEEDS TO BE LARGER C THAN ND2X3. ND5 CAN BE INCREASED WITHOUT C INCREASING THE SIZE OF ALL ARRAYS. SHOULD BE GE C ND2X3. SET BY PARAMETER. (INPUT) C ND7 = DIMENSION OF IS0( ), IS1( ), IS2( ), AND IS4( ). C NOT ALL LOCATIONS ARE USED. MAXIMUM SIZE IS FOR C IS1( ) = 22 PLUS 32 CHARACTERS (ONE CHARACTER C PER WORD) OF PLAIN TEXT = 54. SET BY PARAMETER. C (INPUT) C ND8 = MAXIMUM NUMBER OF DATES THAT CAN BE DEALT WITH. C (INPUT) C ISCALD(N) = THE DECIMAL SCALING CONSTANT TO USE WHEN PACKING C THE GRIDDED DATA (N=1,ND4). NO BINARY C SCALING IS PROVIDED FOR. (OUTPUT) C PLAIN2 = THE PLAIN LANGUAGE CHARACTER STRING EQUIVALENCED C TO ARRAY IPLAIN. (CHARACTER*32), (INPUT/INTERNAL) C IPLAIN(L,J) = 32 CHARACTERS (L=1,L3264W) (J=1,4) OF PLAIN C LANGUAGE DESCRIPTION OF VARIABLES. C NOTE THAT THIS REQUIRES TWO 32-BIT WORDS TO HOLD C THE DESCRIPTION BUT ONLY ONE 64-BIT WORD. C EQUIVALENCED TO PLAIN2. (INPUT/INTERNAL) C L3264B = INTEGER WORD LENGTH IN BITS OF MACHINE BEING C USED (EITHER 32 OR 64). SET BY PARAMETER. C (INPUT) C L3264W = NUMBER OF WORDS IN 64 BITS (EITHER 1 OR 2). C CALCULATED BY PARAMETER, BASED ON L3464B. C (INPUT) C IPACK(J) = INTEGER WORK ARRAY (J=1,ND5). (INPUT/INTERNAL) C DATA(J) = REAL WORK ARRAY (J=1,ND5). (INPUT/INTERNAL) C SDATA(J) = ARRAY CONTAINING THE DATA VALUES TO BE EVENTUALLY C STORED BY PACKV (J=1,ND5). (INPUT/INTERNAL) C NOTE: FD1 IN DRU_RADPREP. C IWORK(J) = INTEGER WORK ARRAY (J=1,ND5). (INPUT/INTERNAL) C OUT_DATA(I,J,2) = CONTAINS THE JC QC RCM RADAR DATA C FOR THE :15 AND :45 TIME PERIODS FOR A GIVEN HOUR. C (I=1,ND2,J=1,ND3; NX AND NY) C DATA_RAD(I,J,2) = CONTAINS THE KD RCM MOSAIC TDLPACKED RADAR DATA C FOR THE :15 AND :45 TIME PERIODS FOR A GIVEN C HOUR. (I=1,ND2,J=1,ND3; NX AND NY) C RADMSK(I,J) = CONTAINS "YES"/"NO" BINARY VALUE OF WHETHER A C RADAR GRIDPOINT IS SET TO MISSING (9999.), WHEN C THE REFLECTIVITY IS ZERO. FOR THESE GRIDPOINTS C THE BINAUY VALUE IS ONE, ZERO OTHERWISE. C (I=1,ND2,J=1,ND3; NX AND NY) C FLT(I,J,2) = CONTAINS LIGHTNING GRID AT "CONCURRENT TIME" C WITH RCM NOMINAL TIME AND ENDS 5 MINUTES C AFTERWARD. (I=1,ND2,J=1,ND3; NX AND NY) C FLTPT(I,J,2) = SAME ANS FLT( , ), BUT FOR PREVIOUS 15-MINUTE C PERIOD. (I=1,ND2,J=1,ND3; NX AND NY) C STALAT(I,J) = CONTAINS THE LATITUDES OF GRIDPOINTS (CENTERS OF C 10 KM GRID BOXES. (I=1,ND2,J=1,ND3; NX AND NY) C STALON(I,J) = CONTAINS THE LONGITUDES OF GRIDPOINTS (CENTERS C OF 10 KM GRID BOXES. (I=1,ND2,J=1,ND3; C NX AND NY) C IS0(J) = MOS-2000 GRIB SECTION 0 ID'S (J=1,4). C (INPUT/INTERNAL) C IS1(J) = MOS-2000 GRIB SECTION 1 ID'S (J=1,21+). C (INPUT/INTERNAL) C IS2(J) = MOS-2000 GRIB SECTION 2 ID'S (J=1,12). C (INPUT/INTERNAL) C IS4(J) = MOS-2000 GRIB SECTION 4 ID'S (J=1,4). C (INPUT/INTERNAL) C IDATE(J) = INITIAL DATE LIST (J=1,NDATES) WHICH MAY CONTAIN C NEGATIVE VALUES INDICATING A DATE SPAN. C THIS IS MODIFIED IN DATPRO TO CONTAIN THE COMPLETE C DATE LIST WITH THE DATES IN THE SPANS FILLED IN C (J=1,NDATES), WHERE NDATES HAS BEEN INCREASED C IF NECESSARY. DATES ARE INPUT AS YYMMDDHH AND C MODIFIED TO YYYYMMDDHH. ZEROS IN THE INPUT ARE C ELIMINATED. TERMINATOR IS 99999999. MAXIMUM C NUMBER OF DATES IS ND8. (INPUT/INTERNAL) C NWORK(J) = A WORK ARRAY (J=1,ND8). (INPUT/INTERNAL) C C LAMP DATA SET. C PARAMETER (L3264B=32) FOR THE 32-BIT MACHINE AND C PARAMETER (L3264B=64) FOR THE 64-BIT MACHINE. C C C ADDITIONAL VARIABLES (INT_RADPREP.F) C C C KFILDT = UNIT NUMBER FOR READING THE DATE LIST (INTERNAL). C TDLPACK FORMAT. (INTERNAL) C KFILGO = UNIT NUMBER OF GRIDPOINT SEQUENTIAL OUTPUT FILE. C (INTERNAL) C KFILLT = UNIT NUMBER FOR THE LIGHTNING INPUT SEQUENTIAL C FILE (INTERNAL) C KFILDK = UNIT NUMBER FOR THE DK RADAR INPUT SEQUENTIAL C FILE. (OUTPUT) C KFILRA = UNIT NUMBER OF INPUT RANDOM ACCESS MASK FILE C CONTAINING MOS-2000 CONSTANT DATA. (INPUT) C IP(J) = EACH VALUE (J=1,25) INDICATES WHETHER (>1) C OR NOT (=0) CERTAIN INFORMATION WILL BE WRITTEN. C WHEN IP( ) > 0, THE VALUE INDICATES THE UNIT C NUMBER FOR OUTPUT. THESE VALUES SHOULD NOT BE THE C SAME AS ANY KFILX VALUES EXCEPT POSSIBLY C KFILDO, WHICH IS THE DEFAULT OUTPUT FILE. THIS IS C ASCII OUTPUT, GENERALLY FOR DIAGNOSTIC PURPOSES. C THE FILE NAMES WILL BE 4 CHARACTERS 'RADPREP', C THEN 4 CHARACTERS FROM IPINIT, THEN 2 CHARACTERS C FROM IP(J) (E.G., 'U140HRG140'). THE ARRAY IS C INITIALIZED TO ZERO IN CASE LESS THAN THE EXPECTED C NUMBER OF VALUES ARE READ IN. EACH OUTPUT ASCII C FILE WILL BE TIME STAMPED. NOTE THAT THE TIME C ON EACH FILE SHOULD BE VERY NEARLY THE SAME, BUT C COULD VARY BY A FRACTION OF A SECOND. IT IS C INTENDED THAT ALL ERRORS BE INDICATED ON THE C DEFAULT, SOMETIMES IN ADDITION TO BEING INDICATED C ON A FILE WITH A SPECIFIC IP( ) NUMBER, SO THAT C THE USER WILL NOT MISS AN ERROR. C (1) = ALL ERRORS AND OTHER INFORMATION NOT C SPECIFICALLY IDENTIFIED WITH OTHER IP( ) C NUMBERS. WHEN IP(1) IS READ AS NONZERO, C KFILDO, THE DEFAULT OUTPUT FILE UNIT NUMBER, C WILL BE SET TO IP(1). WHEN IP(1) IS READ C AS ZERO, KFILDO WILL BE USED UNCHANGED. C (2) = THE INPUT DATES IN IDATE( ). WHEN THERE C ARE ERRORS, PRINT WILL BE TO UNIT KFILDO AS C WELL AS TO UNIT IP(2). C (3) = THE OUTPUT DATES IN IDATE( ). WHEN THERE C ARE ERRORS, OUTPUT WILL BE TO UNIT KFILDO AS C WELL AS TO UNIT IP(3). C (4) = THE INPUT DK RADAR SEQUENTIAL FILE(S). IF C THERE ARE NO INPUT SEQUENTIAL FILES, A C MESSAGE WILL BE WRITTEN TO THE DEFAULT OUTPUT C FILE UNIT KFILDO AS WELL AS TO UNIT IP(4). C (5) = THE INPUT GRIDDED MASK RANDOM ACCESS FILE. C IF THERE ARE NO INPUT RANDOM ACCESS FILES, A C MESSAGE WILL BE WRITTEN TO THE DEFAULT OUTPUT C FILE UNIT KFILDO AS WELL AS TO UNIT IP(5). C (6) = THE OUTPUT JC QC RADAR RADSEQUENTIAL FILE C IF ANY OF THE OUTPUT FILES ARE MISSING, A C MESSAGE WILL BE WRITTEN TO THE DEFAULT OUTPUT C FILE UNIT KFILDO AS WELL AS TO UNIT IP(6). C (9) = THE OUTPUT VARIABLE IDS ARE WRITTEN TO C UNIT IP9 AS THE VARIABLES ARE READ IN. C THIS SHOULD BE USEFUL FOR CHECKOUT. C CHECKOUT. C (10) = THE VARIABLE LIST WILL BE WRITTEN TO UNIT C IP10 PARSED INTO ITS 15 INTEGER COMPONENTS. C 15 INTEGER COMPONENTS. IF THERE ARE INPUT C ERRORS, THE VARIABLE LIST WILL BE WRITTEN C TO THE DEFAULT OUTPUT FILE UNIT KFILDO AS WELL AS C TO UNIT IP10 IF THEY ARE DIFFERENT. C (16) = A STATEMENT WILL BE OUTPUT TO IP(16) C WHEN A SEQUENTIAL FILE IS WRITTEN THROUGH C PWOTGM. C (20) = CONTAINS A LISTING OF RCM GRIDBOXES WITH C CATEGORY 5 AND 6 VALUES AND THE CORRESPOND- C ING LIGHTNING VALUES. C (21) = CONTAINS DIAGNOSTIC INFORMATION FOR GRID C BOXES IN WHICH THE RCM VALUES ARE CHECKED C AND POSSIBLY CORRECTED. C (22) = CONTAINS A TABLE OF STATISTICS THAT SHOWS C THE RELATIONSHIP BETWEEN LIGHTNING RELATIVE C FREQUENCY AND RCM RADAR REFLECTIVITY. FOR C EACH OF THE TWO RCM VARIABLES, A SEPARATE C TABLE IS OUTPUT THAT APPLIES BEFORE THE QC C AND AFTER THE QC. (INTERNAL) C C IUSE(J) = EACH VALUE J PERTAINS TO IP(J). WHEN AN IP(J) C VALUE IS USED BY THE PROGRAM, IPRINT(J) = 1; C OTHERWISE, IPRINT(J) = 0. USED BY IPRINT TO C PRINT IP( ) VALUES, (J=1,25). (INTERNAL) C NDATES = THE NUMBER OF DATES IN IDATE( ). (OUTPUT) C PLAIN(N) = THE PLAIN LANGUAGE DESCRIPTION OF THE VARIABLES C (N=1,ND4). (CHARACTER*32) C IDPARS(J,N) = THE PARSED, INDIVIDUAL COMPONENTS OF THE VARIABLE C ID'S CORRESPONDING TO ID( ,N) GENERATED IN C RDVR37. (J=1,15), (N=1,NVRBL). C (INTERNAL) C J=1--CCC (CLASS OF VARIABLE), C J=2--FFF (SUBCLASS OF VARIABLE), C J=3--B (BINARY INDICATOR), C 0 = NOT BINARY, C 1 = CUMULATIVE FROM ABOVE, VALUES GE LOWER THRESHOLD C TRESHL = 1, C 2 = CUMULATIVE FROM BELOW, VALUES LT UPPER THRESHOLD C TRESHU = 1. C 3 = DISCRETE BINARY. VALUES GE LOWER THRESHOLD AND C LT UPPER THRESHOLD = 1. C 5 = GRID BINARY. VALUES GE LOWER THRESHOLD C ONLY THE VALUE OF 0, 1, OR 5 SHOULD BE USED FOR C PREDICTORS; C 0, 1, 2, OR 3 CAN BE USED FOR PREDICTANDS. C J=4--DD (DATA SOURCE, MODEL NUMBER), C J=5--V (VERTICAL APPLICATION), C J=6--LBLBLBLB (BOTTOM OF LAYER, 0 IF ONLY 1 LAYER), C J=7--LTLTLTLT (TOP OF LAYER), C J=8--T (TRANSFORMATION), C J=9--RR (RUN TIME OFFSET, ALWAYS + AND BACK IN TIME), C J=10--OT (TIME APPLICATION), C J=11--OH (TIME PERIOD IN HOURS), C J=12--TAU (PROJECTION IN HOURS), C J=13--I (INTERPOLATION TYPE), C J=14--S (SMOOTHING INDICATOR), AND C J=15--G (GRID INDICATOR). THIS HAS NO MEANING C EXCEPT IN U201, AND IS SET TO ZERO. THIS C IN CASE THE SAME VARIABLE LIST IS USED IN C U201 AND OTHER PROGRAMS, SUCH AS U600. C ID(J,N) = THE INTEGER OUTPUT VARIABLE IDS (J=1,4) C (N=1,ND4) AS READ IN FROM INT_RADPREP. (INTERNAL) C IOUTG = THE SEQUENTIAL FILE UNIT NUMBER (INTERNAL) C IOUTL = THE SEQUENTIAL LIGHTNING DATA INPUT FILE UNIT C NUMBER (OUTPUT) C DATLIT = THE DATA SET NAME FOR THE INPUT LIGHTNING DATA C (CHARACTER*60) INPUT. C RACESS = FILE NAME OF THE EXTERNAL RANDOM ACCESS MASK C FILE. ONLY ONE IS ALLOWED (CHARACTER*60). (OUTPUT) C IOUTK = THE SEQUENTIAL DK RADAR DATA INPUT FILE UNIT C NUMBER. (OUTPUT) C MODNO = THE "MODEL" NUMBER CORRESPONDING TO KFILDK, C THE DK RADAR DATA. (OUTPUT) C DATRAD = THE DATA SET NAME FOR THE INPUT DK RADAR DATA C (CHARACTER*60) OUTPUT. C INCCYL = THE NUMBER OF HOURS BETWEEN DATES WHEN DATE SPANNING C IS USED. (INTERNAL) C NPROJ = MAP PROJECTION OF THE OUTPUT GRID. (INTERNAL) C NX = X-EXTENT OF THE OUTPUT GRID. (INTERNAL) C NY = Y-EXTENT OF THE OUTPUT GRID. (INTERNAL) C XLATLL = LATITUDE OF LOWER LEFT CORNER POINT OF THE C OUTPUT GRID. (INTERNAL) C YLONLL = WEST LONGITUDE OF LOWER LEFT CORNER POINT C OF THE OUTPUT GRID. DO NOT USE NEGATIVE. C (INTERNAL) C XMESHL = MESH LENGTH OF OUTPUT GRID IN KM AT XLAT DEGREES C NORTH LATITUDE. (INTERNAL) C ORIENT = ORIENTATION OF OUTPUT GRID IN DEGREES WEST C LONGITUDE. DO NOT USE NEGATIVE. (INTERNAL) C XLAT = LATITUDE OF OUTPUT GRID IN DEGREES AT WHICH C XMESHL APPLIES. ALSO THE LATITUDE WHERE THE C PROJECTION CUTS THE EARTH. DO NOT USE NEGATIVE. C (INTERNAL) C LNGTH = LINE LENGTH FOR PRINTING TO IP(16). (INTERNAL) C NVRBL = THE NUMBER OF VARIABLES. (INTERNAL) C IPINIT = 4 CHARACTERS USED TO HELP IDENTIFY OUTPUT C ASSOCIATED WITH THE IP( ) NUMBERS. C (CHARACTER*4) (INTERNAL) C ISTOP = 0 MEANS THE PROGRAM IS RUNNING OK UP TO THIS C POINT. WHENEVER AN ERROR OCCURS THAT SHOULD C HALT THE PROGRAM AFTER INPUT DIAGNOSTICS ARE C PRINTED, ISTOP IS SET = ISTOP+1. (INPUT-OUTPUT) C C C LMIJLL AND PSIJLL VARIABLES C C ALAT = NORTH LATITUDE IN DEGREES OF THE POINT CORRESPONDING C TO XI, YJ. C ALON = WEST LONGITUDE IN DEGREES OF THE POINT CORRESPONDING C TO XI, YJ. C XI = IX (LEFT TO RIGHT) GRIDPOINT FOR WHICH THE C LATITUDE AND LONGITUDE ARE WANTED (INTERNAL). C YJ = JY (BOTTON TO TOP) GRIDPOINT FOR WHICH THE C LATITUDE AND LONGITUDE ARE WANTED (INTERNAL). C C C SEQUENTIAL FILE OUTPUT (PWOTGM) C C IOCTTG = THE PACKED GRID RECORD SIZE IN OCTETS (BYTES). C (INTERNAL) C ISCALE = THE SCALLING FACTOR FOR THE VARIABLE (INTERNAL). C ITAUH = PROJECTION IN HOURS. (INTERNAL) C ITAUM = PROJECTION IN MINUTES. (INTERNAL) C LX = THE NUMBER OF GROUPS (THE NUMBER OF 2ND ORDER C MINIMA). WHILE NEEDED ONLY IN SUBROUTINE PACK, C IT IS OUTPUT IN THE ARGUMENT LIST OF PAWOTG IN C CASE THE USER WANTS TO KNOW IT. (INTERNAL) C MAX_NSTA = MAXIMUM NUMBER OF STATION THAT CAN BE WRITTEN. C (INTERNAL) C MODNO = MODEL NUMBER. (INTERNAL) C NSEQ = SEQUENCE NUMBER. (INTERNAL) C NTOTBG = THE TOTAL NUMBER OF BYTES IN PACKED DATA RECORDS C WRITTEN FOR GRID FILE. (INTERNAL) C NTOTRG = THE TOTAL NUMBER OF PACKED RECORDS WRITTEN TO C GRID FILE. (INTERNAL) C C XMISSP = SET TO 9999. INDICATING THAT ANY MISSING DATA C VALUE WILL BE PACKED AS 9999. C XMISSS = SET TO 0 TO INDICATE THERE WILL BE NO SECONDARY C MISSING VALUE INDICATOR (SEE XMISSP). C NCHAR = THE NUMBER OF CHARACTERS IN IPLAIN TO INSERT C INTO IS1( ) FOR PACKING, MAXIMUM OF 32. C IPLAIN( ,J) = PLAIN LANGUAGE TO INSERT INTO IS1( ) (J=1,4). C EQUIVALENCED TO PLAIN2. C PLAIN = PLAIN LANGUAGE TO INSERT INTO IS1( ). C EQUIVALENCED TO IPLAIN( , ) (CHARACTER*32) C MINPK = VALUES ARE PACKED IN GROUPS OF MINIMUM SIZE C MINPK. ONLY WHEN THE NUMBER OF BITS TO HANDLE C A GROUP CHANGES WILL A NEW GROUP BE FORMED. C SET TO 14 BY DATA STATEMENT. C C C ADDITIONAL VARIABLES C C I,II,J,IJ,K, = COUNTER VARIABLES (INTERNAL) C IK,KK,M,N C ICHECK(L) = SET TO 0 WHEN INPUT LIGHTNING GRIDS CONTAIN ALL C MISSING VALUES, IN WHICH CASE ONLY THE "MASK" C QC CHECK (THE FIRST OF TWO QC PROCESSES) IS C APPLIED; =1 OTHERWISE, WHERE L=1,2 FOR C :15 AND :45 PROCESSING TIMES. (INTERNAL) C ID_LTNG(L) = THE FIRST WORD OF THE FIVE LIGHTNING RECORDS. C (L=1,5) C ID_MASK(I) = FOUR WORD ID FOR THE GRIDDED MASK INPUT C DATA, WARM/COOL SEASON DEPENDENT. (I=1,4) C ID_RADAR(I) = THE FIRST WORD OF THE TWO RADAR RECORDS C (L=1,2). C DATA, WARM/COOL SEASON DEPENDENT. (I=1,4) C INUM = THE NUMBER OF STATIONS FROM THE INPUT FILES C (INTERNAL). C IOSTAT,IOS = STATUS RETURN USED FOR OPEN AND READ C STATEMENTS (INTERNAL). C IRADCHK(L) = SET TO 0 WHEN INPUT DK RADAR DATA IS MISSING C IN WHICH CASE ONLY THE "MASK" C QC CHECK (THE FIRST OF TWO QC PROCESSES) IS C APPLIED; =1 OTHERWISE, WHERE L=1,2 FOR C :15 AND :45 PROCESSING TIMES. (INTERNAL) C C UNPACK VARIABLES C MISSPX = PRIMARY MISSING VALUE INDICATOR. RETURNED AS C ZERO WHEN A VALUE IS NOT PACKED. THIS IS THE C UNSCALED VALUE AND SHOULD BE THE NEAREST C INTEGER TO XMISSP WHEN PACKING. (OUTPUT) C MISSSX = SECONDARY MISSING VALUE INDICATOR. THIS IS THE C UNSCALED VALUE AND SHOULD BE THE NEAREST C INTEGER TO XMISSS WHEN PACKING. RETURNED AS C ZERO WHEN A VALUE IS NOT PACKED. (OUTPUT) C C NBYTES(2) = NUMBER OF BYTES STORAGE ARRAY WHEN READING C PACKED RECORDS (INTERNAL). C NDATEPT = DATE OF ONE HOUR PREVIOUS TO CURRENT TIME C (INTERNAL). C NDATE = DATE OF CURRENT READ VARIABLE RECORD. (INTERNAL). C LDATE = DATE OF THE INPUT LIGHTNING DATA (INTERNAL). C NID(J)= THE INTEGER DEFAULT ID (J=1,4) C STATE = VARIABLE SET TO STATEMENT NUMBER TO INDICATE C WHERE AN ERROR OCCURRED. (CHARACTER*4) C C IER = STATUS RETURN. C 0 = GOOD RETURN. SEE CALLED ROUTINES FOR OTHER C VALUES. C OTHER VALUES RETURNED FROM SUBROUTINES. C IERG = STATUS RETURN FOR PWOTGM ONLY. C C SUBPROGRAMS CALLED: C INT_RADPREP, UPDAT, UNPACK, RDTDLM, PSIJLL, LMIJLL, RCMQC, PWOTGM, C IERX, W3TAGE C C UNIQUE - INT_RADPREP, RCMQC, PWOTGM C MDLLIB - UPDAT, UNPACK, RDTDLM, PSIJLL, LMIJLL, IERX C W3LIB - W3TAGE C C EXIT STATES: C COND = 0 - SUCCESSFUL RUN C 20 - ERRORS IN INT_RADPREP C 110 - IDS DO NOT AGREE WITH INPUT RADAR DATA C 120 - INPUT RADAR DATE DOES NOT AGREE WITH DATA C 239 - INPUT LIGHTNING DATE DOES NOT AGREE WITH DATA C 240 - SAME ERROR. C 280 - FORBIDDEN ZONE ON LAMBERT CONFORMAL MAP C 290 - INVALID MAP PROJECTION SELECTED C 489 - ERROR IN PACKING ROUTINE PWOTGM C 502 - ERROR READING INPUT RADAR DATA C 602 - ERROR READING INPUT LIGHTNING DATA C 9999 - ERROR READING CONTROL FILE INFORMATION C C IMPLICIT NONE C CHARACTER*4 STATE,IPINIT CHARACTER*32 PLAIN2 CHARACTER*32 PLAIN(ND4) CHARACTER*60 DATRAD,DATLIT,RACESS C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C INTEGER :: KFILDI,KFILDO,KFILDK,KFILLT,KFILRA INTEGER :: ND1,ND2,ND3,ND2X3,ND4,ND5,ND7,ND8 INTEGER :: ISCALD,IPLAIN,L3264B,L3264W INTEGER :: IPACK,IWORK INTEGER :: IS0,IS1,IS2,IS4 INTEGER :: IDATE,NWORK C C ADDITIONAL INTEGER VARIABLES (INT_RADPREP.F) C INTEGER :: KFILDT,KFILGO INTEGER :: IP,IUSE,NDATES,IDPARS,ID INTEGER :: IOUTG,IOUTL,IOUTK INTEGER :: INCCYL,NPROJ,NX,NY INTEGER :: LNGTH,NVRBL INTEGER :: ISTOP,NVALUE C C PWOTGM INTEGER :: LX,NCHAR,IA,IC,ISCALE,MINPK,MAX_NSTA,IERG INTEGER :: ITAUH,ITAUM,MODNO,NSEQ,IOCTTG,NTOTBG,NTOTRG C C ADDITIONAL INTERNAL INTEGER VARIABLES C INTEGER :: ID_MASK,IER,IADATE,ID_LTNG,ICHECK,IRADCHK, 1 ID_RADAR INTEGER :: IOSTAT,IOS,INUM INTEGER :: NDATE,NDATEPT,LDATE,NID,IRECa,IRECb INTEGER :: MISSPX,MISSSX,NBYTES INTEGER :: I,II,J,IJ,K,IK,KK,M,N C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C REAL :: DATA,SDATA,DATA_RAD,RADMSK,FLT,FLTPT REAL :: STALAT,STALON,OUT_DATA REAL :: XMISSP,XMISSS C C ADDITIONAL REAL VARIABLES C REAL :: XLATLL,YLONLL,XMESHL,ORIENT,XLAT REAL :: ALAT,ALON,XI,YJ C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C DIMENSION ISCALD(ND4),IPLAIN(L3264W,4) DIMENSION IPACK(ND5),IWORK(ND5) DIMENSION DATA(ND5),SDATA(ND5),DATA_RAD(ND2,ND3,2) DIMENSION RADMSK(ND2,ND3),FLT(ND2,ND3,2),FLTPT(ND2,ND3,2) DIMENSION STALAT(ND2,ND3),STALON(ND2,ND3),OUT_DATA(ND2,ND3,2) DIMENSION IS0(ND7),IS1(ND7),IS2(ND7),IS4(ND7) DIMENSION IDATE(ND8),NWORK(ND8) C C ADDITIONAL VARIABLES C DIMENSION IP(25),IUSE(25) DIMENSION IDPARS(15,ND4),ID(4,ND4) C DIMENSION ID_MASK(4),ID_LTNG(5),ICHECK(2),IRADCHK(2),ID_RADAR(2) C DIMENSION IA(ND5),IC(ND5) DIMENSION ISTOP(2),NBYTES(2) DIMENSION NID(4) C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C STEP 1. INITIALIZE VARIABLES AND READ IN THE .CN C FILE COMPONENTS. C DATA ISTOP/0,0/ DATA IP/25*0/ DATA KFILGO/0/ DATA ID_MASK/447531000,0,0,0/ DATA ID_RADAR/707615004,707645004/ DATA ID_LTNG/707389004,707386004,707387004,707388004, 1 707380004/ C DATA IUSE/1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0/ C DATA XMISSP/9999./,XMISSS/9997./ DATA NCHAR/32/,ITAUH/0/,ITAUM/0/,NSEQ/0/ DATA MINPK/14/ C C INITIALIZE LIGHTNING DATA ARRAYS TO MISSING C C DO 48 J=1,ND3 ! 385 DO 48 I=1,ND2 ! 481 FLTPT(I,J,1)=9999. FLTPT(I,J,2)=9999. FLT(I,J,1)=9999. FLT(I,J,2)=9999. 48 CONTINUE ICHECK(1)=0 ICHECK(2)=0 IRADCHK(1)=0 IRADCHK(2)=0 C C CALL INT_RADPREP(KFILDI,KFILDO,KFILDT,KFILDK, 1 KFILGO,KFILLT,KFILRA, 2 IP,IUSE,IDATE,NDATES,PLAIN, 3 ND1,ND4,ND8,L3264B,L3264W, 4 IDPARS,ID,IOUTG,IOUTL,DATLIT,RACESS, 5 IOUTK,MODNO,DATRAD,INCCYL,ISCALD, 6 NPROJ,NX,NY,XLATLL,YLONLL,XMESHL,ORIENT, 7 XLAT,LNGTH,NVRBL, 8 IPINIT,ISTOP,IER) C IF (ISTOP(1) .GT. 0) THEN WRITE(KFILDO,20) ISTOP, IER 20 FORMAT(/'****ERRORS HAVE OCCURRED IN INT_RADPREP: ISTOP = ',I2, 1 ' AND IER = ',I4,/, 2 ' IT IS PRUDENT TO STOP HERE IN RADPREP AT 20.') CALL W3TAGE('RADPREP') STOP 20 ENDIF C C NDATE=IDATE(1) CALL UPDAT(NDATE,-1,NDATEPT) C C C####################################### C C STEP 2. READ THE MOSAIC RADAR C DATA FOR BOTH :15 AND :45 MINUTES C AFTER THE HOUR. (SEQUENTIAL FILE READ) C NOTE THAT THE RADAR DATA FILE HAS ALREADY C BEEN OPENED IN INT_RADPREP WHERE IT CALLS C RDSNAM. C DO 150 K=1,2 READ(KFILDK,IOSTAT=IOS,ERR=501,END=145) 1 (NBYTES(J),J=1,L3264W), 2 (IPACK(J),J=1,NBYTES(L3264W)*8/L3264B) C LDATE=IPACK(5) NID(1)=IPACK(6) NID(2)=IPACK(7) NID(3)=IPACK(8) NID(4)=IPACK(9) C C 2A. ID CHECK C IF(NID(1).EQ.ID_RADAR(1))THEN KK=1 IRADCHK(KK)=1 ELSEIF(NID(1).EQ.ID_RADAR(2))THEN KK=2 IRADCHK(KK)=1 ELSE WRITE(KFILDO,110)K,NID(1),ID_RADAR(1),ID_RADAR(2) 110 FORMAT(/,'**** ERROR: RADAR DATA RECORD #',I2, 1 ' HAS AND ID OF',I10,/, 2 ' RADAR ID SHOULD EITHER BE ',I10,' OR ',I10) CALL W3TAGE('RADPREP') STOP 110 ENDIF C C 2B. DATE CHECK C IF(LDATE.NE.NDATE)THEN WRITE(KFILDO,120)K,NID(1),LDATE 120 FORMAT(/,'**** ERROR: RADAR DATA RECORD #', 1 I2,2X,I10,' FOR DATE: ',I10,/, 2 'DOES NOT AGREE WITH INPUT DATE') CALL W3TAGE('RADPREP') STOP 120 ENDIF C C 2C. UNPACK C CALL UNPACK(KFILDO,IPACK,IWORK,DATA,ND5,IS0,IS1, 1 IS2,IS4,ND7,MISSPX,MISSSX,2,L3264B,IER) IF(IER.NE.0)THEN IER=3 STATE='130 ' GO TO 900 ENDIF C II=0 DO 130 J=1,360 ! 385 DO 130 I=1,460 ! 481 II=II+1 IF(DATA(II).NE.7)THEN DATA_RAD(I,J,KK)=DATA(II) ELSE DATA_RAD(I,J,KK)=XMISSP ENDIF 130 CONTINUE C WRITE(KFILDO,132)K,NID(1),NID(2),NID(3),NID(4),LDATE 132 FORMAT(/'RADAR DATA SUMMARY:',/,'RECORD #= ',I2,2x, 1 4I10,I12,//) C GO TO 150 145 IF(K.EQ.1)GO TO 685 IF(K.EQ.2)THEN WRITE(KFILDO,149)NID(1) 149 FORMAT(/,'**** WARNING: ONE RADAR RECORD IS MISSING:', 1 /,'ONLY DATA FOR RECORD',I10,' IS PRESENT.',/) ENDIF C 150 CONTINUE C CC CLOSE(KFILDK,IOSTAT=IOS) CC C C C C####################################### C C STEP 3. READ THE GRIDDED MASK DATA FROM A C RANDOM ACCESS FILE FOR EITHER THE C THE WARM OR COOL SEASON BASED ON C THE INPUT DATE. C C 2005050321 C IADATE=MOD(NDATE,1000000) IF((IADATE.LE.093023).AND.(IADATE.GE.040100))THEN WRITE(KFILDO,205)NDATE 205 FORMAT(/,'NDATE=',I10,' WARM SEASON') ID_MASK(2)=010170000 ELSE WRITE(KFILDO,209)NDATE 209 FORMAT(/,'NDATE=',I10,' COOL SEASON') ID_MASK(2)=010180000 ENDIF C C 3A. READ DATA C CALL RDTDLM(KFILDO,KFILRA,RACESS,ID_MASK,IPACK,ND5, 1 NVALUE,L3264B,IER) IF(IER.NE.0)THEN IER=3 STATE='215 ' GO TO 900 ENDIF INUM = NVALUE/L3264W C C 3B. UNPACK GRIDDED MASK DATA AND PUT INTO ARRAY C RADMSK(481,385) C CALL UNPACK(KFILDO,IPACK,IWORK,DATA,ND5,IS0,IS1, 1 IS2,IS4,ND7,MISSPX,MISSSX,2,L3264B,IER) IF(IER.NE.0)THEN IER=3 STATE='220 ' GO TO 900 ENDIF C II=0 DO 230 J=1,ND3 ! 385 DO 225 I=1,ND2 ! 481 II=II+1 RADMSK(I,J)=DATA(II) 225 CONTINUE 230 CONTINUE C WRITE(KFILDO,232) 232 FORMAT(/'GRIDDED MASK DATA COPIED TO ARRAY RADMSK:',//) C C C C####################################### C C STEP 4. READ THE LIGHTNING DATA NEEDED FOR C THE RCMQC. (FIVE RECORDS) C (SEQUENTIAL FILE READ) C NOTE THAT THE LTG DATA FILE HAS ALREADY C BEEN OPENED IN INT_RADPREP WHERE IT CALLS C RDSNAM. C DO 250 K=1,5 READ(KFILLT,IOSTAT=IOS,ERR=601,END=665) 1 (NBYTES(J),J=1,L3264W), 2 (IPACK(J),J=1,NBYTES(L3264W)*8/L3264B) C LDATE=IPACK(5) NID(1)=IPACK(6) NID(2)=IPACK(7) NID(3)=IPACK(8) NID(4)=IPACK(9) C C 4A. DATE CHECK C IF(K.EQ.1)THEN IF(LDATE.NE.NDATEPT)THEN WRITE(KFILDO,240)K,NID(1),LDATE CALL W3TAGE('RADPREP') STOP 239 ENDIF ELSEIF(K.GE.2)THEN IF(LDATE.NE.NDATE)THEN WRITE(KFILDO,240)K,NID(1),LDATE 240 FORMAT(/,'**** ERROR: LIGHTNING DATA RECORD #', 1 I2,2X,I10,' FOR DATE: ',I10,/, 2 'DOES NOT AGREE WITH INPUT DATE') CALL W3TAGE('RADPREP') STOP 240 ENDIF ENDIF C C 4B. UNPACK DATA C CALL UNPACK(KFILDO,IPACK,IWORK,DATA,ND5,IS0,IS1, 1 IS2,IS4,ND7,MISSPX,MISSSX,2,L3264B,IER) IF(IER.NE.0)THEN IER=3 STATE='245 ' GO TO 900 ENDIF C IRECa=0 IRECb=0 C SELECT CASE (NID(1)) CASE (707389004) IRECa=1 CASE (707386004) IRECb=1 CASE (707387004) IRECa=2 CASE (707388004) IRECb=2 END SELECT II=0 C C 4C. FILL ARRAY FLTPT FOR :15 AND :45 C DO 248 J=1,ND3 ! 385 DO 248 I=1,ND2 ! 481 II=II+1 IF(IRECa.GT.0)THEN FLTPT(I,J,IRECa)=DATA(II) IF(ICHECK(1).EQ.0)THEN IF(NINT(DATA(II)).NE.9999)THEN ICHECK(1)=1 ENDIF ENDIF ENDIF IF(IRECb.GT.0)THEN FLT(I,J,IRECb)=DATA(II) IF(ICHECK(2).EQ.0)THEN IF(NINT(DATA(II)).NE.9999)THEN ICHECK(2)=1 ENDIF ENDIF ENDIF 248 CONTINUE C WRITE(KFILDO,249)K,NID(1),NID(2),NID(3),NID(4),LDATE,INUM 249 FORMAT(/'LIGHTNING DATA SUMMARY:',/,'RECORD #= ',I2,2x, 1 4I10,I12,/,'INUM=',I10,//) 250 CONTINUE CC CC CLOSE(KFILLT,IOSTAT=IOS) CC C WRITE(KFILDO,252)ICHECK(1),ICHECK(2) 252 FORMAT(/,'LIGHTNING DATA "ICHECK(1)"=',I5, 1 /,'LIGHTNING DATA "ICHECK(2)"=',I5/) C C C C####################################### C C STEP 5. GENERATE THE GRID POINT LATITUDES AND C LONGITUDES FOR THE 481/385 GRID AND STORE IN C ARRAY STALAT AND STALON. C C C POLAR STEREOGRAPHIC AND LAMBERT CONFORMAL GRIDS (NH). C C C********************************* C 5A. POLAR STEREOGRAPHIC * C IF(NPROJ.EQ.5) THEN WRITE(KFILDO,FMT='(/,''PROJ: POLAR STEREOGRAPHIC'')') CC WRITE(6,FMT='(/,''PROJ: POLAR STEREOGRAPHIC'')') C **** COMPUTATIONS FOR POLAR STEREOGRAPHIC GRID FOLLOW: C COMPUTE LAT/LON FOR GRID POINTS DO 276 J=1,ND3 ! 385 DO 276 I=1,ND2 ! 481 XI=I YJ=J CALL PSIJLL(KFILDO,XI,YJ,XMESHL,ORIENT,XLAT,XLATLL,YLONLL, 1 ALAT,ALON) STALAT(I,J)=ALAT C C CHANGE SIGN ON LONGITUDES SO THAT WEST IS POSITIVE STALON(I,J)=-ALON 276 CONTINUE C C********************************* C 5B. LAMBERT CONFORMAL * C ELSEIF(NPROJ.EQ.3) THEN WRITE(KFILDO,FMT='(/,''PROJ: LAMBERT CONFORMAL'')') WRITE(6,FMT='(/,''PROJ: LAMBERT CONFORMAL'')') C **** COMPUTATIONS FOR LAMBERT CONFORMAL GRID FOLLOW: C COMPUTE LAT/LON FOR GRID POINTS DO 286 J=1,ND3 ! 385 DO 286 I=1,ND2 ! 481 XI=I YJ=J CALL LMIJLL(KFILDO,XI,YJ,XMESHL,ORIENT,XLAT,XLATLL,YLONLL, 1 ALAT,ALON,IER) IF(IER.NE.0) THEN WRITE(KFILDO,280) IER 280 FORMAT(/,' ****ERROR --FORBIDDEN ZONE LAMBERT LAT/LON') CALL W3TAGE('RADPREP') STOP 280 ENDIF C STALAT(I,J)=ALAT STALON(I,J)=ALON 286 CONTINUE ELSEIF(NPROJ.NE.5.AND.NPROJ.EQ.3)THEN WRITE(KFILDO,290) NPROJ 290 FORMAT(/,' ****ERROR:--INVALID MAP PROJECTION =',I3) CALL W3TAGE('RADPREP') STOP 290 ENDIF C WRITE(KFILDO,300) 300 FORMAT(//,2X,'LAT/LON FOR GRID CORNER POINTS FOLLOW:',/) C WRITE(KFILDO,305) STALAT(1,ND3),STALON(1,ND3),STALAT(ND2,ND3), 1 STALON(ND2,ND3),STALAT(1,1),STALON(1,1),STALAT(ND2,1), 2 STALON(ND2,1) 305 FORMAT(2X,'LAT/LON(1,ND3) = ',F8.4,F9.4, 1 /,2X,'LAT/LON(ND2,ND3) = ',F8.4,F9.4, 2 /,2X,'LAT/LON(1,1) = ',F8.4,F9.4, 3 /,2X,'LAT/LON(ND2,1) = ',F8.4,F9.4,//) C C C C####################################### C C STEP 6. GENERATE THE QC RADAR DATA BY CALLING C SUBROUTINE RCMQC C C C SUBROUTINE RCMQC(KFILDO,NDATE,DATA,RADTMP,FLT,FLTPT,RADMSK, C 1 STALAT,STALON,ICHECK,IP,NX,NY) C C C DO 400 K=1,2 IF(IRADCHK(K).EQ.1)THEN CALL RCMQC(KFILDO,NDATE,OUT_DATA(1,1,K),DATA_RAD(1,1,K), 1 FLT(1,1,K),FLTPT(1,1,K),RADMSK,STALAT,STALON, 2 ICHECK(K),IP,NX,NY) ENDIF C 400 CONTINUE C C C C####################################### C C STEP 7. WRITE TO THE SEQUENTIAL FILE BY CALLING C SUBROUTINE PWOTGM. C C IF(IOUTG.NE.0)THEN DO 500 K=1,2 C DO 460 J=1,ND7 IS0(J)=0 IS1(J)=0 IS2(J)=0 IS4(J)=0 460 CONTINUE DO 462 J=1,ND5 IA(J)=0 IC(J)=0 462 CONTINUE C C SET UP NID(1-4) C NID(1)=ID(1,K) NID(2)=ID(2,K) NID(3)=ID(3,K) NID(4)=ID(4,K) ISCALE=ISCALD(K) PLAIN2=PLAIN(K) C Cccc MODNO=MODNUM(1) C II=0 DO 480 J=1,ND3 ! 385 DO 478 I=1,ND2 ! 481 II=II+1 SDATA(II)=OUT_DATA(I,J,K) 478 CONTINUE 480 CONTINUE C IF(IRADCHK(K).EQ.1)THEN CALL PWOTGM(KFILDO,KFILGO,IP(16),NDATE, 1 NID,ITAUH,ITAUM,MODNO,NSEQ,ISCALE, 2 NPROJ,XLATLL,YLONLL,ORIENT,XMESHL,XLAT,NX,NY, 3 SDATA,IA,IC,IPACK,ND5,MINPK, 4 IS0,IS1,IS2,IS4,ND7, 5 IPLAIN,PLAIN2,NCHAR, 6 XMISSP,XMISSS,LX,IOCTTG, 7 NTOTBG,NTOTRG,L3264B,L3264W,IERG) C IF(IERG.NE.0)THEN WRITE(KFILDO,489)IERG 489 FORMAT(/' ****ERROR IN GRIDDED PACKING ROUTINE PWOTGM'/ 1 ' ERROR VALUE IS ',I2, 2 ' CONSIDER AS FATAL'/ 3 ' STOP IN RADPREP AT 489') CALL W3TAGE('RADPREP') STOP 489 ENDIF ELSE WRITE(KFILDO,490)NID(1) 490 FORMAT(/' ****WARNING: DID NOT PACK RECORD WITH ID, ',I10/) ENDIF 500 CONTINUE ENDIF C GO TO 750 C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C ERROR MESSAGES C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 1. ERROR READING INPUT RADAR DATA C 501 WRITE(KFILDO,502)KFILDK,IPACK(5),IOS,DATRAD 502 FORMAT(/' ****ERROR READING PACKED RADAR RECORDS ON ', 1 'UNIT NO.',I3,' PROCESSING DATE',I11,' IN RADPREP ', 2 'AT 502, IOSTAT =',I5/,' FILE = ',A60) CALL W3TAGE('RADPREP') STOP 502 C C 2. ERROR READING LIGHTNING DATA C 601 WRITE(KFILDO,602)KFILLT,IPACK(5),IOS,DATLIT 602 FORMAT(/' ****ERROR READING PACKED LIGHTNING RECORDS ON ', 1 'UNIT NO.',I3,' PROCESSING DATE',I11,' IN RADPREP ', 2 'AT 602, IOSTAT =',I5/,' FILE = ',A60) CALL W3TAGE('RADPREP') STOP 602 C C 3. PREMATURE END OF READ FOR THE INPUT LIGHTNING DATA C 665 WRITE(KFILDO,667)KFILLT,IPACK(5),IOS,DATLIT 667 FORMAT(/' ****END READING PACKED LIGHTNING DATA RECORDS ON ', 1 'UNIT NO.',I3,' PROCESSING DATE',I11,' IN RADPREP ', 2 'AT 667, IOSTAT =',I5/,' FILE = ',A60) GO TO 750 C C 4. PREMATURE END OF READ FOR THE INPUT RADAR DATA C 685 WRITE(KFILDO,687)KFILDK,IPACK(5),IOS,DATRAD 687 FORMAT(/' ****END READING PACKED RADAR DATA RECORDS ON ', 1 'UNIT NO.',I3,' PROCESSING DATE',I11,' IN RADPREP ', 2 'AT 687, IOSTAT =',I5/,' FILE = ',A60) C C 750 CONTINUE C C RETURN C C ERROR STOP BELOW IS FOR ERRORS OF CONTROL INFORMATION INPUT. C 900 CALL IERX(KFILDO,KFILDO,IOS,'RADPREP ',STATE) CALL W3TAGE('RADPREP') STOP 9999 END