284 SUBROUTINE w3fi67(IPTR,IDENT,MSGA,ISTACK,MSTACK,KDATA,KNR,INDEX)
286 CHARACTER*40 ANAME(700)
287 CHARACTER*24 AUNITS(700)
290 INTEGER MSGA(*),KDATA(500,*)
291 INTEGER IPTR(*),MSTACK(2,*)
292 INTEGER IVALS(500),KNR(*)
295 INTEGER ISTACK(*),IWORK(1600)
314 IF (index.GT.ident(14))
THEN
318 ELSE IF (index.LE.ident(14))
THEN
319 IF (iptr(39).NE.0)
THEN
320 CALL fi6701(iptr,ident,msga,istack,iwork,aname,kdata,
322 * mstack,aunits,kdesc,mwidth,mref,mscale,knr,index)
332 DO 1000 knofst = 0, 999, 8
334 CALL gbyte (msga,ivals,inofst,8)
335 IF (ivals(1).EQ.66)
THEN
338 CALL gbyte (msga,ivals,inofst,24)
339 IF (ivals(1).EQ.5588562)
THEN
346 print *,
'BUFR - START OF BUFR MESSAGE NOT FOUND'
353 CALL gbyte (msga,ident(1),inofst+24,8)
355 IF (ident(1).GE.2)
THEN
356 CALL gbyte (msga,ivals,inofst,24)
358 kender = itotal * 8 - 32 + iptr(19)
359 CALL gbyte (msga,ilast,kender,32)
360 IF (ilast.EQ.926365495)
THEN
366 CALL gbyte (msga,ivals,inofst,24)
370 IF (ivals(1).GT.10000)
THEN
375 CALL gbyte (msga,ivals,inofst,8)
382 CALL gbyte (msga,ivals,inofst,24)
386 IF (ivals(1).GT.10000)
THEN
393 CALL gbyte (msga,ivals,inofst,16)
397 CALL gbyte (msga,ivals,inofst,8)
401 CALL gbyte (msga,ivals,inofst,1)
403 IF (ident(4).GT.0)
THEN
411 CALL gbyte (msga,ivals,inofst,8)
415 CALL gbyte (msga,ivals,inofst,8)
423 IF (ident(1).LT.2)
THEN
424 CALL gbyte (msga,ivals,inofst,16)
429 CALL gbyte (msga,ivals,inofst,8)
433 CALL gbyte (msga,ivals,inofst,8)
439 CALL gbyte (msga,ivals,inofst,8)
443 CALL gbyte (msga,ivals,inofst,8)
447 CALL gbyte (msga,ivals,inofst,8)
451 CALL gbyte (msga,ivals,inofst,8)
455 CALL gbyte (msga,ivals,inofst,8)
460 inofst = iptr(3) + iptr(2) * 8
466 CALL gbyte (msga,iptr(4),inofst,24)
469 kentry = (iptr(4) - 4) / 14
471 IF (ident(2).EQ.7)
THEN
472 DO 2000 i = 1, kentry
473 CALL gbyte (msga,kdspl ,inofst,16)
475 CALL gbyte (msga,lat ,inofst,16)
477 CALL gbyte (msga,lon ,inofst,16)
479 CALL gbyte (msga,kdahr ,inofst,16)
481 CALL gbyte (msga,dirid(1),inofst,32)
483 CALL gbyte (msga,dirid(2),inofst,16)
490 inofst = iptr(5) + iptr(4) * 8
495 CALL gbyte (msga,iptr(6),inofst,24)
498 IF (iptr(6).GT.10000)
THEN
504 CALL gbyte (msga,ident(14),inofst,16)
505 IF (ident(14).GT.500)
THEN
506 print *,
'THE NUMBER OF SUBSETS EXCEEDS THE CAPABILITY'
507 print *,
'OF THIS VERSION OF THE BUFR DECODER. ANOTHER '
508 print *,
'VERSION MUST BE CONSTRUCTED TO HANDLE AT LEAST'
509 print *,ident(14),
'SUBSETS TO BE ABLE TO PROCESS THIS DATA'
515 CALL gbyte (msga,ivals,inofst,1)
519 CALL gbyte (msga,ivals,inofst,1)
523 nrdesc = (iptr( 6) - 8) / 2
527 CALL gbytes (msga,istack,inofst,16,0,nrdesc)
535 inofst = iptr(7) + iptr(6) * 8
539 CALL gbyte (msga,ivals,inofst,24)
540 IF (ivals(1).GT.10000)
THEN
550 inofst = iptr(9) + iptr(8) * 8
551 CALL gbyte (msga,ivals,inofst,32)
553 IF (ivals(1).NE.926365495)
THEN
554 print *,
'BAD SECTION COUNT'
560 CALL fi6701(iptr,ident,msga,istack,iwork,aname,kdata,ivals,
561 * mstack,aunits,kdesc,mwidth,mref,mscale,knr,index)
563 IF (iptr(1).NE.0)
THEN
567 IF (ident(5).EQ.2)
THEN
568 IF (ident(6).EQ.7)
THEN
580 print *,
'REFORMAT PROFILER DATA'
581 IF (ident(1).LT.2)
THEN
582 CALL fi6709(ident,mstack,kdata,iptr)
584 CALL fi6710(ident,mstack,kdata,iptr)
586 IF (iptr(1).NE.0)
THEN
638 SUBROUTINE fi6701(IPTR,IDENT,MSGA,ISTACK,IWORK,ANAME,KDATA,IVALS,
639 * MSTACK,AUNITS,KDESC,MWIDTH,MREF,MSCALE,KNR,INDEX)
643 CHARACTER*40 ANAME(*)
644 CHARACTER*24 AUNITS(*)
646 INTEGER MSGA(*),KDATA(500,*),IVALS(*)
647 INTEGER MSCALE(*),KNR(*)
652 INTEGER ITBLD(500,11)
656 INTEGER ISTACK(*),IWORK(*)
657 INTEGER MSTACK(2,*),KK
662 DATA itest /1,3,7,15,31,63,127,255,
663 * 511,1023,2047,4095,8191,16383,
664 * 32767, 65535,131071,262143,524287,
665 * 1048575,2097151,4194303,8388607,
666 * 16777215,33554431,67108863,134217727,
667 * 268435455,536870911,1073741823/
689 IF (iptr(10).EQ.0)
THEN
704 IF (iptr(21).EQ.0)
THEN
708 READ(unit=20,fmt=20,err=9999,
END=175)MF,
710 * (aname(i)(k:k),k=1,40),
711 * (aunits(i)(k:k),k=1,24),
712 * mscale(i),mref(i,1),mwidth(i)
713 20
FORMAT(i1,i2,i3,40a1,24a1,i5,i15,1x,i4)
714 IF (mwidth(i).EQ.0)
THEN
720 kdesc(i) = mf*16384 + mx*256 + my
726 21
FORMAT(1x,i1,i2,i3,1x,i6,1x,40a1,
727 * 2x,24a1,2x,i5,2x,i15,1x,i4)
729 print *,
'HAVE READ LIMIT OF 700 TABLE B DESCRIPTORS'
730 print *,
'IF THERE ARE MORE THAT THAT, CORRECT READ LOOP'
745 IF (iptr(11).GT.iptr(12))
THEN
747 IF (ident(16).NE.0)
THEN
756 iptr(17) = iptr(17) + 1
757 IF (iptr(17).GT.ident(14))
THEN
758 iptr(17) = iptr(17) - 1
761 DO 300 i = 1, iptr(13)
771 IF (iptr(39).GT.0)
THEN
782 CALL fi6708 (iptr,iwork,lf,lx,ly,jdesc)
787 IF (iptr(11).GT.1600)
THEN
792 kprm = iptr(31) + iptr(24)
793 IF (kprm.GT.1600)
THEN
794 IF (kprm.GT.kold)
THEN
795 print *,
'EXCEEDED ARRAY SIZE',kprm,iptr(31),
803 iptr(31) = iptr(31) + 1
804 kprm = iptr(31) + iptr(24)
805 mstack(1,kprm) = jdesc
807 kdata(iptr(17),kprm) = 0
810 CALL fi6705(iptr,ident,msga,iwork,lx,ly,
811 * kdata,ll,knr,mstack)
812 IF (iptr(1).NE.0)
THEN
819 ELSE IF (lf.EQ.2)
THEN
821 ELSE IF (lx.EQ.4)
THEN
822 iptr(31) = iptr(31) + 1
823 kprm = iptr(31) + iptr(24)
824 mstack(1,kprm) = jdesc
826 kdata(iptr(17),kprm) = 0
830 CALL fi6706 (iptr,lx,ly,ident,msga,kdata,ivals,mstack,
831 * mwidth,mref,mscale,j,ll,kdesc,iwork,jdesc)
832 IF (iptr(1).NE.0)
THEN
837 ELSE IF (lf.EQ.3)
THEN
839 IF (iptr(22).EQ.0)
THEN
844 READ(21,15,err=9998,
END=75 )
846 15
FORMAT(11(i1,i2,i3,1x),3x)
850 itbld(i,kk) = ihold(jj)*16384 +
851 * ihold(jj+1)*256 + ihold(jj+2)
852 IF (itbld(i,kk).EQ.0)
THEN
859 16
FORMAT(1x,11(i6,1x))
861 CLOSE(unit=21,status=
'KEEP')
864 CALL fi6707(iptr,iwork,itbld,jdesc)
865 IF (iptr(1).GT.0)
THEN
873 kprm = iptr(31) + iptr(24)
874 CALL fi6702(iptr,ident,msga,kdata,kdesc,ll,mstack,
875 * aunits,mwidth,mref,mscale,jdesc,ivals,j)
878 IF (iptr(1).GT.0)
THEN
881 IF (ident(16).EQ.0)
THEN
882 knr(iptr(17)) = iptr(31)
894 IF (ident(16).NE.0)
THEN
901 print *,
' ERROR READING TABLE D'
905 print *,
' ERROR READING TABLE B'
940 SUBROUTINE fi6702(IPTR,IDENT,MSGA,KDATA,KDESC,LL,MSTACK,AUNITS,
941 * MWIDTH,MREF,MSCALE,JDESC,IVALS,J)
946 CHARACTER*24 AUNITS(*)
954 INTEGER MWIDTH(*),MSTACK(2,*),MSCALE(*)
955 INTEGER MREF(700,3),KDATA(500,*),IVALS(*)
958 DATA askey /
'CCITT IA5 '/
971 IF (jdesc.GT.kdesc(kk))
THEN
976 IF (iptr(36).NE.0)
THEN
978 IF (ident(16).NE.0)
THEN
981 iptr(25) = iptr(25) + iptr(36)
983 CALL gbyte (msga,ihold,iptr(25),6)
984 iptr(25) = iptr(25) + 6
985 iptr(31) = iptr(31) + 1
986 kprm = iptr(31) + iptr(24)
987 mstack(1,kprm) = jdesc
989 DO 50 i = 1, iptr(14)
990 kdata(i,kprm) = 99999
994 ibits = ihold * ident(14)
995 iptr(25) = iptr(25) + ibits
998 iptr(31) = iptr(31) + 1
999 kprm = iptr(31) + iptr(24)
1000 mstack(1,kprm) = jdesc
1002 kdata(iptr(17),kprm) = 99999
1005 iptr(25) = iptr(25) + iptr(36)
1009 print *,
'FI6702 - ERROR = 3'
1010 print *,jdesc,k,kk,j,kdesc(j)
1013 DO 20 ll = 1, iptr(14)
1014 print *,ll,kdesc(ll)
1020 j = ((kk - k) / 2) + k
1022 IF (jdesc.EQ.kdesc(k))
THEN
1025 ELSE IF (jdesc.EQ.kdesc(kk))
THEN
1028 ELSE IF (jdesc.LT.kdesc(j))
THEN
1032 ELSE IF (jdesc.GT.kdesc(j))
THEN
1040 IF (askey(1:9).EQ.aunits(j)(1:9))
THEN
1042 iptr(40) = mwidth(j) / 8
1046 IF (ident(16).NE.0)
THEN
1048 CALL fi6703(iptr,ident,msga,kdata,ivals,mstack,
1049 * mwidth,mref,mscale,j,jdesc)
1050 IF (iptr(1).NE.0)
THEN
1055 CALL fi6704(iptr,msga,kdata,ivals,mstack,
1056 * mwidth,mref,mscale,j,ll,jdesc)
1090 SUBROUTINE fi6703(IPTR,IDENT,MSGA,KDATA,IVALS,MSTACK,
1091 * MWIDTH,MREF,MSCALE,J,JDESC)
1095 INTEGER MSGA(*),JDESC,MSTACK(2,*)
1096 INTEGER IPTR(*),IVALS(*),KDATA(500,*)
1097 INTEGER NRVALS,JWIDE,IDATA
1110 DATA msk /1,3,7,15,31,63,127,
1112 * 255,511,1023,2047,4095,
1114 * 8191,16383,32767,65535,
1116 * 131071,262143,524287,
1118 * 1048575,2097151,4194303,
1120 * 8388607,16777215,33554431,
1122 * 67108863,134217727,268435455/
1127 IF (iptr(18).EQ.0)
THEN
1134 IF (iptr(29).GT.0)
THEN
1136 iptr(31) = iptr(31) + 1
1137 kprm = iptr(31) + iptr(24)
1139 CALL gbyte (msga,lowest,iptr(25),iptr(29))
1140 iptr(25) = iptr(25) + iptr(29)
1142 CALL gbyte (msga,nbinc,iptr(25),6)
1143 iptr(25) = iptr(25) + 6
1145 IF (nbinc.GT.0)
THEN
1146 CALL gbytes (msga,ivals,iptr(25),nbinc,0,iptr(14))
1147 iptr(25) = iptr(25) + nbinc * iptr(14)
1148 DO 50 i = 1, iptr(14)
1149 kdata(i,kprm) = ivals(i) + lowest
1150 IF (kdata(i,kprm).GE.msk(nbinc))
THEN
1151 kdata(i,kprm) = 999999
1155 DO 51 i = 1, iptr(14)
1156 IF (lowest.GE.msk(nbinc))
THEN
1157 kdata(i,kprm) = 999999
1159 kdata(i,kprm) = lowest
1166 jwide = mwidth(j) + iptr(26)
1171 CALL gbyte (msga,lowest,iptr(25),jwide)
1173 iptr(25) = iptr(25) + jwide
1175 CALL gbyte (msga,nbinc,iptr(25),6)
1177 IF (iptr(32).EQ.2.AND.iptr(33).EQ.5)
THEN
1179 IF (nbinc.GT.jwide)
THEN
1186 111
FORMAT (1x,5hdata ,i3,6(2x,i10))
1189 print *,
'NBINC CALLS FOR LARGER BIT WIDTH THAN TABLE',
1190 *
' B PLUS WIDTH CHANGES'
1193 iptr(25) = iptr(25) + 6
1199 iptr(31) = iptr(31) + 1
1200 kprm = iptr(31) + iptr(24)
1201 IF (nbinc.NE.0)
THEN
1202 CALL gbytes (msga,ivals,iptr(25),nbinc,0,nrvals)
1203 iptr(25) = iptr(25) + nbinc * nrvals
1205 DO 100 i = 1, nrvals
1207 IF (ivals(i).GE.msk(nbinc))
THEN
1208 kdata(i,kprm) = 999999
1210 IF (mref(j,2).EQ.0)
THEN
1211 kdata(i,kprm) = ivals(i) + lowest + mref(j,1)
1213 kdata(i,kprm) = ivals(i) + lowest + mref(j,3)
1220 IF (lowest.EQ.msk(mwidth(j)))
THEN
1221 DO 105 i = 1, nrvals
1222 kdata(i,kprm) = 999999
1225 IF (mref(j,2).EQ.0)
THEN
1226 icomb = lowest + mref(j,1)
1228 icomb = lowest + mref(j,3)
1230 DO 106 i = 1, nrvals
1231 kdata(i,kprm) = icomb
1236 mstack(1,kprm) = jdesc
1237 IF (iptr(27).NE.0)
THEN
1238 mstack(2,kprm) = iptr(27)
1240 mstack(2,kprm) = mscale(j)
1248 DO 1906 k = 1, iptr(40)
1249 CALL gbyte (msga,klow,iptr(25),8)
1250 iptr(25) = iptr(25) + 8
1251 IF (klow(k).NE.0)
THEN
1253 print *,
'NON-ZERO LOWEST ON TEXT DATA'
1258 CALL gbyte (msga,nbinc,iptr(25),6)
1260 iptr(25) = iptr(25) + 6
1261 IF (nbinc.NE.iptr(40))
THEN
1263 print *,
'NBINC IS NOT THE NUMBER OF CHARACTERS',nbinc
1267 iptr(31) = iptr(31) + 1
1268 kprm = iptr(31) + iptr(24)
1271 DO 1900 n = 1, ident(14)
1274 nbits = iptr(40) * 8
1277 IF (nbits.GT.32)
THEN
1278 CALL gbyte (msga,idata,iptr(25),32)
1279 iptr(25) = iptr(25) + 32
1285 mstack(1,kprm) = jdesc
1287 kdata(n,kprm) = idata
1290 iptr(24) = iptr(24) + 1
1292 1701
FORMAT (1x,i1,1x,6hkdata=,a4,2x,i5,2x,i5,2x,i5,2x,i12)
1294 ELSE IF (nbits.GT.0)
THEN
1295 CALL gbyte (msga,idata,iptr(25),nbits)
1296 iptr(25) = iptr(25) + nbits
1297 ibuf = (32 - nbits) / 8
1299 DO 1750 mp = 1, ibuf
1300 idata = idata * 256 + 32
1306 mstack(1,kprm) = jdesc
1308 kdata(n,kprm) = idata
1347 SUBROUTINE fi6704(IPTR,MSGA,KDATA,IVALS,MSTACK,
1348 * MWIDTH,MREF,MSCALE,J,LL,JDESC)
1353 INTEGER IPTR(*),MREF(700,3),MSCALE(*)
1354 INTEGER MWIDTH(*),JDESC
1357 INTEGER KDATA(500,*),MSTACK(2,*)
1363 DATA itest /1,3,7,15,31,63,127,255,
1364 * 511,1023,2047,4095,8191,16383,
1365 * 32767, 65535,131071,262143,524287,
1366 * 1048575,2097151,4194303,8388607,
1367 * 16777215,33554431,67108863,134217727,
1368 * 268435455,536870911,1073741823/
1371 IF ((iptr(26)+mwidth(j)).LT.1)
THEN
1377 jwide = mwidth(j) + iptr(26)
1379 IF (iptr(18).NE.1)
THEN
1381 IF (iptr(29).GT.0)
THEN
1382 IF (jdesc.NE.7957.AND.jdesc.NE.7937)
THEN
1383 iptr(31) = iptr(31) + 1
1384 kprm = iptr(31) + iptr(24)
1385 mstack(1,kprm) = 33792 + iptr(29)
1387 CALL gbyte (msga,ivals,iptr(25),iptr(29))
1388 iptr(25) = iptr(25) + iptr(29)
1389 kdata(iptr(17),kprm) = ivals(1)
1394 iptr(31) = iptr(31) + 1
1395 kprm = iptr(31) + iptr(24)
1396 mstack(1,kprm) = jdesc
1397 IF (iptr(27).NE.0)
THEN
1398 mstack(2,kprm) = iptr(27)
1400 mstack(2,kprm) = mscale(j)
1404 CALL gbyte (msga,ivals,iptr(25),jwide)
1406 iptr(25) = iptr(25) + jwide
1408 IF (ivals(1).EQ.itest(jwide))
THEN
1409 kdata(iptr(17),kprm) = 999999
1411 IF (mref(j,2).EQ.0)
THEN
1412 kdata(iptr(17),kprm) = ivals(1) + mref(j,1)
1414 kdata(iptr(17),kprm) = ivals(1) + mref(j,3)
1430 iptr(31) = iptr(31) + 1
1434 IF (nrbits.GT.32)
THEN
1435 CALL gbyte (msga,idata,iptr(25),32)
1441 kprm = iptr(31) + iptr(24)
1442 kdata(iptr(17),kprm) = idata
1443 mstack(1,kprm) = jdesc
1447 iptr(25) = iptr(25) + 32
1448 nrbits = nrbits - 32
1449 iptr(24) = iptr(24) + 1
1451 ELSE IF (nrbits.GT.0)
THEN
1453 CALL gbyte (msga,idata,iptr(25),nrbits)
1454 iptr(25) = iptr(25) + nrbits
1458 kprm = iptr(31) + iptr(24)
1460 IF (kshft.GT.0)
THEN
1462 DO 1722 lak = 1, ktry
1463 idata = idata * 256 + 64
1465 1723
FORMAT (12x,z8)
1468 kdata(iptr(17),kprm) = idata
1470 mstack(1,kprm) = jdesc
1509 SUBROUTINE fi6705(IPTR,IDENT,MSGA,IWORK,LX,LY,
1510 * KDATA,LL,KNR,MSTACK)
1514 INTEGER IPTR(*),KNR(*)
1515 INTEGER ITEMP(1600),LL
1517 INTEGER KDATA(500,*)
1518 INTEGER LX,MSTACK(2,*)
1520 INTEGER MSGA(*),KVALS(500)
1532 icurr = iptr(11) - 1
1533 ipick = iptr(11) - 1
1535 IF (nrreps.EQ.0)
THEN
1548 CALL fi6708(iptr,iwork,lf,lx,ly,jdesc)
1552 IF (jdesc.EQ.7937.OR.jdesc.EQ.7947)
THEN
1554 ELSE IF (jdesc.EQ.7938.OR.jdesc.EQ.7948)
THEN
1563 IF (ident(16).EQ.0)
THEN
1565 CALL gbyte (msga,kvals,iptr(25),jwide)
1567 iptr(25) = iptr(25) + jwide
1568 iptr(31) = iptr(31) + 1
1569 kprm = iptr(31) + iptr(24)
1570 mstack(1,kprm) = jdesc
1572 kdata(iptr(17),kprm) = kvals(1)
1578 CALL gbytes (msga,kvals,iptr(25),jwide,0,nrvals)
1579 iptr(25) = iptr(25) + jwide * nrvals
1580 iptr(31) = iptr(31) + 1
1581 kprm = iptr(31) + iptr(24)
1582 mstack(1,kprm) = jdesc
1584 kdata(iptr(17),kprm) = kvals(1)
1585 DO 100 i = 1, nrvals
1586 kdata(i,kprm) = kvals(i)
1596 DO 1000 i = 1, nrset
1597 CALL fi6708(iptr,iwork,lf,lx,ly,jdesc)
1602 lax = iptr(12) - iptr(11) + 1
1605 CALL fi6708(iptr,iwork,lf,lx,ly,jdesc)
1612 DO 4000 i = 1, nrreps
1613 DO 3000 j = 1, nrset
1614 iwork(icurr) = itemp(j)
1623 iwork(icurr) = ktemp(i)
1627 iptr(12) = icurr - 1
1672 SUBROUTINE fi6706 (IPTR,LX,LY,IDENT,MSGA,KDATA,IVALS,MSTACK,
1673 * MWIDTH,MREF,MSCALE,J,LL,KDESC,IWORK,JDESC)
1676 INTEGER IPTR(*),KDATA(500,*),IVALS(*)
1677 INTEGER IDENT(*),IWORK(*)
1678 INTEGER MSGA(*),MSTACK(2,*)
1679 INTEGER MREF(700,3),KDESC(*)
1680 INTEGER MSCALE(*),MWIDTH(*)
1696 ELSE IF (lx.EQ.2)
THEN
1705 ELSE IF (lx.EQ.3)
THEN
1718 IF (kyyy.GT.0.AND.kyyy.LT.255)
THEN
1722 CALL fi6708 (iptr,iwork,lf,lx,ly,jdesc)
1723 IF (jdesc.EQ.33791)
THEN
1728 DO 500 lj = 1, iptr(14)
1729 IF (jdesc.EQ.kdesc(lj))
THEN
1733 CALL gbyte (msga,mref(lj,3),iptr(25),kyyy)
1739 print *,
'2 03 YYY - MATCHING DESCRIPTOR NOT FOUND'
1742 ELSE IF (kyyy.EQ.0)
THEN
1745 DO 400 i = 1, iptr(14)
1751 ELSE IF (lx.EQ.4)
THEN
1758 IF (iwork(iptr(11)).NE.7957)
THEN
1759 print *,
'2 04 YYY NOT FOLLOWED BY 0 31 021'
1764 ELSE IF (lx.EQ.5)
THEN
1768 IF (ident(16).EQ.0)
THEN
1770 CALL fi6704(iptr,msga,kdata,ivals,mstack,
1771 * mwidth,mref,mscale,j,ll,jdesc)
1774 CALL fi6703(iptr,ident,msga,kdata,ivals,mstack,
1775 * mwidth,mref,mscale,j,jdesc)
1776 IF (iptr(1).NE.0)
THEN
1781 ELSE IF (lx.EQ.6)
THEN
1787 iptr(31) = iptr(31) + 1
1788 kprm = iptr(31) + iptr(24)
1789 mstack(1,kprm) = 34304 + ly
1979 INTEGER IDENT(*),KDATA(500,*)
1980 INTEGER MSTACK(2,*),IPTR(*)
1987 DO 3000 i = 1, ident(14)
1996 IF (mstack(1,mk).EQ.1282)
THEN
2000 ELSE IF (mstack(1,mk).EQ.1538)
THEN
2004 ELSE IF (mstack(1,mk).EQ.1793)
THEN
2013 kprofl(jk) = mstack(1,mk)
2015 kprof2(jk) = mstack(2,mk)
2017 kset2(jk) = kdata(i,mk)
2021 print *,
'LOCATION ERROR PROCESSING PROFILER'
2029 IF (mstack(1,mk).EQ.1025)
THEN
2033 ELSE IF (mstack(1,mk).EQ.1026)
THEN
2037 ELSE IF (mstack(1,mk).EQ.1027)
THEN
2041 ELSE IF (mstack(1,mk).EQ.1028)
THEN
2045 ELSE IF (mstack(1,mk).EQ.1029)
THEN
2049 ELSE IF (mstack(1,mk).EQ.2069)
THEN
2052 ELSE IF (mstack(1,mk).EQ.1049)
THEN
2060 kprofl(jk) = mstack(1,mk)
2062 kprof2(jk) = mstack(2,mk)
2064 kset2(jk) = kdata(i,mk)
2067 IF (isw.NE.127)
THEN
2068 print *,
'TIME ERROR PROCESSING PROFILER',isw
2077 IF (mstack(1,mk).EQ.2818)
THEN
2081 ELSE IF (mstack(1,mk).EQ.2817)
THEN
2085 ELSE IF (mstack(1,mk).EQ.2611)
THEN
2089 ELSE IF (mstack(1,mk).EQ.3073)
THEN
2093 ELSE IF (mstack(1,mk).EQ.3342)
THEN
2097 ELSE IF (mstack(1,mk).EQ.3331)
THEN
2101 ELSE IF (mstack(1,mk).EQ.1982.OR.
2102 * mstack(1,mk).EQ.1983)
THEN
2105 IF (mstack(1,mk).EQ.1983)
THEN
2111 incrht = kdata(i,mk)
2116 lhgt = 500 + ihgt - kdata(i,mk)
2122 ELSE IF (mstack(1,mk).EQ.8128)
THEN
2126 ELSE IF (mstack(1,mk).EQ.8129)
THEN
2134 kprofl(jk) = mstack(1,mk)
2136 kprof2(jk) = mstack(2,mk)
2138 kset2(jk) = kdata(i,mk)
2145 IF (isw.NE.511)
THEN
2146 print *,
'SURFACE ERROR PROCESSING PROFILER',isw
2155 IF (mstack(1,mk).EQ.1982)
THEN
2157 incrht = kdata(i,mk)
2159 IF (lhgt.LT.(9250+ihgt))
THEN
2160 lhgt = ihgt + 500 - incrht
2162 lhgt = ihgt + 9250 - incrht
2167 lhgt = lhgt + incrht
2170 lhgt = lhgt + incrht
2186 IF (mstack(1,mk).EQ.1982)
THEN
2189 ELSE IF (mstack(1,mk).EQ.3008)
THEN
2191 IF (kdata(i,mk).GE.2047)
THEN
2199 ELSE IF (mstack(1,mk).EQ.3009)
THEN
2201 IF (kdata(i,mk).GE.2047)
THEN
2209 IF (iand(isw,1).NE.0)
THEN
2210 IF (vectu.EQ.32767.OR.vectv.EQ.32767)
THEN
2227 CALL w3fc05 (vectu,vectv,dir,spd)
2256 ELSE IF (mstack(1,mk).EQ.3010)
THEN
2260 ELSE IF (mstack(1,mk).EQ.8130)
THEN
2264 ELSE IF(iand(isw,16).EQ.0.AND.mstack(1,mk).EQ.2070)
THEN
2268 ELSE IF(iand(isw,32).EQ.0.AND.mstack(1,mk).EQ.2070)
THEN
2272 ELSE IF (mstack(1,mk).EQ.5568)
THEN
2276 ELSE IF (mstack(1,mk).EQ.3011)
THEN
2280 ELSE IF (mstack(1,mk).EQ.3013)
THEN
2283 ELSE IF ((mstack(1,mk)/16384).NE.0)
THEN
2291 kprofl(jk) = mstack(1,mk)
2293 kprof2(jk) = mstack(2,mk)
2295 kset2(jk) = kdata(i,mk)
2302 IF (isw.NE.511)
THEN
2303 print *,
'LEVEL ERROR PROCESSING PROFILER',isw
2310 kdata(i,ll) = kset2(ll)
2316 mstack(1,ll) = kprofl(ll)
2318 mstack(2,ll) = kprof2(ll)
2363 INTEGER IDENT(*),KDATA(500,1600)
2364 INTEGER MSTACK(2,1600),IPTR(*)
2365 INTEGER KPROFL(1600)
2366 INTEGER KPROF2(1600)
2369 DO 3000 i = 1, ident(14)
2374 IF (mstack(1,mk).EQ.257)
THEN
2377 ELSE IF (mstack(1,mk).EQ.258)
THEN
2380 ELSE IF (mstack(1,mk).EQ.1282)
THEN
2383 ELSE IF (mstack(1,mk).EQ.1538)
THEN
2386 ELSE IF (mstack(1,mk).EQ.1793)
THEN
2395 kprofl(jk) = mstack(1,mk)
2396 kprof2(jk) = mstack(2,mk)
2397 kset2(jk) = kdata(i,mk)
2403 print *,
'LOCATION ERROR PROCESSING PROFILER'
2410 IF (mstack(1,mk).EQ.1025)
THEN
2413 ELSE IF (mstack(1,mk).EQ.1026)
THEN
2416 ELSE IF (mstack(1,mk).EQ.1027)
THEN
2419 ELSE IF (mstack(1,mk).EQ.1028)
THEN
2422 ELSE IF (mstack(1,mk).EQ.1029)
THEN
2425 ELSE IF (mstack(1,mk).EQ.2069)
THEN
2428 ELSE IF (mstack(1,mk).EQ.1049)
THEN
2436 kprofl(jk) = mstack(1,mk)
2437 kprof2(jk) = mstack(2,mk)
2438 kset2(jk) = kdata(i,mk)
2443 IF (isw.NE.127)
THEN
2444 print *,
'TIME ERROR PROCESSING PROFILER'
2452 IF (mstack(1,mk).EQ.2817)
THEN
2454 ELSE IF (mstack(1,mk).EQ.2818)
THEN
2456 ELSE IF (mstack(1,mk).EQ.2611)
THEN
2458 ELSE IF (mstack(1,mk).EQ.3073)
THEN
2460 ELSE IF (mstack(1,mk).EQ.3342)
THEN
2462 ELSE IF (mstack(1,mk).EQ.3331)
THEN
2464 ELSE IF (mstack(1,mk).EQ.1797)
THEN
2465 incrht = kdata(i,mk)
2470 ELSE IF (mstack(1,mk).EQ.6433)
THEN
2477 kprofl(jk) = mstack(1,mk)
2478 kprof2(jk) = mstack(2,mk)
2479 kset2(jk) = kdata(i,mk)
2483 IF (isw.NE.255)
THEN
2484 print *,
'ERROR PROCESSING PROFILER'
2488 IF (mstack(1,mk).NE.1797)
THEN
2489 print *,
'ERROR PROCESSING HEIGHT INCREMENT IN PROFILER'
2494 lhgt = 500 + ihgt - kdata(i,mk)
2502 IF (mstack(1,mk).EQ.1797)
THEN
2503 incrht = kdata(i,mk)
2506 IF (lhgt.LT.(9250+ihgt))
THEN
2507 lhgt = lhgt + 500 - incrht
2509 lhgt = lhgt + 9250 -incrht
2514 lhgt = lhgt + incrht
2517 lhgt = lhgt + incrht
2531 IF (mstack(1,mk).EQ.1797)
THEN
2533 ELSE IF (mstack(1,mk).EQ.6432)
THEN
2536 ELSE IF (mstack(1,mk).EQ.6434)
THEN
2539 ELSE IF (mstack(1,mk).EQ.2070)
THEN
2548 ELSE IF (mstack(1,mk).EQ.2819)
THEN
2551 IF (kdata(i,mk).GE.2047)
THEN
2558 ELSE IF (mstack(1,mk).EQ.2820)
THEN
2561 IF (kdata(i,mk).GE.2047)
THEN
2566 IF (iand(isw,1).NE.0)
THEN
2567 IF (vectu.EQ.32767.OR.vectv.EQ.32767)
THEN
2579 CALL w3fc05 (vectu,vectv,dir,spd)
2604 ELSE IF (mstack(1,mk).EQ.2866)
THEN
2608 ELSE IF (mstack(1,mk).EQ.5568)
THEN
2611 ELSE IF (mstack(1,mk).EQ.2822)
THEN
2614 ELSE IF (mstack(1,mk).EQ.2867)
THEN
2623 kprofl(jk) = mstack(1,mk)
2625 kprof2(jk) = mstack(2,mk)
2627 kset2(jk) = kdata(i,mk)
2632 IF (isw.NE.1023)
THEN
2633 print *,
'LEVEL ERROR PROCESSING PROFILER',isw
2639 kdata(i,ll) = kset2(ll)
2645 mstack(1,ll) = kprofl(ll)
2647 mstack(2,ll) = kprof2(ll)
subroutine fi6701(iptr, ident, msga, istack, iwork, aname, kdata, ivals, mstack, aunits, kdesc, mwidth, mref, mscale, knr, index)
Data extraction.
subroutine fi6706(iptr, lx, ly, ident, msga, kdata, ivals, mstack, mwidth, mref, mscale, j, ll, kdesc, iwork, jdesc)
Process operator descriptors.
subroutine fi6702(iptr, ident, msga, kdata, kdesc, ll, mstack, aunits, mwidth, mref, mscale, jdesc, ivals, j)
Process standard descriptor.