NCEPLIBS-w3emc  2.11.0
w3fq07.f
Go to the documentation of this file.
1 C> @file
2 C> @brief Sends fax,varian,afos,awips, maps & bulls
3 C> @author Peter Henrichsen @date 1997-01-09
4 
5 C> Sets up the arguments for sub dbn_alert which posts transmission
6 C> availability to various statfiles. The input key words for w3fq07() may be
7 C> read in via the parm field or from a data card see remarks for examples.
8 C>
9 C> ### Program History Log:
10 C> Date | Programmer | Comments
11 C> -----|------------|---------
12 C> 1997-01-09 | Peter Henrichsen | Initial
13 C>
14 C> @param[in] LPARM Character*1 100 byte array containing ascii
15 C> flags and key words.
16 C> @param[in] NUMBYT Integer number of bytes of ascii data in lparm.
17 C> @param[in] OUTFIL Integer unit number of file to post to the
18 C> telecommunications gateway computer system.
19 C> @param[in] CARDFIL Integer unit number of file to read to get data
20 C> control card in lue of parm. this is only necessary
21 C> when parm(5:5) = 'a'.
22 C> @param[out] KRTN See return conditions.
23 C> Return conditions:
24 C> KRTN = 0 good return, file posted for transmission
25 C> KRTN = 1 good return, file not posted for transmission test flag was on ie
26 C> k=test or there was an "n" the 1st byte of the input data card.
27 C> KRTN = 2 bad return, posting not attempted, the "k" key was missing.
28 C> KRTN = 3 bad return, posting not attempted, parm less than than 6 bytes.
29 C> KRTN = 4 bad return, card reader empty.
30 C> KRTN = 5 bad return, error return from sub dbn_alert.
31 C>
32 C> FTNNF001 - File that contains the data to send. where 'nn' can be any
33 C> number from 01 to 99 except 5 or 6. This file must be assigned with u:nn.
34 C>
35 C> FTXXF001 - Input cards, only necessary if lparm(3-6) ='card'. a sample data
36 C> card is: m=ft24f001,k=afos (all on one card starting in col 1).
37 C> If col 1 = 'n' then the data set is not posted to the monitior,ie., w3fq07()
38 C> will return to calling program with out sending the product.
39 C> (xx has default of 05. however this number can be any unit number you wish.
40 C>
41 C> @note The key words that are passed to sub in lparm may be in any order in
42 C> the lparm array or data card. there is one key word that is mandatory. they are:
43 C> K=KKKKKKK Where KKKKKKKK is up to a 24 byte ascii keyword left-justified
44 C> which identifies what dbnet is to do with the input data file.
45 C>
46 C> 'KKKKKKKK' Is generally a keyword such as: 'FAXX', 'TRAN','AFOS','AWIP'
47 C> but may be: any one of these type-keys.
48 C>
49 C> Type-keys | Functions
50 C> ----------|----------
51 C> AFOS | Posts AFOS utf map file to CRAY OSO'S statusfile.
52 C> AWIP | Posts AWIPS map file to CRAY OSO'S statusfile.
53 C> FAXX | Posts nmc6bit map file to CRAY OSO'S statusfile.
54 C> GRIB | Posts wmo grib file to CRAY OSO'S statusfile.
55 C> TRAN | Posts wmo bulletin file to CRAY OSO'S statusfile.
56 C> XTRN | Posts xtrn file to CRAY OSO'S statusfile.
57 C> IG_DATA_ipsa1 | Sends data file to the intergraph ipsa1.
58 C> IG_DATA_ipsa2 | Sends data file to the intergraph ipsa2.
59 C> IG_DATA_lzr_srv1 | Sends data file to the intergraph lzr_srv1.
60 C> IG_PLTF_ipsa1 | Sends AFOS plot file to the intergraph ipsa1.
61 C> IG_PLTF_ipsa2 | Sends AFOS plot file to the intergraph ipsa2.
62 C> IG_PLTF_lzr_srv1 | Sends AFOS plot file to the intergraph lzr_srv1.
63 C> IG_6BIT_lzr_srv1 | Sends nmc6bit file to the intergraph lzr_srv1.
64 C> TPC_6BIT_nhc-hp13 | Sends nmc6bit file to nhc-hp13 at TPC.
65 C> OSO_IG_6BIT_lzr_srv1 | Posts nmc6bit file to CRAY OSO'S statusfile and then Sends nmc6bit file to the intergraph lzr_srv1.
66 C> OSO_TPC_6BIT_nhc-hp13 | Posts nmc6bit file to CRAY OSO'S statusfile and then Sends nmc6bit file to nhc-hp13 at TPC.
67 C>
68 C> Where outfil is the file number containg the data.
69 C>
70 C> A sample: M=PETERS,K=FAXX where A ',' or A ' ' Terminates the key word.
71 C> Where a comma or blank terminates the key word.
72 C>
73 C> The M= is an optional key word. the 'M' key word is the model name
74 C> if missing the "missing" is used other wise it may by any
75 C> 24 byte ASCII string.
76 C>
77 C> A sample: M=AVN,K=AFOS, where a comma or blank terminates the key word.
78 C>
79 C> @author Peter Henrichsen @date 1997-01-09
80  SUBROUTINE w3fq07(LPARM,NUMBYT,OUTFIL,CARDFIL,KRTN)
81 C
82 C
83  CHARACTER*(*) LPARM
84 C
85  CHARACTER*80 BLNK80
86  CHARACTER*80 FILNAM
87  CHARACTER*80 OUTXT
88  CHARACTER*80 STRING
89 
90 C
91  CHARACTER*55 CHTEST
92  DATA chtest
93  1/'THIS WAS A TEST, PRODUCTS NOT POSTED FOR TRANSMISSION.:'/
94 C '1234567890123456789012345678901234567890123456789012345
95 C
96  CHARACTER*52 NOTSNT
97  DATA notsnt
98  1 /'** FILE NOT POSTED FOR TRANSMISSION AVAILABILITY **:'/
99 C '1234567890123456789012345678901234567890123456789012'/
100 C
101 
102  CHARACTER*52 MESAG1
103  DATA mesag1
104  1 /'FILE NOT POSTED FOR TRANSMISSION, FOUND BYPASS FLAG:'/
105 C 1 /'1234567890123456789012345678901234567890123456789012/
106  CHARACTER*56 MESAG2
107  DATA mesag2
108  1 /'FILE NOT POSTED FOR TRANSMISSION, "K" KEY FLAG MISSINGS:'/
109 C 1 /'12345678901234567890123456789012345678901234567890123456
110  CHARACTER*46 MESAG3
111  DATA mesag3
112  1 /'ERROR W3FQ07, LESS THAN 6 BYTES IN PARM FIELD:'/
113 C 1 /'12345678901234567890123456789012345678901234567890123456'/
114 
115  CHARACTER*55 MESAG4
116  DATA mesag4
117  1 /'ERROR W3FQ07, CARD FILE EMPTY. CHECK JCL CARD FIILE :'/
118  CHARACTER*42 MESAG5
119  DATA mesag5
120  1 /'ERROR RETURN FROM SUB DBN_ALERT,RETURN= :'/
121 C 1 /'12345678901234567890123456789012345678901234567890123456'/
122 C
123  CHARACTER*40 BLNK40
124  DATA blnk40
125  1 /' '/
126  CHARACTER*24 BUFFER
127  DATA buffer/' '/
128  CHARACTER*24 JOBNAM
129  DATA jobnam/'UNKOWN '/
130 C
131  CHARACTER*12 CTEXT
132  CHARACTER*4 CPLMIZ
133  DATA cplmiz /'L999'/
134 C
135  CHARACTER*04 LTRS
136  DATA ltrs /'K=M='/
137 C
138  CHARACTER*24 BLANK
139  DATA blank /' '/
140 
141  CHARACTER*24 IFAXX
142  DATA ifaxx /'FAXX '/
143 
144  CHARACTER*24 KEYWRD
145  CHARACTER*24 MODNAM
146 C
147  CHARACTER*4 AWIP
148  DATA awip /'AWIP'/
149  CHARACTER*4 IFAX
150  DATA ifax /'FAX '/
151 
152 C
153  CHARACTER*1 IQUOT
154 C
155  DATA inunit /5/
156  INTEGER CARDFIL
157  INTEGER OUTFIL
158  INTEGER NK,NM,NJ,NF,KRET4
159 C
160 
161  LOGICAL*1 BYPASS
162  LOGICAL*1 GOTFLN
163  LOGICAL*1 GOTKEY
164  LOGICAL*1 GOTMOD
165  LOGICAL*1 GOTJOB
166  LOGICAL*1 LCARDS
167  LOGICAL*1 KPRINT
168 C
169  iquot = char(27)
170  blnk80 = blnk40//blnk40
171 C
172 C
173  WRITE(6,fmt='('' USING W3FQ07 CRAY VERSION 97.008 08:40.'')')
174 C
175 C . . . PICKUP PARAMETERS.
176 C
177 C . . . CHECK TO SEE IF BYTE COUNT LESS THAN 6 IF SO PRODUCT NOT SENT.
178 C
179  IF(numbyt.LT.6) THEN
180 C
181 C . . . BYTE COUNT LESS THAN 6.
182 C
183  krtn = 3
184  WRITE(6,fmt='('' W3FQ07: '',A)') notsnt(1:52)
185  WRITE(6,fmt='('' W3FQ07: '',A)') mesag3(1:46)
186  CALL consol(notsnt)
187  CALL consol(mesag3)
188  ELSE
189 
190 C
191 C . . . BYTE COUNT GREATER THAN OR EQUAL TO 6,
192 C . . . START TO PROCESS FLAGS
193 C
194 C
195  lcards = .false.
196  gotkey = .false.
197  gotmod = .false.
198  gotjob = .false.
199  gotfln = .false.
200 
201  IF(lparm(5:5).EQ.'A') lcards = .true.
202 C
203 C . . . . FILL KEYS WITH BLANKS.
204 C
205  IF(lcards)THEN
206 C
207  numbyt = 80
208 C
209 C . . . BLANK OUT LPARM.............................
210 C
211  lparm(1:numbyt) = blnk80(1:numbyt)
212 C
213 C . . . READ DATA CARD TO GET DATA KEYWORDS TO SEND.
214 C
215 C CHECK TO SEE IF CARDFIL IS GOOD
216 C
217  IF(cardfil.GT.0)THEN
218  ELSE
219  cardfil = inunit
220  ENDIF
221  WRITE(6,fmt='('' W3FQ07: READING CARD FROM UNIT '',
222  1 I4)') cardfil
223  READ(cardfil,fmt='(80A1)',END=940)
224  1 (lparm(i:i),i=1,numbyt)
225 C
226  WRITE(6,fmt='('' W3FQ07: PARM='',
227  1 A)')lparm(1:numbyt)
228 C
229 C CHECK TO SEE IF INTERFACE OFF FLAG IS SET....
230 C . . . . IF THERE IS AN 'N' IN THE 1ST COL OF DATA CARD CALL TO
231 C DBN_ALERT WILL BE BYPASSED.
232 C
233  IF(lparm(1:1).EQ.'N') bypass = .true.
234 C
235 C
236 C CHECK TO SEE IF EXTRA PRINT FLAG IS SET....
237 C . . . . IF THERE IS AN 'P' IN THE 1ST COL OF DATA CARD
238 C TURN ON 'KPRNT' FLAG.
239 C
240  kprint = .false.
241  IF(lparm(1:1).EQ.'P') kprint = .true.
242  ENDIF
243  IF(kprint)THEN
244  WRITE(6,fmt='('' PARM='',A)') lparm(1:numbyt)
245  ENDIF
246 C
247  IF(bypass)THEN
248  WRITE(6,fmt='(1H0,A)')mesag1(1:52)
249  krtn = 7
250  CALL consol(mesag1)
251  ELSE
252  IF(.NOT.lcards)
253  1 WRITE(6,fmt='('' PARM='',A)') lparm(1:numbyt)
254  num = 0
255  DO 840 lk = 1,10,2
256 C
257  DO 820 mm = 1,numbyt
258 C
259  next = mm+1
260  IF(lparm(mm:next).EQ.ltrs(lk:lk+1))THEN
261  kstart = next + 1
262  loc = next + 1
263 C WRITE(6,FMT='('' FOUND'',A,'' AT LOC '',I3,
264 C 1 '' AND WILL START SEARCHING AT'',I4,'' IN ARRAY '',
265 C 2 ''OF LENGHT'',I4)')LPARM(MM:NEXT),MM,KSTART,NUMBYT
266 C
267  lloc = 0
268  DO 8010 ni = kstart,numbyt
269  loc = ni
270  IF(lparm(ni:ni).EQ.',')THEN
271  ELSE IF(lparm(ni:ni).EQ.iquot)THEN
272  ELSE IF(lparm(ni:ni).EQ.' ')THEN
273  ELSE
274  lloc = ni
275  GO TO 8010
276  ENDIF
277  GO TO 8015
278 8010 CONTINUE
279  WRITE(6,fmt='('' I FELL THROUGH LOOP WITH LOC='',I4,
280  1 '' WITH LLOC='',I4,'' & KSTART='',I4,
281  2 '' NUMBYT='',I4,'' THEREFORE ADD "1" TO LOC'')')
282  3 loc,lloc,kstart,numbyt
283  IF(lloc.EQ.kstart) loc = lloc + 1
284 8015 CONTINUE
285  IF(loc.GT.kstart) THEN
286 C
287 C HAVE A FLAG LOAD IT INTO PROPER WORD
288 C
289 C IF(KPRINT) THEN
290  WRITE(6,fmt='('' FOUND THE KEY WORD: '',A,
291  1 '' AT LOCATION '',I2,'' IN LPARM ARRAY.'',/)')
292  2 lparm(kstart:lloc),kstart
293 C ENDIF
294  IF(lk.EQ.1) THEN
295 
296  keywrd = lparm(kstart:lloc)
297  nk = lloc - kstart+1
298  gotkey = .true.
299  num = num + 1
300  ELSE IF(lk.EQ.3) THEN
301  modnam = lparm(kstart:lloc)
302  nm = lloc - kstart+1
303  gotmod = .true.
304  num = num + 1
305  ENDIF
306  ELSE
307  GO TO 820
308  ENDIF
309  ELSE
310 C GO SEARCH SOME MORE.
311  GO TO 820
312  ENDIF
313 C
314  GOTO 840
315  820 CONTINUE
316 C
317  840 CONTINUE
318  numgod = 2
319 C
320  IF(num.LT.numgod) THEN
321 C
322 C DID NOT FIND A MATCH OF A KEY LETTER CHECK TO SEE WHICH
323 C ONE IT WAS.
324 C
325  IF(gotkey)THEN
326  modnam(1:8) = 'MISSGING'
327  nm = 8
328  gotmod = .true.
329  ELSE
330  krtn = 2
331  WRITE(6,fmt='('' W3FQ07: '',A)') notsnt(1:52)
332  WRITE(6,fmt='('' W3FQ07: '',A)') mesag2(1:46)
333 C
334  CALL consol(notsnt)
335  CALL consol(mesag2)
336  GO TO 900
337  ENDIF
338  ENDIF
339 C
340 C
341  WRITE(6,fmt='('' PARM='',A)') lparm(1:numbyt)
342  WRITE(6,fmt='('' MODNAM='',A,'' KEYWRD='',A,
343  1 /)')modnam(1:nm),keywrd(1:nk)
344 C
345 C
346 C CHECK TO SEE IF FIRST 4 BYTES OF KEYWRD = FAX .
347 C IF IT DOES, CHANGE IT TO FAXX .
348 C
349  IF(keywrd(1:nk).EQ.'FAX')THEN
350  keywrd(1:4) = 'FAXX'
351  nk = 4
352  ENDIF
353  IF(keywrd(1:nk).EQ.'TEST')THEN
354  bypass = .true.
355  WRITE(6,fmt='('' W3FQ07: BYPASS FLAG ON, '',
356  1 ''SKIP POSTING FILE.'',/)')
357  GO TO 900
358  ENDIF
359 C
360 C MUST NOW I MUST GET THE JOB NAME AND UNIT NAME FOR
361 C CALL TO DBN_ALERT.
362 C
363 C . . . READ IN JOBNAME
364  jchars = getenv('QSUB_REQNAME',buffer)
365  nj = 0
366  IF(buffer(1:8).EQ.' ')THEN
367  jobnam(1:8) = 'MSG_JOBNM'
368  nj = 8
369  ELSE
370  DO ii =1,8
371  IF(buffer(ii:ii).NE.' ')THEN
372  nj = nj + 1
373  jobnam(nj:nj) = buffer(ii:ii)
374  ENDIF
375  ENDDO
376  ENDIF
377 C
378  WRITE(6,fmt='('' W3FQ07: JOB NAME JOBNAM= :'',A,
379  1 ''!'')') jobnam(1:24)
380  WRITE(6,fmt='('' W3FQ07: JOB NAME= '',A,
381  1 '' NJ='',I3)') jobnam(1:nj),nj
382 C
383 C . . . READ IN FILE NAME
384 C
385  krtn = 0
386 
387  CALL asnqunit(outfil,string,istat)
388  WRITE(6,fmt='('' W3FQ07:OUTFIL NAME= '',
389  1 A,'' ISTAT='',I4)')string(1:80),istat
390 C SEARCH FOR LENGHT OF FILE NAME.
391 C
392  kret = istat
393  IF(kret.EQ.0) THEN
394  istrt = 0
395  DO i = 1,80
396  IF(istrt.EQ.0)THEN
397  IF(string(i:i).EQ.'/')THEN
398  istrt = i
399  ENDIF
400  ELSE
401  IF(string(i:i).EQ.' ')THEN
402  iend = i
403  GOTO 775
404  ENDIF
405  ENDIF
406  ENDDO
407  775 nf = iend - istrt
408  outxt(1:nf) = string(istrt:iend)
409  WRITE(6,fmt='('' W3FQ07: OUTXT= '',
410  1 A,'' NF='',I3)')outxt(1:nf),nf
411 C
412  WRITE(6,fmt='('' W3FQ07: CALLING DBN_ALERT WITH'',
413  1 '' :'',A,'' NK='',I2,'' '',A,'' NM='',I2,'' '',
414  2 A,'' NJ='',I2,'' '',A,'' NF='',I3)')keywrd(1:nk),
415  3 nk,modnam(1:nm),nm,jobnam(1:nj),nj,outxt(1:nf),nf
416 
417  CALL dbn_alert(keywrd,nk,modnam,nm,jobnam,nj,
418  1 outxt,nf,kret4)
419  kret=kret4
420 C
421  ENDIF
422  IF(kret.EQ.0) THEN
423 C COMES HERE FOR NORMAL STOP.
424 C
425  filnam(1:8) = 'POSTING '
426  filnam(9:9+nk-1) = keywrd(1:nk)
427  jloc = 9 + nk
428  filnam(jloc:jloc+6) = ' FILE '
429  loc = jloc + 6
430  filnam(loc+1:loc+1+nf) = outxt(1:nf)
431  joc = loc + nf + 1
432  filnam(joc:joc) = ':'
433  WRITE(6,fmt='('' W3FQ07: KRET='',I4,'' THEREFORE '',
434  1 A)')kret,filnam(1:joc)
435  CALL consol(filnam)
436  ELSE
437  krtn = 5
438  CALL int2ch(kret,ctext,2,cplmiz)
439  mesag5(40:41) = ctext(1:2)
440  WRITE(6,fmt='('' W3FQ07: '',
441  1 A)')mesag5(1:42)
442  CALL consol(notsnt)
443  CALL consol(mesag5)
444  ENDIF
445 C
446  900 CONTINUE
447  ENDIF
448  GO TO 1000
449  940 CONTINUE
450  CALL int2ch(cardfil,ctext,2,cplmiz)
451  mesag4(53:54) = ctext(1:2)
452  CALL consol(notsnt)
453  CALL consol(mesag4)
454  WRITE(6,fmt='('' W3FQ07: '',A)') notsnt
455  WRITE(6,fmt='('' W3FQ07: '',A)') mesag4
456  krtn = 4
457  ENDIF
458 1000 RETURN
459  END
subroutine w3fq07(LPARM, NUMBYT, OUTFIL, CARDFIL, KRTN)
Sets up the arguments for sub dbn_alert which posts transmission availability to various statfiles.
Definition: w3fq07.f:81