C C PROGRAM TO PERFORM A BASIC DUMP OF THE UKMO CORRELATIVE DATA FILES C OBTAINED FROM THE UARS PROJECT. THE DATA FILES CONTAIN THE FOLLOWING C PARAMETER PROFILES REPRESENTATIVE OF 1200 UTC AND AVAILABLE AT THE C 22 STANDARD UARS PRESSURE LEVELS (1000 TO .316 MB) : C C TEMPERATURE (K) C GEOPOTENTIAL HEIGHT (M) C ZONAL WIND COMPONENT (M/S) C MERIDIONAL WIND COMPONENT (M/S) C VERTICAL VELOCITY OMEGA (PASCALS/S) C C THE FIELDS ARE MAPPED TO A 2.5 DEGREE LATITUDE BY 3.75 DEGREE C LONGITUDE GRID, ORDERED NORTH TO SOUTH, WEST TO EAST, AND STARTING C AT (90N,0E) FOR THE TEMPERATURE AND HEIGHT FIELDS, AND AT C (87.5N, 1.875E) FOR THE WIND FIELDS. THE WIND GRID IS STAGGERED C BY HALF A GRID LENGTH, IMPLYING GRID DIMENSIONS OF (72 X 96) AND C (73 X 96) FOR THE WIND AND TEMPERATURE/HEIGHT FIELDS, RESPECTIVELY. C C ADDITIONAL INFORMATION ON THE UKMO CORRELATIVE DATA FILES CAN BE C FOUND IN THE FOLLOWING ON-LINE UARS DOCUMENTS: ACASM_META.DOC C C THIS PROGRAM IS DESIGNED FOR USE WITH THE TRANSLATED VMS-TO-UNIX C UKMO CORRELATIVE DATA FILES ARCHIVED AT THE GSFC DAAC. IN ORDER TO C USE THIS PROGRAM UNDER VMS WITH THE ORIGINAL CORRELATIVE DATA FILES C RECEIVED FROM THE UARS CDHF, THEN THE OPEN STATEMENT MUST BE C MODIFIED BY REPLACING ACCESS='DIRECT' WITH ACCESS='SEQUENTIAL'. C C AUTHOR : GEORGE SERAFINO C C TO COMPILE THIS PROGAM : C f77 -o READUMP_UKMO_DATA READUMP_UKMO_DATA.F C or for SUN machines C f77 -DSUNF -o READUMP_UKMO_DATA READUMP_UKMO_DATA.F C EXECUTABLE CODE WILL BE NAMED READUMP_UKMO_DATA C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C-------------------------------------------------------------- C PROMPT FOR AND OPEN SPECIFIC UKMO CORRELATIVE META DATA FILE C-------------------------------------------------------------- C .. Local Scalars .. CHARACTER PRNAME*11,DATAFN*170,METAFN*170,CSFDU*86,CORPAR*99, + CUARSH*253,LINE*255 INTEGER I,IRDATA,IROW,J,J1,J2,NUMLAT,NUMLON,NUMREC,RECSIZ INTEGER RLEN REAL PRSLVL,XLAT0,XLNINT,XLON0,XLTINT C .. C .. Local Arrays .. INTEGER IARRAY(45) REAL ARRAY(19),GRID(7008),XLAT(100),XLON(100) C .. DO 666 I = 1,170 DATAFN(I:I) = ' ' 666 CONTINUE C C ** REMOVE THE C-COMMENT BELOW IF USING PROGRAM OUT OF SCRIPT C WRITE (6,FMT=*) ' INPUT UKMO META DATA FILE NAME ' READ (5,FMT='(A)') METAFN C NOTE: RECL IS IN WORDS IN THE NEXT OPEN STATEMENT OPEN (UNIT=20,FILE=METAFN,STATUS='OLD',ERR=991) C SKIP 9 LINES IN META FILE DO 101 IROW = 1,9 READ (20,FMT=50) LINE 101 CONTINUE C GET FILE NAME FROM 10TH LINE OR FROM META DATA FILE NAME READ (20,FMT=50) LINE C DO 112 I = 1,70 C DATAFN(I:I) = LINE(14+I:14+I) C 112 CONTINUE I = 1 DO 777 WHILE (METAFN(I:I).NE.' ') I = I + 1 777 CONTINUE I = I - 4 DO 888 K = 1,I DATAFN(K:K) = METAFN(K:K) 888 CONTINUE DATAFN(I:I+4) = 'PROD' C SKIP ONE LINE READ (20,FMT=50) LINE C GET RECORD SIZE READ (20,FMT=50) LINE 50 FORMAT (A80) READ (LINE(17:21),FMT=303) RECSIZ 303 FORMAT (I5) C CLOSE META FILE CLOSE (20) WRITE (6,FMT=*) ' ' WRITE (6,FMT=*) ' ' WRITE (6,FMT=*) 'FILE:',DATAFN,'.' C---------------------------------------------------------- C NOTE: SGI AND HP READ 4 BYTE WORDS, SUN READS 1 BYTE. C ADDED BY JAMES JOHNSON 09/27/94. C---------------------------------------------------------- #ifndef SUNF RLEN=RECSIZ/4 #endif #ifdef SUNF RLEN=RECSIZ #endif OPEN (UNIT=10,FILE=DATAFN,STATUS='OLD',FORM='UNFORMATTED',ERR=992, + ACCESS='DIRECT',RECL=RLEN) C------------------------------------------------------- C READ SFDU AND HEADER INFORMATION IN FIRST RECORD C------------------------------------------------------- #ifdef SUNF READ (10,REC=1,IOSTAT=IOSTT,END=993) CSFDU,CUARSH,CORPAR #endif #ifndef SUNF READ (10,REC=1,IOSTAT=IOSTT,ERR=993) CSFDU,CUARSH,CORPAR #endif WRITE (6,FMT=*) ' ' WRITE (6,FMT=*) ' ------------------------- ' WRITE (6,FMT=*) ' SFDU INFORMATION FOR FILE ' WRITE (6,FMT=*) ' ------------------------- ' WRITE (6,FMT=*) ' TZ FIELD : ',CSFDU(1:12) WRITE (6,FMT=*) ' LZ FIELD : ',CSFDU(13:20) WRITE (6,FMT=*) ' TI FIELD : ',CSFDU(21:32) WRITE (6,FMT=*) ' LI FIELD : ',CSFDU(33:40) WRITE (6,FMT=*) ' VI FIELD : ',CSFDU(41:86) WRITE (6,FMT=*) ' ' WRITE (6,FMT=*) ' ' WRITE (6,FMT=*) ' -------------------------------- ' WRITE (6,FMT=*) ' UARS HEADER INFORMATION FOR FILE ' WRITE (6,FMT=*) ' -------------------------------- ' WRITE (6,FMT=*) ' PROJECT NAME : ',CUARSH(1:4) WRITE (6,FMT=*) ' UARS PI : ',CUARSH(5:24) WRITE (6,FMT=*) ' UARS CMI : ',CUARSH(25:44) WRITE (6,FMT=*) ' CORR DATA CLASS : ',CUARSH(45:52) WRITE (6,FMT=*) ' INSTRUMENT TYPE : ',CUARSH(53:64) WRITE (6,FMT=*) ' OBS STATION ID : ',CUARSH(65:76) WRITE (6,FMT=*) ' CORR DATA FT ID : ',CUARSH(77:88) WRITE (6,FMT=*) ' FILE START TIME : ',CUARSH(89:111) WRITE (6,FMT=*) ' FILE STOP TIME : ',CUARSH(112:134) WRITE (6,FMT=*) ' MAXIMUM LAT : ',CUARSH(135:141) WRITE (6,FMT=*) ' MINIMUM LAT : ',CUARSH(142:148) WRITE (6,FMT=*) ' MAXIMUM LON : ',CUARSH(149:155) WRITE (6,FMT=*) ' MINIMUM LON : ',CUARSH(156:162) WRITE (6,FMT=*) ' MAXIMUM ALT KM : ',CUARSH(163:170) WRITE (6,FMT=*) ' MINIMUM ALT KM : ',CUARSH(171:178) WRITE (6,FMT=*) ' MAXIMUM ALT MB : ',CUARSH(179:186) WRITE (6,FMT=*) ' MINIMUM ALT MB : ',CUARSH(187:194) WRITE (6,FMT=*) ' RECORD SIZE : ',CUARSH(195:200) WRITE (6,FMT=*) ' NUM REC FILE : ',CUARSH(201:206) WRITE (6,FMT=*) ' DATA QUALITY 1 : ',CUARSH(207:209) WRITE (6,FMT=*) ' DATA QUALITY 2 : ',CUARSH(210:212) WRITE (6,FMT=*) ' USER COMMENTS : ',CUARSH(213:253) WRITE (6,FMT=*) ' ',CORPAR(1:39) WRITE (6,FMT=*) ' CORR PARAM 1 : ',CORPAR(40:51) WRITE (6,FMT=*) ' CORR PARAM 2 : ',CORPAR(52:63) WRITE (6,FMT=*) ' CORR PARAM 3 : ',CORPAR(64:75) WRITE (6,FMT=*) ' CORR PARAM 4 : ',CORPAR(76:87) WRITE (6,FMT=*) ' CORR PARAM 5 : ',CORPAR(88:99) READ (CUARSH(201:206),FMT='(I6)') NUMREC IRDATA = 1 C------------------------------------------------------- C READ DATA RECORDS AND PRINT OUT SUBSAMPLED UKMO DATA C------------------------------------------------------- 10 CONTINUE C---------------------------------------------------------- C NOTE: SGI AND HP USE ERR OPTION, SUN USES END INSTEAD C ADDED BY JAMES JOHNSON 09/27/94. C---------------------------------------------------------- #ifdef SUNF READ (10,REC=IRDATA+1,IOSTAT=IOSTT,END=993) IARRAY,ARRAY,GRID #endif #ifndef SUNF READ (10,REC=IRDATA+1,IOSTAT=IOSTT,ERR=993) IARRAY,ARRAY,GRID #endif WRITE (6,FMT=*) ' ' WRITE (6,FMT=*) ' -------------------------------- ' WRITE (6,FMT=*) ' DATA RECORD NUMBER ',IRDATA WRITE (6,FMT=*) ' -------------------------------- ' WRITE (6,FMT=*) ' YEAR VALID : ',IARRAY(1) WRITE (6,FMT=*) ' MONTH VALID : ',IARRAY(2) WRITE (6,FMT=*) ' DAY VALID : ',IARRAY(3) WRITE (6,FMT=*) ' HOUR VALID : ',IARRAY(4) WRITE (6,FMT=*) ' MINUTE VALID : ',IARRAY(5) WRITE (6,FMT=*) ' TIME INDICATOR : ',IARRAY(13) WRITE (6,FMT=*) ' FORECAST PERIOD : ',IARRAY(14) WRITE (6,FMT=*) ' HEMISPHERE : ',IARRAY(17) WRITE (6,FMT=*) ' NUMBER ROWS : ',IARRAY(18) WRITE (6,FMT=*) ' NUMBER COLS : ',IARRAY(19) WRITE (6,FMT=*) ' FIELD CODE : ',IARRAY(23) WRITE (6,FMT=*) ' VERT COORD TYPE : ',IARRAY(26) WRITE (6,FMT=*) ' LEVEL VALUE : ',ARRAY(7) WRITE (6,FMT=*) ' DATUM VALUE : ',ARRAY(5) WRITE (6,FMT=*) ' LAT ZEROTH ROW : ',ARRAY(14) WRITE (6,FMT=*) ' LAT INTERVAL : ',ARRAY(15) WRITE (6,FMT=*) ' LON ZEROTH POINT: ',ARRAY(16) WRITE (6,FMT=*) ' LON INTERVAL : ',ARRAY(17) WRITE (6,FMT=*) ' MISS DATA INDIC : ',ARRAY(18) WRITE (6,FMT=*) ' MKS SCALE FACTOR: ',ARRAY(19) WRITE (6,FMT=*) ' ' C------------------------------------------------------- C OBTAIN GEOPHYSICAL PARAMETER TYPE FOR THE RECORD C------------------------------------------------------- IF (IARRAY(23).EQ.1) PRNAME = 'HEIGHT ' IF (IARRAY(23).EQ.16) PRNAME = 'TEMPERATURE' IF (IARRAY(23).EQ.48) PRNAME = 'ZONAL WIND ' IF (IARRAY(23).EQ.56) PRNAME = 'ZONAL WIND ' IF (IARRAY(23).EQ.49) PRNAME = 'MERID WIND ' IF (IARRAY(23).EQ.57) PRNAME = 'MERID WIND ' IF (IARRAY(23).EQ.40) PRNAME = 'OMEGA ' C------------------------------------------------------- C OBTAIN PRESSURE ALTITUDE FOR THE RECORD C------------------------------------------------------- PRSLVL = ARRAY(7) C------------------------------------------------------- C OBTAIN SPATIAL GRID CHARACTERISTICS FOR THE RECORD C------------------------------------------------------- NUMLAT = IARRAY(18) NUMLON = IARRAY(19) XLAT0 = ARRAY(14) XLON0 = ARRAY(16) XLTINT = ARRAY(15) XLNINT = ARRAY(17) DO 111 I = 1,NUMLAT XLAT(I) = XLAT0 + I*XLTINT 111 CONTINUE DO 222 J = 1,NUMLON XLON(J) = XLON0 + J*XLNINT 222 CONTINUE C------------------------------------------------------- C WRITE OUT SUBSAMPLED PARAMETER VALUES FORTHE RECORD C------------------------------------------------------- WRITE (6,FMT=100) PRNAME,PRSLVL, (XLON(J),J=1,NUMLON,14) 100 FORMAT (19X,' SUBSAMPLED UKMO PARAMETER ',A11,' AT LEVEL',F8.2, + ' MB',/,/,10X,7F10.3,/,10X,70 ('-')) DO 333 I = 1,NUMLAT,4 J1 = (I-1)*NUMLON + 1 J2 = J1 + NUMLON - 1 WRITE (6,FMT=110) XLAT(I), (GRID(J),J=J1,J2,14) 110 FORMAT (F8.2,1X,'|',7F10.3) 333 CONTINUE IRDATA = IRDATA + 1 IF ( IRDATA .LT. NUMREC ) THEN GO TO 10 ELSE GO TO 999 END IF C------------------------------------------------------- C FINISHED READING UKMO CORRERLATIVE DATA FILE C------------------------------------------------------- 991 CONTINUE WRITE (6,FMT=*) ' CAN NOT OPEN META DATA FILE ' GO TO 999 992 CONTINUE WRITE (6,FMT=*) ' CAN NOT OPEN DATA FILE ' GO TO 999 993 CONTINUE WRITE (6,FMT=*) ' ' CLOSE (10) WRITE (6,FMT=*) ' NUMBER OF DATA RECORDS IN FILE WAS ',IRDATA GO TO 999 999 CONTINUE WRITE (6,FMT=*) ' TOTAL NUMBER OF DATA RECORDS :', IRDATA-1 STOP END