C ===================================================================== C pgm: SHOZE1 .. Adjust date to output zulu time, output to binary file C C use: CALL SHOZE1(KHAR,KHPOS,IUNIT,INTVAL,ITMSER, C use: NYR,NMO,NDA,NHR,NMN,NSE) C C in: (vars) .... output variables described elsewhere C C rqd: SH3ADY,SH3ADH,SH2LOC,SH2ADJ,SHSAVM,SHSAVL,SHSAVS C ===================================================================== SUBROUTINE SHOZE1(KHAR,KHPOS,IUNIT,INTVAL,ITMSER, $ NYR,NMO,NDA,NHR,NMN,NSE) EXTERNAL SH3ADY,SH3ADH,SH2LOC,SH2ADJ,SHSAVM,SHSAVL,SHSAVS INTEGER KHPOS,IUNIT,INTVAL,ITMSER,LSVG,NEWADJ INTEGER MYR,MMO,MDA,MHR,MMN,MSE,MEN,III INTEGER NYR,NMO,NDA,NHR,NMN,NSE CHARACTER*1 KHAR C C ================================= RCS keyword statements ========== CHARACTER*68 RCSKW1,RCSKW2 DATA RCSKW1,RCSKW2 / ' .$Source: /fs/hseb/ob5/rfc/ofs/src/shefpars_driv/RCS/shoze1.f,v $ . $', ' .$Id: shoze1.f,v 1.1 1995/11/29 22:21:50 dws Exp $ . $' / C =================================================================== C C Date relative and time increment calculations C 'ITMSER' = 1 for first time series pass, then = 2 IF (KHPOS.NE.1 .AND. ITMSER.EQ.0) THEN ITMSER = 1 CALL SHSAVL('G',III,NYR,NMO,NDA,NHR,NMN,NSE) CALL SHSAVM('G',III,MYR,MMO,MDA,MHR,MMN,MSE,MEN) CALL SHSAVS('G',III,LSVG) C Do relative adjustment for yr-mon-day, local time C Convert to zulu if necessary (DIHxx, DINxx, DISxx) IF (MYR.NE.0 .OR. MMO.NE.0 .OR. MDA.NE.0) THEN CALL SH3ADY(KHAR,KHPOS,NYR,NMO,NDA,NHR,NMN,NSE) IF ((IUNIT.LT.3 .OR. IUNIT.EQ.7) .AND. LSVG.EQ.1) THEN CALL SH2LOC(KHAR,KHPOS,NYR,NMO,NDA,NHR,NMN,NSE,NEWADJ,0) CALL SH2ADJ(KHAR,KHPOS,NYR,NMO,NDA,NHR,NMN,NSE,NEWADJ,1) ENDIF C Do relative adjustment for hr-min, zulu if necessary C Convert back to local if (DIYx, DIMx, DIDx, DIEx) ELSEIF (MHR.NE.0 .OR. MMN.NE.0 .OR. MSE.NE.0) THEN CALL SH2LOC(KHAR,KHPOS,NYR,NMO,NDA,NHR,NMN,NSE,NEWADJ,0) CALL SH2ADJ(KHAR,KHPOS,NYR,NMO,NDA,NHR,NMN,NSE,NEWADJ,1) CALL SH3ADH(KHAR,KHPOS,NYR,NMO,NDA,NHR,NMN,NSE,MHR,MMN,MSE) IF ((IUNIT.GE.3 .AND. IUNIT.NE.7) .OR. LSVG.EQ.0) THEN CALL SH2LOC(KHAR,KHPOS,NYR,NMO,NDA,NHR,NMN,NSE,NEWADJ,1) CALL SH2ADJ(KHAR,KHPOS,NYR,NMO,NDA,NHR,NMN,NSE,-NEWADJ,1) ENDIF C No date relatives, make sure time zone is correct ELSEIF ((IUNIT.LT.3 .OR. IUNIT.EQ.7) .AND. LSVG.EQ.1) THEN CALL SH2LOC(KHAR,KHPOS,NYR,NMO,NDA,NHR,NMN,NSE,NEWADJ,0) CALL SH2ADJ(KHAR,KHPOS,NYR,NMO,NDA,NHR,NMN,NSE,NEWADJ,1) ENDIF ELSE ITMSER = 2 C Now do the time increment, should be in correct C time zone at this stage CALL SH2ADJ(KHAR,KHPOS,NYR,NMO,NDA,NHR,NMN,NSE,INTVAL,IUNIT) ENDIF RETURN END