SUBROUTINE POST88(KFILDO,XDATA,NVAL,TLO,SETLO,THI,SETHI, 1 CONST,NSCAL,SET,PM,IER) C C MARCH 2011 GLAHN MDL MOS-2000 C ADAPTED FROM OCTOBER 2008 POST C TO INCLUDE SET AND PM C MAY 2011 GLAHN CHANGED GO TO 150 TO GO TO 125; C INSERTED STATEMENT NUMBER 125, C CHANGED FORMAT 125 TO 135; C REMOVED IF(PM.NE.0)THEN C C PURPOSE C TO POSTPROCESS A VARIABLE. THE VARIABLE IN XDATA( ) C IS SET TO XDATA( )*CONST*10**NSCAL AFTER SETTING C ALL VALUES LT TLO TO SETLO AND ALL VALUES GT THI C TO SETHI. THIS ROUTINE CAN BE USED FOR DISPOSABLE OR c ARCHIVE GRIDS. WHEN TLO LE -9999., THE LOW VALUE WILL c NOT BE MODIFIED. WHEN THI GE +9999., THE HIGH VALUE WILL C NOT BE MODIFIED. C C ALL VALUES GT SET + PM WILL BE SET TO 888. ALL VALUES C NOT MEETING THIS CRITERION BUT GT SET WILL BE SET TO SET. C THIS CAPABILITY IS FOR SETTING CEILING HEIGHTS TO 888 C (CODE FOR UNLIMITED) WHEN THE VALUE IS ABOVE 120 C (12,000 FT, THE LIMIT OF OBSERVATIONS) BY SOME AMOUNT C BUT TO LEAVE THE CAPABILITY FOR 120. C C DATA SET USE C KFILDO - UNIT NUMBER OF OUTPUT (PRINT) FILE. (OUTPUT) C C VARIABLES C KFILDO = UNIT NUMBER OF OUTPUT (PRINT) FILE. (INPUT) C XDATA(K) = THE DATA TO PROCESS (K=1,NVAL). (INPUT-OUTPUT) C NVAL = THE NUMBER OF VALUES IN XDATA( ) BEING DEALT C WITH. (INPUT) C TLO = LOW THRESHOLD. WHEN A LAST PASS GRIDPOINT IS C LT TLO, IT IS SET TO SETLO, THEN CONST C AND NSCAL APPLIED. (INPUT) C SETLO = SEE TLO. (INPUT) C THI = HIGH THRESHOLD. WHEN A LAST PASS GRIDPOINT IS C GT THI, IT IS SET TO SETHI, THEN CONST C AND NSCAL APPLIED. (INPUT) C SETHI = SEE THI. (INPUT) C CONST = ADDITIVE CONSTANT. (INPUT) C NSCAL = SCALING CONSTANT. (INPUT) C SET = SPECIFIC VALUE TO EMPHASIZE. ALL VALUES C GREATER THAN SET + PM WILL BE SET TO 888. C VALUES GREATER THAN SET, BUT LESS THAN C SET + PM WILL BE SET TO SET. (INPUT) C PM = SEE SET. (INPUT) C IER = ERROR RETURN. C 0 = GOOD RETURN. C (OUTPUT) C 1 2 3 4 5 6 7 X C C NONSYSTEM SUBROUTINES USED C NONE C DIMENSION XDATA(NVAL) C D CALL TIMPR(KFILDO,KFILDO,'START POST88 ') IER=0 C D WRITE(KFILDO,102)TLO,SETLO,THI,SETHI,CONST,NSCAL,SET,PM D102 FORMAT(/' AT 102 IN POST88--TLO,SETLO,THI,SETHI,CONST,NSCAL,', D 1 'SET,PM',5F10.4,I4,2F10.4) C FACTOR=CONST*10.**NSCAL SETLOF=SETLO*FACTOR SETHIF=SETHI*FACTOR C IF(TLO.LE.-9998.5.AND. 1 THI.GE.+9998.5)THEN C IF(CONST.EQ.1..AND. 1 NSCAL.EQ.0)THEN C THERE IS NO CHANGE TO BE MADE TO XDATA( ). GO TO 125 C ELSE C C ONLY SCALING IS NECESSARY. C DO 110 K=1,NVAL C IF(NINT(XDATA(K)).NE.9999)THEN XDATA(K)=XDATA(K)*FACTOR ENDIF C 110 CONTINUE C ENDIF C ELSE C C FULL TREATMENT NECESSARY. C DO 120 K=1,NVAL C IF(NINT(XDATA(K)).NE.9999)THEN C IF(XDATA(K).LT.TLO)THEN XDATA(K)=SETLOF ELSEIF(XDATA(K).GT.THI)THEN XDATA(K)=SETHIF ELSE XDATA(K)=XDATA(K)*FACTOR ENDIF C ENDIF C 120 CONTINUE C ENDIF C 125 DO 130 K=1,NVAL C IF(XDATA(K).LT.9998.5)THEN C IF(XDATA(K).GT.SET+PM)THEN XDATA(K)=888. ELSEIF(XDATA(K).GT.SET)THEN XDATA(K)=SET ENDIF C ENDIF C 130 CONTINUE C D WRITE(KFILDO,135)(XDATA(K),K=1,NVAL) D135 FORMAT(/,' IN POST88--XDATA(K)',/,(15F8.2)) D CALL TIMPR(KFILDO,KFILDO,'END POST88 ') C 150 RETURN END