30 CHARACTER * 324 KTITLE
32 DATA mask(1)/z
'0000000F'/
33 DATA mask(2)/z
'000000FF'/
34 DATA mask(3)/z
'00000FFF'/
35 DATA mask(4)/z
'0000FFFF'/
36 DATA mask(5)/z
'000FFFFF'/
37 DATA mask(6)/z
'00FFFFFF'/
38 DATA mask(7)/z
'0FFFFFFF'/
39 DATA mask(8)/z
'FFFFFFFF'/
41 CALL line01(id,mask,ktitle)
46 CALL line02(id,mask,ktitle)
84 CHARACTER * 8 KNAME(9)
85 CHARACTER * 8 KNAME1(3)
86 CHARACTER * 324 KTITLE
87 CHARACTER * 8 KWRITE(3)
94 CHARACTER * 6 QNAME(166)
96 CHARACTER * 4 SNAME(18)
97 CHARACTER * 20 VUNIT(2)
105 INTEGER C1,C2,E1,E2,S1,S2,Q,M,G
106 INTEGER YY,MM,DD,HH,F1,F2,JT,JN
110 DATA shfmsk( 1)/z
'20020100'/
111 DATA shfmsk( 2)/z
'28020400'/
112 DATA shfmsk( 3)/z
'30020400'/
113 DATA shfmsk( 4)/z
'38020400'/
114 DATA shfmsk( 5)/z
'08050100'/
115 DATA shfmsk( 6)/z
'00020100'/
116 DATA shfmsk( 7)/z
'08050200'/
117 DATA shfmsk( 8)/z
'00020200'/
118 DATA shfmsk( 9)/z
'3C010200'/
119 DATA shfmsk(10)/z
'28030100'/
120 DATA shfmsk(11)/z
'28030200'/
121 DATA shfmsk(12)/z
'34030100'/
122 DATA shfmsk(13)/z
'20020400'/
123 DATA shfmsk(14)/z
'30020400'/
124 DATA shfmsk(15)/z
'1C010100'/
125 DATA shfmsk(16)/z
'1C010200'/
126 DATA shfmsk(17)/z
'20020200'/
150 DATA sname( 1)/
' GPM'/
151 DATA sname( 2)/
' PA '/
152 DATA sname( 3)/
' M '/
153 DATA sname( 4)/
' M '/
154 DATA sname( 5)/
' MB '/
155 DATA sname( 6)/
' DEG'/
156 DATA sname( 7)/
' POT'/
157 DATA sname( 8)/
' MSL'/
158 DATA sname( 9)/
' SFC'/
159 DATA sname(10)/
' TRO'/
160 DATA sname(11)/
' BDY'/
161 DATA sname(12)/
' TRS'/
162 DATA sname(13)/
' STS'/
163 DATA sname(14)/
' QCP'/
164 DATA sname(15)/
' SIG'/
165 DATA sname(16)/
'MWSL'/
166 DATA sname(17)/
'PLYR'/
340 DATA qname( 1)/
' HGT '/
341 DATA qname( 2)/
' P ALT'/
342 DATA qname( 3)/
' DIST '/
343 DATA qname( 4)/
' PRES '/
344 DATA qname( 5)/
' TMP '/
345 DATA qname( 6)/
' DPT '/
346 DATA qname( 7)/
' DEPR '/
347 DATA qname( 8)/
' POT '/
348 DATA qname( 9)/
' T MAX'/
349 DATA qname(10)/
' T MIN'/
350 DATA qname(11)/
' V VEL'/
351 DATA qname(12)/
' NETVD'/
352 DATA qname(13)/
' DZDT '/
353 DATA qname(14)/
' OROW '/
354 DATA qname(15)/
' FRCVV'/
355 DATA qname(16)/
' U GRD'/
356 DATA qname(17)/
' V GRD'/
357 DATA qname(18)/
' WIND '/
358 DATA qname(19)/
' T WND'/
359 DATA qname(20)/
' VW SH'/
360 DATA qname(21)/
' U DIV'/
361 DATA qname(22)/
' V DIV'/
362 DATA qname(23)/
' WDIR '/
363 DATA qname(24)/
' WWND '/
364 DATA qname(25)/
' SWND '/
365 DATA qname(26)/
' RATS '/
366 DATA qname(27)/
' VECW '/
367 DATA qname(28)/
' SFAC '/
368 DATA qname(29)/
' ABS V'/
369 DATA qname(30)/
' REL V'/
370 DATA qname(31)/
' DIV '/
371 DATA qname(32)/
' STRM '/
372 DATA qname(33)/
' V POT'/
373 DATA qname(34)/
' R H '/
374 DATA qname(35)/
' P WAT'/
375 DATA qname(36)/
' A PCP'/
376 DATA qname(37)/
' P O P'/
377 DATA qname(38)/
' P O Z'/
378 DATA qname(39)/
' SNO D'/
379 DATA qname(40)/
' ACPCP'/
380 DATA qname(41)/
' SPF H'/
381 DATA qname(42)/
' L H2O'/
382 DATA qname(43)/
' LFT X'/
383 DATA qname(44)/
' TOTOS'/
384 DATA qname(45)/
' K X '/
385 DATA qname(46)/
' C INS'/
386 DATA qname(47)/
' L WAV'/
387 DATA qname(48)/
' S WAV'/
388 DATA qname(49)/
' DRAG '/
389 DATA qname(50)/
' LAND '/
390 DATA qname(51)/
' KFACT'/
391 DATA qname(52)/
' 10TSL'/
392 DATA qname(53)/
' 7TSL '/
393 DATA qname(54)/
' RCPOP'/
394 DATA qname(55)/
' RCMT '/
395 DATA qname(56)/
' RCMP '/
396 DATA qname(57)/
' ORTHP'/
397 DATA qname(58)/
' ALBDO'/
398 DATA qname(59)/
' ENFLX'/
399 DATA qname(60)/
' TTHTG'/
400 DATA qname(61)/
' LAT '/
401 DATA qname(62)/
' LON '/
402 DATA qname(63)/
' RADIC'/
403 DATA qname(64)/
' PROB '/
404 DATA qname(65)/
' CPROB'/
405 DATA qname(66)/
' USTAR'/
406 DATA qname(67)/
' TSTAR'/
407 DATA qname(68)/
' MIXHT'/
408 DATA qname(69)/
' WTMP '/
409 DATA qname(70)/
' WVHGT'/
410 DATA qname(71)/
' SWELL'/
411 DATA qname(72)/
' WVSWL'/
412 DATA qname(73)/
' WVPER'/
413 DATA qname(74)/
' WVDIR'/
414 DATA qname(75)/
' SWPER'/
415 DATA qname(76)/
' SWDIR'/
416 DATA qname(77)/
' RRATE'/
417 DATA qname(78)/
' TSTM '/
418 DATA qname(79)/
' CSVR '/
419 DATA qname(80)/
' CTDR '/
420 DATA qname(81)/
' MIXR '/
421 DATA qname(82)/
' PSVR '/
422 DATA qname(83)/
' MCONV'/
423 DATA qname(84)/
' ENRGY'/
424 DATA qname(85)/
' RDNCE'/
425 DATA qname(86)/
' BRTMP'/
426 DATA qname(87)/
' TCOZ '/
427 DATA qname(88)/
' OZMR '/
428 DATA qname(89)/
' ICWAT'/
429 DATA qname(90)/
' DEPTH'/
430 DATA qname(91)/
' GUST '/
431 DATA qname(92)/
' VAPP '/
432 DATA qname(93)/
' TOTHF'/
433 DATA qname(94)/
' SPEHF'/
434 DATA qname(95)/
' SORAD'/
435 DATA qname(96)/
' UOGRD'/
436 DATA qname(97)/
' VOGRD'/
437 DATA qname(98)/
' HTSGW'/
438 DATA qname(99)/
' PERPW'/
439 DATA qname(100)/
' DIRPW'/
440 DATA qname(101)/
' PERSW'/
441 DATA qname(102)/
' DIRSW'/
442 DATA qname(103)/
' WCAPS'/
443 DATA qname(104)/
' PTEND'/
444 DATA qname(105)/
' NCPCP'/
445 DATA qname(106)/
' 4LFTX'/
446 DATA qname(107)/
' ICEAC'/
447 DATA qname(108)/
' NPRAT'/
448 DATA qname(109)/
' CPRAT'/
449 DATA qname(110)/
'CEILHT'/
450 DATA qname(111)/
' VISIB'/
451 DATA qname(112)/
'LIQPCP'/
452 DATA qname(113)/
'FREPCP'/
453 DATA qname(114)/
'FROPCP'/
454 DATA qname(115)/
' MIXLY'/
455 DATA qname(116)/
' DLRFL'/
456 DATA qname(117)/
' ULRFL'/
457 DATA qname(118)/
' DSRFL'/
458 DATA qname(119)/
' USRFL'/
459 DATA qname(120)/
' UTHFL'/
460 DATA qname(121)/
' UTWFL'/
461 DATA qname(122)/
' TTLWR'/
462 DATA qname(123)/
' TTSWR'/
463 DATA qname(124)/
' TTRAD'/
464 DATA qname(125)/
' MSTAV'/
465 DATA qname(126)/
' SWABS'/
466 DATA qname(127)/
' CDLYR'/
467 DATA qname(128)/
' CDCON'/
468 DATA qname(129)/
' PBCLY'/
469 DATA qname(130)/
' PTCLY'/
470 DATA qname(131)/
' PBCON'/
471 DATA qname(132)/
' PTCON'/
472 DATA qname(133)/
' SFEXC'/
473 DATA qname(134)/
' A EVP'/
474 DATA qname(135)/
' STCOF'/
475 DATA qname(136)/
' TSOIL'/
476 DATA qname(137)/
'D DUDT'/
477 DATA qname(138)/
'D DVDT'/
478 DATA qname(139)/
' U STR'/
479 DATA qname(140)/
' V STR'/
480 DATA qname(141)/
' TUVRD'/
481 DATA qname(142)/
' TVVRD'/
482 DATA qname(143)/
' TTLRG'/
483 DATA qname(144)/
' TTSHL'/
484 DATA qname(145)/
' TTDEP'/
485 DATA qname(146)/
' TTVDF'/
486 DATA qname(147)/
' ZSTAR'/
487 DATA qname(148)/
' TQDEP'/
488 DATA qname(149)/
' TQSHL'/
489 DATA qname(150)/
' TQVDF'/
490 DATA qname(151)/
'XGWSTR'/
491 DATA qname(152)/
'YGWSTR'/
492 DATA qname(153)/
' STDZG'/
493 DATA qname(154)/
' A LEV'/
494 DATA qname(155)/
' T AIL'/
495 DATA qname(156)/
' B AIL'/
496 DATA qname(157)/
' EPOT '/
497 DATA qname(158)/
' MSLSA'/
498 DATA qname(159)/
' MSLMA'/
499 DATA qname(160)/
'MGSTRM'/
500 DATA qname(161)/
' CONDP'/
501 DATA qname(162)/
' POT V'/
502 DATA qname(163)/
' CAPE '/
503 DATA qname(164)/
' CIN '/
504 DATA qname(165)/
' VTMP '/
505 DATA qname(166)/
' TKE '/
515 DATA kname/
' ECMWF',
' READING',
',UK. ',
516 &
' FNOC',
' MONTERE',
'Y, CA. ',
517 &
' AFGWC ',
'OFFUTT A',
'FB, NB. '/
518 DATA kname1/
' WMC N',
'MC WASHI',
'NGTON '/
520 DATA after /
' AFTER '/
522 DATA qname1/
' THCK '/
523 DATA qname2/
' THKDN'/
524 DATA qname3/
' PRSDN'/
526 DATA vunit(1)/
' 0-HR FCST VALID AT '/
527 DATA vunit(2)/
' ANALYSIS VALID AT '/
533 200
FORMAT (
' ',a7,a4,
' ',a7)
534 210
FORMAT ( a4,1x,a6,a5,f4.1,a4,a7,
535 & i2.2,a1,i2.2,a1,i2.2,1x,i2.2,
'Z',3a8)
537 230
FORMAT (
' Q IS AN ILLEGAL OFFICE NOTE 84 DATA TYPE, Q = ',
539 240
FORMAT ( a4,1x,a6,a20,
540 & i2.2,a1,i2.2,a1,i2.2,1x,i2.2,
'Z',3a8)
548 nshift = iand(ishft(itemp,-24),255)
549 nmask = iand(ishft(itemp,-16),255)
550 nid = iand(ishft(itemp,-8),255)
553 jkeep(n) = iand(itemp,ishft(ktemp,-nshift))
574 ks = iand(ishft(id(3),-40_8),255_8)
580 IF (q.EQ.ll(n))
GO TO 30
587 unit(1:4) = unit1(1:4)
589 aftbef(1:7) = after(1:7)
591 IF (e1.GT.128) e1 = -(jkeep(6)-128)
592 IF (e2.GT.128) e2 = -(jkeep(8)-128)
598 IF (s1.EQ.jlist(i))
THEN
609 IF (m.EQ.0.OR.m.EQ.8)
THEN
611 CALL value1(s1,c1,e1,inum1)
612 WRITE (ktitle(1:20),220) inum1
620 IF (s2.EQ.jlist(i))
THEN
631 CALL value1(s1,c1,e1,inum1)
632 CALL value1(s2,c2,e2,inum2)
633 WRITE (ktitle(1:20),200) inum1 , sname(k1) , inum2
638 IF (q.EQ.1 .AND. m.EQ.1.AND. s1.EQ.8) qwrite = qname1
639 IF (q.EQ.1 .AND. m.EQ.1.AND. s1.EQ.8.AND.ks.EQ.2) qwrite = qname2
640 IF (q.EQ.8 .AND. s1.EQ.128.AND.ks.EQ.2) qwrite = qname3
641 IF (jt.EQ.6) qwrite(5:6) = dn(1:2)
652 IF (jn.EQ.15.OR.jt.EQ.7)
THEN
667 IF (rf1.GT.72.0.OR.rf2.GT.72.0)
THEN
670 unit(1:4) = days(1:4)
681 CALL climo(cf1,cf2,unit,for,aftbef)
683 CALL setcl(cf2,unit,ktitle)
689 IF (g.EQ.kk(k))
GO TO 130
693 kwrite(l) = kname1(l)
699 kwrite(l) = kname( 3*(k-1) + l)
708 IF (f1.NE.0)
GO TO 160
709 IF (g.EQ.19.OR.g.EQ.22.OR.g.EQ.43.OR.g.EQ.44.OR.g.EQ.49.OR.
710 & g.EQ.55.OR.g.EQ.56.OR.g.EQ.64)
THEN
712 IF (m.EQ.8.OR.m.EQ.9.OR.m.EQ.10) iii = 1
717 WRITE (ktitle(21:88),240) sname(k2), qwrite, vunit(iii),
718 & yy, dash, mm, dash, dd, hh, (kwrite(l),l=1,3)
722 WRITE (ktitle(21:88),210) sname(k2), qwrite, for, rf1, unit,
723 & aftbef, yy, dash, mm, dash, dd, hh, (kwrite(l),l=1,3)
727 WRITE (ktitle(1:88),230) q
759 DATA jnum /
' 0.0000 '/
766 IF (s.GE.128.AND.s.LE.132)
GO TO 110
767 IF (c.EQ.0)
GO TO 100
768 WRITE (ltemp(1:7),101) c
772 num(1:j) = ltemp(1:j)
776 num(k+1:8) = ltemp(k:7)
777 IF (j.EQ.0) num(2:2) = zero
813 INTEGER(8) MASK32,MASKN
814 INTEGER(4) SHFMSK(17)
817 equivalence(irtemp,rtemp(1))
819 CHARACTER * 324 KTITLE
823 DATA maskn /z
'FFFFFFFFFFFF0000'/
824 DATA mask32/z
'00000000FFFFFFFF'/
825 DATA shfmsk( 1)/z
'3C010200'/
826 DATA shfmsk( 2)/z
'1C010100'/
827 DATA shfmsk( 3)/z
'1C010200'/
828 DATA shfmsk( 4)/z
'20020100'/
829 DATA shfmsk( 5)/z
'20020200'/
830 DATA shfmsk( 6)/z
'38020300'/
831 DATA shfmsk( 7)/z
'30020300'/
832 DATA shfmsk( 8)/z
'28020300'/
833 DATA shfmsk( 9)/z
'20020300'/
834 DATA shfmsk(10)/z
'3C010300'/
835 DATA shfmsk(11)/z
'18020400'/
836 DATA shfmsk(12)/z
'10020400'/
837 DATA shfmsk(13)/z
'00040400'/
838 DATA shfmsk(14)/z
'30040500'/
839 DATA shfmsk(15)/z
'00040500'/
840 DATA shfmsk(16)/z
'00080500'/
841 DATA shfmsk(17)/z
'20040600'/
843 100
FORMAT(
' M=',i2,
' T=',i2,
' N=',i2,
' F1=',i3,
' F2=',i3,
' CD=',i3,
844 1
' CM=',i3,
' KS=',i3,
' K=',i3,
' GES=',i2,
' R=',i3,
' G=',i3,
845 2
' J=',i5,
' B=',i5,
' Z=',i5,
' A=',e15.8,
' N=',i5,
' ')
851 nshift = iand(ishft(itemp,-24),255)
852 nmask = iand(ishft(itemp,-16),255)
853 nid = iand(ishft(itemp,-8),255)
856 ikeep(n) = iand(jtemp,ishft(ktemp,-nshift))
863 call q9ie32(rtemp(2),rtemp(1),1,istat)
868 IF (btest(ikeep(17),15_8))
THEN
869 ikeep(17) = ior(ikeep(17),maskn)
874 IF (ikeep(13).EQ.0)
THEN
875 ikeep(13) = iand(id(6),mask32)
878 WRITE (ktitle(89:216),100) (ikeep(i),i=1,15) , a , ikeep(17)
902 CHARACTER * 324 KTITLE
904 DATA mask32/z
'00000000FFFFFFFF'/
908 100
FORMAT ( 12(1x,z8))
911 id84(j) = ishft(id(j/2+1),-32_8)
912 id84(j+1) = iand(id(j/2+1),mask32)
915 WRITE (ktitle(217:324),100) (id84(i),i=1,12)
941 SUBROUTINE climo(CF1,CF2,UNIT,FOR,AFTBEF)
955 DATA befor /
' BEFOR '/
967 diff = cf1 * 12.0 + 48.0
971 IF (diff.LT.0.0) aftbef(1:7) = befor(1:7)
975 IF (abs(diff).LE.72.0)
THEN
981 unit(1:4) = unit2(1:4)
985 cf1 = abs(diff / 24.0 )
990 unit(1:4) = unit1(1:4)
1015 CHARACTER*324 KTITLE
1025 100
FORMAT (1x, f4.1, a4,
' AVG' )
1027 ktitle(1:13) = blank(1:13)
1029 WRITE (ktitle(1:13),100) cf2 , dunit(1:4)
subroutine q9ie32(A, B, N, ISTAT)
Convert ibm370 32 bit floating point numbers to ieee 32 bit task 754 floating point numbers.
subroutine line03(ID, KTITLE)
Creates the third line of title.
subroutine setcl(CF2, UNIT, KTITLE)
Encodes time-averaged title.
subroutine line02(ID, MASK, KTITLE)
Creates the second line of title.
subroutine line01(ID, MASK, KTITLE)
Creates the first line of title.
subroutine value1(S, C, E, NUM)
Creates value1 of surface from ids.
subroutine climo(CF1, CF2, UNIT, FOR, AFTBEF)
Sets time-averaged titles.
subroutine w3fp06(ID, KTITLE, N)
Provides a title for data fields formulated according to nmc o.n.