NCEPLIBS-w3emc  2.9.2
w3trnarg.f
Go to the documentation of this file.
1 C> @file
2 C . . . .
3 C> SUBPROGRAM: W3TRNARG TRANSLATES ARG LINE FROM STANDARD INPUT
4 C> PRGMMR: KEYSER ORG: NP22 DATE: 2002-02-11
5 C>
6 C> ABSTRACT: READS ARGUMENT LINES FROM STANDARD INPUT AND OBTAINS ,
7 C> SUBDIRECTORY, BUFR TANKNAME, CHARACTERS TO APPEND FOR ADDING
8 C> AN ORBIT, AND OPTIONS FOR LIMITING THE TIME WINDOW.
9 C>
10 C> PROGRAM HISTORY LOG:
11 C> 1996-09-03 B. KATZ -- ORIGINAL AUTHOR
12 C> 1998-11-27 B. KATZ -- CHANGES FOR Y2K AND FORTRAN 90 COMPLIANCE
13 C> 2002-02-11 D. KEYSER -- IF "TLFLAG" IS NOT SPECIFIED, IT DEFAULTS
14 C> TO "NOTIMLIM" RATHER THAN "TIMLIM" AND
15 C> GROSS TIME LIMITS WILL NOT BE CALCULATED
16 C> AND RETURNED IN "IYMDHB" AND "IYMDHE"
17 C>
18 C> USAGE: CALL W3TRNARG(SUBDIR,LSUBDR,TANKID,LTNKID,APPCHR,LAPCHR,
19 C> TLFLAG,IYMDHB,IYMDHE,IERR)
20 C> OUTPUT ARGUMENT LIST:
21 C> SUBDIR - NAME OF SUB-DIRECTORY INCLUDING BUFR DATA TYPE WHERE
22 C> BUFR DATA TANK IS LOCATED.
23 C> LSUBDR - NUMBER OF CHARACTERS IN 'SUBDIR'.
24 C> TANKID - NAME OF FILE INCLUDING BUFR DATA SUB-TYPE CONTAINING
25 C> BUFR DATA TANK.
26 C> LTNKID - NUMBER OF CHARACTERS IN 'TANKID'.
27 C> APPCHR - CHARACTERS TO BE APPENDED TO 'TANKID' GIVING A
28 C> UNIQUELY NAMED FILE TO CONTAIN THE ORIGINAL TANK
29 C> WITH ONE ORBIT APPENDED TO IT.
30 C> LAPCHR - NUMBER OF CHARACTERS IN 'APPCHR'.
31 C> TLFLAG - 8 CHARACTER FLAG INDICATING WHETHER TIME ACCEPTANCE
32 C> CHECKS ATRE TO BE PERFORMED.
33 C> = 'TIMLIM ' : PERFORM TIME ACCEPTANCE CHECKS.
34 C> = 'NOTIMLIM' : DO NOT PERFORM TIME ACCEPTANCE CHECKS.
35 C> JDATE AND KDATE ARE DISREGARDED.
36 C> IYMDHB - START OF TIME ACCEPTANCE WINDOW, IN FORM YYYYMMDDHH.
37 C> IYMDHE - END OF TIME ACCEPTANCE WINDOW, IN FORM YYYYMMDDHH.
38 C>
39 C> INPUT FILES :
40 C> UNIT 05 - STANDARD INPUT FOR PASSING IN ARGUMENTS. ARGUMENTS
41 C> (FOR LIST-DIRECTED I/O) ARE AS FOLLOWS :
42 C> RECORD 1 - (1) SUBDIRECTORY. CONTAINS BUFR DATA TYPE
43 C> (2) TANKFILE. CONTAINS BUFR DATA SUB-TYPE
44 C> (3) APPEND CHARACTERS. APPENDED TO TANKFILE
45 C> TO GIVE UNIQUE OUTPUT FILE NAME.
46 C> (4) DATE IN YYYYMMDDHH FORMAT.
47 C> NEXT THREE RECORDS ARE OPTIONAL :
48 C> RECORD 2 - (1) TIME LIMIT FLAG. MAY BE EITHER
49 C> 'TIMLIM ' OR 'NOTIMLIM'. SEE
50 C> DESCRIPTION OF 'TLFLAG' ABOVE.
51 C> (DEFAULT IS 'NOTIMLIM')
52 C> RECORD 3 - (1) HOURS BEFORE CURRENT TIME.
53 C> RECORD 4 - (1) HOURS AFTER CURRENT TIME.
54 C> IF 'TIMLIM ' IS SPECIFIED IN RECORD 2, THE
55 C> QUANTITIES IN RECORDS 3 AND 4 ARE USED TO
56 C> COMPUTE THE LIMITS OF THE TIME ACCEPTANCE WINDOW.
57 C> IF RECORDS 3 AND 4 ARE OMITTED, THE VALUES
58 C> DEFAULT TO -48 (48 HOURS BEFORE CURRENT TIME)
59 C> AND +12 (12 HOURS AFTER CURRENT TIME).
60 C> IF 'NOTIMLIM ' IS SPECIFIED IN RECORD 2, THEN
61 C> THESE QUANTITIES ARE NOT USED REGARDLESS OF WHETHER
62 C> OR NOT THEY WERE SPECIFIED.
63 C>
64 C> SUBPROGRAMS CALLED :
65 C> W3LIB - W3MOVDAT
66 C>
67 C> REMARKS:
68 C>
69 C> ATTRIBUTES:
70 C> LANGUAGE: FORTRAN 90
71 C> MACHINE: IBM-SP
72 C>
73  SUBROUTINE w3trnarg(SUBDIR,LSUBDR,TANKID,LTNKID,APPCHR,LAPCHR,
74  1 TLFLAG,IYMDHB,IYMDHE,IERR)
75  CHARACTER*(*) SUBDIR,TANKID,APPCHR,TLFLAG
76  INTEGER IDATIN(8),IDTOUT(8)
77  REAL TIMINC(5)
78  READ(5,*,END=9999) SUBDIR,TANKID,APPCHR,iymdh
79  msubdr = len(subdir)
80  DO lsubdr=0,msubdr-1
81  IF(subdir(lsubdr+1:lsubdr+1).EQ.' ') GO TO 10
82  ENDDO
83  lsubdr = msubdr
84  10 CONTINUE
85  IF(lsubdr.LT.4) THEN
86  WRITE(6,'(1X,I2,'' CHARACTERS IN SUBDIRECTORY ARGUMENT'',
87  1 '' AT LEAST 4 CHARACTERS ARE REQUIRED'')') lsubdr
88  ierr = 2
89  RETURN
90  ENDIF
91  mtnkid = len(tankid)
92  DO ltnkid=0,mtnkid-1
93  IF(tankid(ltnkid+1:ltnkid+1).EQ.' ') GO TO 20
94  ENDDO
95  ltnkid = mtnkid
96  20 CONTINUE
97  IF(ltnkid.LT.4) THEN
98  WRITE(6,'(1X,I2,'' CHARACTERS IN TANKFILE ARGUMENT'',
99  1 '' AT LEAST 4 CHARACTERS ARE REQUIRED'')') ltnkid
100  ierr = 2
101  RETURN
102  ENDIF
103  mapchr = len(appchr)
104  DO lapchr=0,mapchr-1
105  IF(appchr(lapchr+1:lapchr+1).EQ.' ') GO TO 30
106  ENDDO
107  lapchr = mapchr
108  30 CONTINUE
109  tlflag = 'NOTIMLIM' ! The default is to NOT perform time checks
110  READ(5,*,END=40) tlflag
111  40 CONTINUE
112  IF(tlflag(1:6).NE.'TIMLIM') THEN
113  tlflag = 'NOTIMLIM'
114  print 123, iymdh,subdir(1:lsubdr),tankid(1:ltnkid)
115  123 FORMAT(/'RUN ON ',i10/'WRITE TO ',a,'/',a/'GROSS TIME LIMIT ',
116  1 'CHECKS ARE NOT PERFORMED HERE - SUBSEQUENT PROGRAM ',
117  1 'BUFR_TRANJB WILL TAKE CARE OF THIS'/)
118  iymdhb = 0000000000
119  iymdhe = 2100000000
120  ierr = 0
121  RETURN
122  ENDIF
123  tlflag(7:8) = ' '
124  READ(5,*,END=60) ihrbef
125  GO TO 70
126  60 CONTINUE
127  ihrbef = -48
128  ihraft = 12
129  GO TO 100
130  70 CONTINUE
131  READ(5,*,END=80) ihraft
132  GO TO 90
133  80 CONTINUE
134  ihraft = 12
135  GO TO 100
136  90 CONTINUE
137  IF(ihrbef.GT.0 .AND. ihraft.LT.0) THEN
138  itemp = ihrbef
139  ihrbef = ihraft
140  ihraft = itemp
141  ELSE IF(ihrbef.GT.0) THEN
142  ihrbef = -1 * ihrbef
143  ENDIF
144  100 CONTINUE
145  idatin(1) = iymdh / 1000000
146  idatin(2) = mod(iymdh,1000000) / 10000
147  idatin(3) = mod(iymdh,10000) / 100
148  idatin(4) = 0
149  idatin(5) = mod(iymdh,100)
150  idatin(6:8) = 0
151  timinc(1) = 0.0
152  timinc(2) = float(ihrbef)
153  timinc(3:5) = 0.0
154  CALL w3movdat(timinc,idatin,idtout)
155  iymdhb = ((idtout(1) * 100 + idtout(2)) * 100 + idtout(3)) *
156  1 100 + idtout(5)
157  timinc(2) = float(ihraft)
158  CALL w3movdat(timinc,idatin,idtout)
159  iymdhe = ((idtout(1) * 100 + idtout(2)) * 100 + idtout(3)) *
160  1 100 + idtout(5)
161  print 124, iymdh,subdir(1:lsubdr),tankid(1:ltnkid),iymdhb,iymdhe
162  124 FORMAT(/'RUN ON ',i10/'WRITE TO ',a,'/',a/'ACCEPT BETWEEN ',i10,
163  1 ' AND ',i10/)
164  ierr = 0
165  RETURN
166  9999 CONTINUE
167  WRITE(6,'('' INSUFFICIENT NO. OF ARGUMENTS TO BUFR '',
168  1 ''TRANSLATION PROCEDURE - AT LEAST 4 ARE NEEDED'')')
169  ierr = 1
170  RETURN
171  END
w3trnarg
subroutine w3trnarg(SUBDIR, LSUBDR, TANKID, LTNKID, APPCHR, LAPCHR, TLFLAG, IYMDHB, IYMDHE, IERR)
SUBPROGRAM: W3TRNARG TRANSLATES ARG LINE FROM STANDARD INPUT PRGMMR: KEYSER ORG: NP22 DATE: 2002-02-1...
Definition: w3trnarg.f:75