307 SUBROUTINE w3fi78(IPTR,IDENT,MSGA,ISTACK,MSTACK,KDATA,KNR,INDEX,
308 * MAXR,MAXD,IUNITB,IUNITD)
310 CHARACTER*40 ANAME(700)
311 CHARACTER*24 AUNITS(700)
317 INTEGER KDATA(MAXR,MAXD)
318 INTEGER MSTACK(2,MAXD)
344 IF (index.GT.ident(14))
THEN
348 ELSE IF (index.LE.ident(14))
THEN
349 IF (iptr(39).NE.0)
THEN
350 CALL fi7801(iptr,ident,msga,istack,iwork,aname,kdata,
353 * aunits,kdesc,mwidth,mref,mscale,knr,index,maxr,maxd,
365 DO 1000 knofst = 0, 999, 8
367 CALL gbyte (msga,ivals,inofst,8)
368 IF (ivals(1).EQ.66)
THEN
371 CALL gbyte (msga,ivals,inofst,24)
372 IF (ivals(1).EQ.5588562)
THEN
379 print *,
'BUFR - START OF BUFR MESSAGE NOT FOUND'
386 CALL gbyte (msga,ident(1),inofst+24,8)
389 IF (ident(1).GE.2)
THEN
391 CALL gbyte (msga,ivals,inofst,24)
393 kender = itotal * 8 - 32 + iptr(19)
394 CALL gbyte (msga,ilast,kender,32)
401 CALL gbyte (msga,ivals,inofst,24)
406 CALL gbyte (msga,ivals,inofst,8)
413 CALL gbyte (msga,ivals,inofst,24)
420 CALL gbyte (msga,ivals,inofst,16)
424 CALL gbyte (msga,ivals,inofst,8)
428 CALL gbyte (msga,ivals,inofst,1)
430 IF (ident(4).GT.0)
THEN
438 CALL gbyte (msga,ivals,inofst,8)
442 CALL gbyte (msga,ivals,inofst,8)
450 IF (ident(1).LT.2)
THEN
451 CALL gbyte (msga,ivals,inofst,16)
456 CALL gbyte (msga,ivals,inofst,8)
460 CALL gbyte (msga,ivals,inofst,8)
466 CALL gbyte (msga,ivals,inofst,8)
470 CALL gbyte (msga,ivals,inofst,8)
475 CALL gbyte (msga,ivals,inofst,8)
479 CALL gbyte (msga,ivals,inofst,8)
483 CALL gbyte (msga,ivals,inofst,8)
488 inofst = iptr(3) + iptr(2) * 8
493 CALL gbyte (msga,iptr(4),inofst,24)
496 kentry = (iptr(4) - 4) / 14
498 IF (ident(2).EQ.7)
THEN
499 DO 2000 i = 1, kentry
500 CALL gbyte (msga,kdspl ,inofst,16)
502 CALL gbyte (msga,lat ,inofst,16)
504 CALL gbyte (msga,lon ,inofst,16)
506 CALL gbyte (msga,kdahr ,inofst,16)
508 CALL gbyte (msga,dirid(1),inofst,32)
510 CALL gbyte (msga,dirid(2),inofst,16)
517 inofst = iptr(5) + iptr(4) * 8
522 CALL gbyte (msga,iptr(6),inofst,24)
528 CALL gbyte (msga,ident(14),inofst,16)
530 IF (ident(14).GT.maxr)
THEN
531 print *,
'THE NUMBER OF SUBSETS EXCEEDS THE MAXIMUM OF',maxr
532 print *,
'PASSED INTO W3FI78; MAXR MUST BE INCREASED IN '
533 print *,
'THE CALLING PROGRAM TO AT LEAST THE VALUE OF'
534 print *,ident(14),
'TO BE ABLE TO PROCESS THIS DATA'
541 CALL gbyte (msga,ivals,inofst,1)
545 CALL gbyte (msga,ivals,inofst,1)
549 nrdesc = (iptr( 6) - 8) / 2
553 CALL gbytes (msga,istack,inofst,16,0,nrdesc)
561 inofst = iptr(7) + iptr(6) * 8
565 CALL gbyte (msga,ivals,inofst,24)
572 inofst = iptr(9) + iptr(8) * 8
573 CALL gbyte (msga,ivals,inofst,32)
575 IF (ivals(1).NE.926365495)
THEN
576 print *,
'BAD SECTION COUNT'
583 CALL fi7801(iptr,ident,msga,istack,iwork,aname,kdata,ivals,mstack,
584 * aunits,kdesc,mwidth,mref,mscale,knr,index,maxr,maxd,
592 IF (ident(5).EQ.2)
THEN
593 IF (ident(6).EQ.7)
THEN
600 IF (ident(1).LT.2)
THEN
601 CALL fi7809(ident,mstack,kdata,iptr,maxr,maxd)
603 CALL fi7810(ident,mstack,kdata,iptr,maxr,maxd)
613 IF (iptr(1).NE.0)
THEN
675 SUBROUTINE fi7801(IPTR,IDENT,MSGA,ISTACK,IWORK,ANAME,KDATA,IVALS,
676 * MSTACK,AUNITS,KDESC,MWIDTH,MREF,MSCALE,KNR,INDEX,MAXR,MAXD,
681 CHARACTER*40 ANAME(*)
682 CHARACTER*24 AUNITS(*)
685 INTEGER MSGA(*),KDATA(MAXR,MAXD),IVALS(*)
687 INTEGER MSCALE(*),KNR(MAXR)
692 INTEGER ITBLD(500,11)
696 INTEGER ISTACK(*),IWORK(*)
698 INTEGER MSTACK(2,MAXD),KK
704 DATA itest /1,3,7,15,31,63,127,255,
705 * 511,1023,2047,4095,8191,16383,
706 * 32767, 65535,131071,262143,524287,
707 * 1048575,2097151,4194303,8388607,
708 * 16777215,33554431,67108863,134217727,
709 * 268435455,536870911,1073741823/
731 IF (iptr(10).EQ.0)
THEN
746 IF (iptr(21).EQ.0)
THEN
751 READ(unit=iunitb,fmt=20,err=9999,
END=175)MF,
753 * (aname(i)(k:k),k=1,40),
754 * (aunits(i)(k:k),k=1,24),
755 * mscale(i),mref(i,1),mwidth(i)
756 20
FORMAT(i1,i2,i3,40a1,24a1,i5,i15,1x,i4)
757 IF (mwidth(i).EQ.0)
THEN
763 kdesc(i) = mf*16384 + mx*256 + my
769 21
FORMAT(1x,i1,i2,i3,1x,i6,1x,40a1,
770 * 2x,24a1,2x,i5,2x,i15,1x,i4)
772 print *,
'HAVE READ LIMIT OF 700 TABLE B DESCRIPTORS'
773 print *,
'IF THERE ARE MORE THAT THAT, CORRECT READ LOOP'
790 IF (iptr(11).GT.iptr(12))
THEN
792 IF (ident(16).NE.0)
THEN
801 iptr(17) = iptr(17) + 1
802 IF (iptr(17).GT.ident(14))
THEN
803 iptr(17) = iptr(17) - 1
806 DO 300 i = 1, iptr(13)
816 IF (iptr(39).GT.0)
THEN
827 CALL fi7808 (iptr,iwork,lf,lx,ly,jdesc,maxd)
832 IF (iptr(11).GT.1600)
THEN
837 kprm = iptr(31) + iptr(24)
838 IF (kprm.GT.1600)
THEN
839 IF (kprm.GT.kold)
THEN
840 print *,
'EXCEEDED ARRAY SIZE',kprm,iptr(31),
848 iptr(31) = iptr(31) + 1
849 kprm = iptr(31) + iptr(24)
850 mstack(1,kprm) = jdesc
852 kdata(iptr(17),kprm) = 0
855 CALL fi7805(iptr,ident,msga,iwork,lx,ly,
856 * kdata,ll,knr,mstack,maxr,maxd)
857 IF (iptr(1).NE.0)
THEN
864 ELSE IF (lf.EQ.2)
THEN
866 ELSE IF (lx.EQ.4)
THEN
867 iptr(31) = iptr(31) + 1
868 kprm = iptr(31) + iptr(24)
869 mstack(1,kprm) = jdesc
871 kdata(iptr(17),kprm) = 0
875 CALL fi7806 (iptr,lx,ly,ident,msga,kdata,ivals,mstack,
876 * mwidth,mref,mscale,j,ll,kdesc,iwork,jdesc,maxr,maxd)
877 IF (iptr(1).NE.0)
THEN
882 ELSE IF (lf.EQ.3)
THEN
884 IF (iptr(22).EQ.0)
THEN
889 READ(iunitd,15,err=9998,
END=75 )
891 15
FORMAT(11(i1,i2,i3,1x),3x)
895 itbld(i,kk) = ihold(jj)*16384 +
896 * ihold(jj+1)*256 + ihold(jj+2)
897 IF (itbld(i,kk).EQ.0)
THEN
904 16
FORMAT(1x,11(i6,1x))
906 CLOSE(unit=iunitd,status=
'KEEP')
909 CALL fi7807(iptr,iwork,itbld,jdesc,maxd)
910 IF (iptr(1).GT.0)
THEN
918 kprm = iptr(31) + iptr(24)
919 CALL fi7802(iptr,ident,msga,kdata,kdesc,ll,mstack,
920 * aunits,mwidth,mref,mscale,jdesc,ivals,j,maxr,maxd)
923 IF (iptr(1).GT.0)
THEN
926 IF (ident(16).EQ.0)
THEN
927 knr(iptr(17)) = iptr(31)
939 IF (ident(16).NE.0)
THEN
946 print *,
' ERROR READING TABLE D'
950 print *,
' ERROR READING TABLE B'
993 SUBROUTINE fi7802(IPTR,IDENT,MSGA,KDATA,KDESC,LL,MSTACK,AUNITS,
994 * MWIDTH,MREF,MSCALE,JDESC,IVALS,J,MAXR,MAXD)
998 CHARACTER*24 AUNITS(*)
1006 INTEGER MWIDTH(*),MSTACK(2,MAXD),MSCALE(*)
1007 INTEGER MREF(700,3),KDATA(MAXR,MAXD),IVALS(*)
1010 DATA askey /
'CCITT IA5 '/
1023 IF (jdesc.GT.kdesc(kk))
THEN
1028 IF (iptr(36).NE.0)
THEN
1030 IF (ident(16).NE.0)
THEN
1033 iptr(25) = iptr(25) + iptr(36)
1035 CALL gbyte (msga,ihold,iptr(25),6)
1036 iptr(25) = iptr(25) + 6
1037 iptr(31) = iptr(31) + 1
1038 kprm = iptr(31) + iptr(24)
1039 mstack(1,kprm) = jdesc
1041 DO 50 i = 1, iptr(14)
1042 kdata(i,kprm) = 99999
1045 IF (ihold.NE.0)
THEN
1046 ibits = ihold * ident(14)
1047 iptr(25) = iptr(25) + ibits
1050 iptr(31) = iptr(31) + 1
1051 kprm = iptr(31) + iptr(24)
1052 mstack(1,kprm) = jdesc
1054 kdata(iptr(17),kprm) = 99999
1057 iptr(25) = iptr(25) + iptr(36)
1061 print *,
'FI7802 - ERROR = 3'
1062 print *,jdesc,k,kk,j,kdesc(j)
1072 j = ((kk - k) / 2) + k
1074 IF (jdesc.EQ.kdesc(k))
THEN
1077 ELSE IF (jdesc.EQ.kdesc(kk))
THEN
1080 ELSE IF (jdesc.LT.kdesc(j))
THEN
1084 ELSE IF (jdesc.GT.kdesc(j))
THEN
1092 IF (askey(1:9).EQ.aunits(j)(1:9))
THEN
1094 iptr(40) = mwidth(j) / 8
1098 IF (ident(16).NE.0)
THEN
1100 CALL fi7803(iptr,ident,msga,kdata,ivals,mstack,
1101 * mwidth,mref,mscale,j,jdesc,maxr,maxd)
1102 IF (iptr(1).NE.0)
THEN
1107 CALL fi7804(iptr,msga,kdata,ivals,mstack,
1108 * mwidth,mref,mscale,j,ll,jdesc,maxr,maxd)
1149 SUBROUTINE fi7803(IPTR,IDENT,MSGA,KDATA,IVALS,MSTACK,
1150 * MWIDTH,MREF,MSCALE,J,JDESC,MAXR,MAXD)
1154 INTEGER MSGA(*),JDESC,MSTACK(2,MAXD)
1155 INTEGER IPTR(*),IVALS(*),KDATA(MAXR,MAXD)
1156 INTEGER NRVALS,JWIDE,IDATA
1169 DATA msk /1,3,7,15,31,63,127,
1171 * 255,511,1023,2047,4095,
1173 * 8191,16383,32767,65535,
1175 * 131071,262143,524287,
1177 * 1048575,2097151,4194303,
1179 * 8388607,16777215,33554431,
1181 * 67108863,134217727,268435455/
1186 IF (iptr(18).EQ.0)
THEN
1193 IF (iptr(29).GT.0)
THEN
1195 iptr(31) = iptr(31) + 1
1196 kprm = iptr(31) + iptr(24)
1198 CALL gbyte (msga,lowest,iptr(25),iptr(29))
1199 iptr(25) = iptr(25) + iptr(29)
1201 CALL gbyte (msga,nbinc,iptr(25),6)
1202 iptr(25) = iptr(25) + 6
1204 IF (nbinc.GT.0)
THEN
1205 CALL gbytes (msga,ivals,iptr(25),nbinc,0,iptr(14))
1206 iptr(25) = iptr(25) + nbinc * iptr(14)
1207 DO 50 i = 1, iptr(14)
1208 kdata(i,kprm) = ivals(i) + lowest
1209 IF (kdata(i,kprm).GE.msk(nbinc))
THEN
1210 kdata(i,kprm) = 999999
1214 DO 51 i = 1, iptr(14)
1215 IF (lowest.GE.msk(nbinc))
THEN
1216 kdata(i,kprm) = 999999
1218 kdata(i,kprm) = lowest
1225 jwide = mwidth(j) + iptr(26)
1230 CALL gbyte (msga,lowest,iptr(25),jwide)
1232 iptr(25) = iptr(25) + jwide
1234 CALL gbyte (msga,nbinc,iptr(25),6)
1236 IF (iptr(32).EQ.2.AND.iptr(33).EQ.5)
THEN
1238 IF (nbinc.GT.jwide)
THEN
1245 111
FORMAT (1x,5hdata ,i3,6(2x,i10))
1248 print *,
'NBINC CALLS FOR LARGER BIT WIDTH THAN TABLE',
1249 *
' B PLUS WIDTH CHANGES'
1252 iptr(25) = iptr(25) + 6
1258 iptr(31) = iptr(31) + 1
1259 kprm = iptr(31) + iptr(24)
1260 IF (nbinc.NE.0)
THEN
1261 CALL gbytes (msga,ivals,iptr(25),nbinc,0,nrvals)
1262 iptr(25) = iptr(25) + nbinc * nrvals
1264 DO 100 i = 1, nrvals
1266 IF (ivals(i).GE.msk(nbinc))
THEN
1267 kdata(i,kprm) = 999999
1269 IF (mref(j,2).EQ.0)
THEN
1270 kdata(i,kprm) = ivals(i) + lowest + mref(j,1)
1272 kdata(i,kprm) = ivals(i) + lowest + mref(j,3)
1278 IF (lowest.EQ.msk(mwidth(j)))
THEN
1279 DO 105 i = 1, nrvals
1280 kdata(i,kprm) = 999999
1283 IF (mref(j,2).EQ.0)
THEN
1284 icomb = lowest + mref(j,1)
1286 icomb = lowest + mref(j,3)
1288 DO 106 i = 1, nrvals
1289 kdata(i,kprm) = icomb
1294 mstack(1,kprm) = jdesc
1295 IF (iptr(27).NE.0)
THEN
1296 mstack(2,kprm) = iptr(27)
1298 mstack(2,kprm) = mscale(j)
1306 DO 1906 k = 1, iptr(40)
1307 CALL gbyte (msga,klow,iptr(25),8)
1308 iptr(25) = iptr(25) + 8
1309 IF (klow(k).NE.0)
THEN
1311 print *,
'NON-ZERO LOWEST ON TEXT DATA'
1316 CALL gbyte (msga,nbinc,iptr(25),6)
1318 iptr(25) = iptr(25) + 6
1319 IF (nbinc.NE.iptr(40))
THEN
1321 print *,
'NBINC IS NOT THE NUMBER OF CHARACTERS',nbinc
1325 iptr(31) = iptr(31) + 1
1326 kprm = iptr(31) + iptr(24)
1329 DO 1900 n = 1, ident(14)
1332 nbits = iptr(40) * 8
1335 IF (nbits.GT.32)
THEN
1336 CALL gbyte (msga,idata,iptr(25),32)
1337 iptr(25) = iptr(25) + 32
1343 mstack(1,kprm) = jdesc
1345 kdata(n,kprm) = idata
1348 iptr(24) = iptr(24) + 1
1350 1701
FORMAT (1x,i1,1x,6hkdata=,a4,2x,i5,2x,i5,2x,i5,2x,i12)
1352 ELSE IF (nbits.GT.0)
THEN
1353 CALL gbyte (msga,idata,iptr(25),nbits)
1354 iptr(25) = iptr(25) + nbits
1355 ibuf = (32 - nbits) / 8
1357 DO 1750 mp = 1, ibuf
1358 idata = idata * 256 + 32
1364 mstack(1,kprm) = jdesc
1366 kdata(n,kprm) = idata
1418 SUBROUTINE fi7804(IPTR,MSGA,KDATA,IVALS,MSTACK,
1419 * MWIDTH,MREF,MSCALE,J,LL,JDESC,MAXR,MAXD)
1423 INTEGER IPTR(*),MREF(700,3),MSCALE(*)
1424 INTEGER MWIDTH(*),JDESC
1427 INTEGER KDATA(MAXR,MAXD),MSTACK(2,MAXD)
1433 DATA itest /1,3,7,15,31,63,127,255,
1434 * 511,1023,2047,4095,8191,16383,
1435 * 32767, 65535,131071,262143,524287,
1436 * 1048575,2097151,4194303,8388607,
1437 * 16777215,33554431,67108863,134217727,
1438 * 268435455,536870911,1073741823/
1441 IF ((iptr(26)+mwidth(j)).LT.1)
THEN
1447 jwide = mwidth(j) + iptr(26)
1449 IF (iptr(18).NE.1)
THEN
1451 IF (iptr(29).GT.0)
THEN
1452 IF (jdesc.NE.7957.AND.jdesc.NE.7937)
THEN
1453 iptr(31) = iptr(31) + 1
1454 kprm = iptr(31) + iptr(24)
1455 mstack(1,kprm) = 33792 + iptr(29)
1457 CALL gbyte (msga,ivals,iptr(25),iptr(29))
1458 iptr(25) = iptr(25) + iptr(29)
1459 kdata(iptr(17),kprm) = ivals(1)
1464 iptr(31) = iptr(31) + 1
1465 kprm = iptr(31) + iptr(24)
1466 mstack(1,kprm) = jdesc
1467 IF (iptr(27).NE.0)
THEN
1468 mstack(2,kprm) = iptr(27)
1470 mstack(2,kprm) = mscale(j)
1474 CALL gbyte (msga,ivals,iptr(25),jwide)
1476 iptr(25) = iptr(25) + jwide
1478 IF (ivals(1).EQ.itest(jwide))
THEN
1479 kdata(iptr(17),kprm) = 999999
1481 IF (mref(j,2).EQ.0)
THEN
1482 kdata(iptr(17),kprm) = ivals(1) + mref(j,1)
1484 kdata(iptr(17),kprm) = ivals(1) + mref(j,3)
1500 iptr(31) = iptr(31) + 1
1504 IF (nrbits.GT.32)
THEN
1505 CALL gbyte (msga,idata,iptr(25),32)
1511 kprm = iptr(31) + iptr(24)
1512 kdata(iptr(17),kprm) = idata
1513 mstack(1,kprm) = jdesc
1517 iptr(25) = iptr(25) + 32
1518 nrbits = nrbits - 32
1519 iptr(24) = iptr(24) + 1
1521 ELSE IF (nrbits.GT.0)
THEN
1523 CALL gbyte (msga,idata,iptr(25),nrbits)
1524 iptr(25) = iptr(25) + nrbits
1528 kprm = iptr(31) + iptr(24)
1530 IF (kshft.GT.0)
THEN
1532 DO 1722 lak = 1, ktry
1533 idata = idata * 256 + 64
1535 1723
FORMAT (12x,z8)
1538 kdata(iptr(17),kprm) = idata
1540 mstack(1,kprm) = jdesc
1587 SUBROUTINE fi7805(IPTR,IDENT,MSGA,IWORK,LX,LY,
1588 * KDATA,LL,KNR,MSTACK,MAXR,MAXD)
1597 INTEGER KDATA(MAXR,MAXD)
1598 INTEGER LX,MSTACK(2,MAXD)
1613 icurr = iptr(11) - 1
1614 ipick = iptr(11) - 1
1616 IF (nrreps.EQ.0)
THEN
1629 CALL fi7808(iptr,iwork,lf,lx,ly,jdesc,maxd)
1633 IF (jdesc.EQ.7937.OR.jdesc.EQ.7947)
THEN
1635 ELSE IF (jdesc.EQ.7938.OR.jdesc.EQ.7948)
THEN
1644 IF (ident(16).EQ.0)
THEN
1646 CALL gbyte (msga,kvals,iptr(25),jwide)
1648 iptr(25) = iptr(25) + jwide
1649 iptr(31) = iptr(31) + 1
1650 kprm = iptr(31) + iptr(24)
1651 mstack(1,kprm) = jdesc
1653 kdata(iptr(17),kprm) = kvals(1)
1659 CALL gbytes (msga,kvals,iptr(25),jwide,0,nrvals)
1660 iptr(25) = iptr(25) + jwide * nrvals
1661 iptr(31) = iptr(31) + 1
1662 kprm = iptr(31) + iptr(24)
1663 mstack(1,kprm) = jdesc
1665 kdata(iptr(17),kprm) = kvals(1)
1666 DO 100 i = 1, nrvals
1667 kdata(i,kprm) = kvals(i)
1677 DO 1000 i = 1, nrset
1678 CALL fi7808(iptr,iwork,lf,lx,ly,jdesc,maxd)
1683 lax = iptr(12) - iptr(11) + 1
1686 CALL fi7808(iptr,iwork,lf,lx,ly,jdesc,maxd)
1693 DO 4000 i = 1, nrreps
1694 DO 3000 j = 1, nrset
1695 iwork(icurr) = itemp(j)
1704 iwork(icurr) = ktemp(i)
1708 iptr(12) = icurr - 1
1760 SUBROUTINE fi7806 (IPTR,LX,LY,IDENT,MSGA,KDATA,IVALS,MSTACK,
1761 * MWIDTH,MREF,MSCALE,J,LL,KDESC,IWORK,JDESC,MAXR,MAXD)
1764 INTEGER IPTR(*),KDATA(MAXR,MAXD),IVALS(*)
1765 INTEGER IDENT(*),IWORK(*)
1766 INTEGER MSGA(*),MSTACK(2,MAXD)
1767 INTEGER MREF(700,3),KDESC(*)
1768 INTEGER MSCALE(*),MWIDTH(*)
1784 ELSE IF (lx.EQ.2)
THEN
1793 ELSE IF (lx.EQ.3)
THEN
1806 IF (kyyy.GT.0.AND.kyyy.LT.255)
THEN
1810 CALL fi7808 (iptr,iwork,lf,lx,ly,jdesc,maxd)
1811 IF (jdesc.EQ.33791)
THEN
1816 DO 500 lj = 1, iptr(14)
1817 IF (jdesc.EQ.kdesc(lj))
THEN
1821 CALL gbyte (msga,mref(lj,3),iptr(25),kyyy)
1827 print *,
'2 03 YYY - MATCHING DESCRIPTOR NOT FOUND'
1830 ELSE IF (kyyy.EQ.0)
THEN
1833 DO 400 i = 1, iptr(14)
1839 ELSE IF (lx.EQ.4)
THEN
1846 IF (iwork(iptr(11)).NE.7957)
THEN
1847 print *,
'2 04 YYY NOT FOLLOWED BY 0 31 021'
1852 ELSE IF (lx.EQ.5)
THEN
1856 IF (ident(16).EQ.0)
THEN
1858 CALL fi7804(iptr,msga,kdata,ivals,mstack,
1859 * mwidth,mref,mscale,j,ll,jdesc,maxr,maxd)
1862 CALL fi7803(iptr,ident,msga,kdata,ivals,mstack,
1863 * mwidth,mref,mscale,j,jdesc,maxr,maxd)
1864 IF (iptr(1).NE.0)
THEN
1869 ELSE IF (lx.EQ.6)
THEN
1875 iptr(31) = iptr(31) + 1
1876 kprm = iptr(31) + iptr(24)
1877 mstack(1,kprm) = 34304 + ly
2066 SUBROUTINE fi7809(IDENT,MSTACK,KDATA,IPTR,MAXR,MAXD)
2072 INTEGER IDENT(*),KDATA(MAXR,MAXD)
2073 INTEGER MSTACK(2,MAXD),IPTR(*)
2074 INTEGER KPROFL(1600)
2075 INTEGER KPROF2(1600)
2081 DO 3000 i = 1, ident(14)
2090 IF (mstack(1,mk).EQ.1282)
THEN
2094 ELSE IF (mstack(1,mk).EQ.1538)
THEN
2098 ELSE IF (mstack(1,mk).EQ.1793)
THEN
2107 kprofl(jk) = mstack(1,mk)
2109 kprof2(jk) = mstack(2,mk)
2111 kset2(jk) = kdata(i,mk)
2115 print *,
'LOCATION ERROR PROCESSING PROFILER'
2123 IF (mstack(1,mk).EQ.1025)
THEN
2127 ELSE IF (mstack(1,mk).EQ.1026)
THEN
2131 ELSE IF (mstack(1,mk).EQ.1027)
THEN
2135 ELSE IF (mstack(1,mk).EQ.1028)
THEN
2139 ELSE IF (mstack(1,mk).EQ.1029)
THEN
2143 ELSE IF (mstack(1,mk).EQ.2069)
THEN
2146 ELSE IF (mstack(1,mk).EQ.1049)
THEN
2154 kprofl(jk) = mstack(1,mk)
2156 kprof2(jk) = mstack(2,mk)
2158 kset2(jk) = kdata(i,mk)
2161 IF (isw.NE.127)
THEN
2162 print *,
'TIME ERROR PROCESSING PROFILER',isw
2171 IF (mstack(1,mk).EQ.2818)
THEN
2175 ELSE IF (mstack(1,mk).EQ.2817)
THEN
2179 ELSE IF (mstack(1,mk).EQ.2611)
THEN
2183 ELSE IF (mstack(1,mk).EQ.3073)
THEN
2187 ELSE IF (mstack(1,mk).EQ.3342)
THEN
2191 ELSE IF (mstack(1,mk).EQ.3331)
THEN
2195 ELSE IF (mstack(1,mk).EQ.1982.OR.
2196 * mstack(1,mk).EQ.1983)
THEN
2199 IF (mstack(1,mk).EQ.1983)
THEN
2205 incrht = kdata(i,mk)
2210 lhgt = 500 + ihgt - kdata(i,mk)
2216 ELSE IF (mstack(1,mk).EQ.8128)
THEN
2220 ELSE IF (mstack(1,mk).EQ.8129)
THEN
2228 kprofl(jk) = mstack(1,mk)
2230 kprof2(jk) = mstack(2,mk)
2232 kset2(jk) = kdata(i,mk)
2239 IF (isw.NE.511)
THEN
2240 print *,
'SURFACE ERROR PROCESSING PROFILER',isw
2249 IF (mstack(1,mk).EQ.1982)
THEN
2251 incrht = kdata(i,mk)
2253 IF (lhgt.LT.(9250+ihgt))
THEN
2254 lhgt = ihgt + 500 - incrht
2256 lhgt = ihgt + 9250 - incrht
2261 lhgt = lhgt + incrht
2264 lhgt = lhgt + incrht
2280 IF (mstack(1,mk).EQ.1982)
THEN
2283 ELSE IF (mstack(1,mk).EQ.3008)
THEN
2285 IF (kdata(i,mk).GE.2047)
THEN
2293 ELSE IF (mstack(1,mk).EQ.3009)
THEN
2295 IF (kdata(i,mk).GE.2047)
THEN
2303 IF (iand(isw,1).NE.0)
THEN
2304 IF (vectu.EQ.32767.OR.vectv.EQ.32767)
THEN
2321 CALL w3fc05 (vectu,vectv,dir,spd)
2350 ELSE IF (mstack(1,mk).EQ.3010)
THEN
2354 ELSE IF (mstack(1,mk).EQ.8130)
THEN
2358 ELSE IF(iand(isw,16).EQ.0.AND.mstack(1,mk).EQ.2070)
THEN
2362 ELSE IF(iand(isw,32).EQ.0.AND.mstack(1,mk).EQ.2070)
THEN
2366 ELSE IF (mstack(1,mk).EQ.5568)
THEN
2370 ELSE IF (mstack(1,mk).EQ.3011)
THEN
2374 ELSE IF (mstack(1,mk).EQ.3013)
THEN
2377 ELSE IF ((mstack(1,mk)/16384).NE.0)
THEN
2385 kprofl(jk) = mstack(1,mk)
2387 kprof2(jk) = mstack(2,mk)
2389 kset2(jk) = kdata(i,mk)
2396 IF (isw.NE.511)
THEN
2397 print *,
'LEVEL ERROR PROCESSING PROFILER',isw
2404 kdata(i,ll) = kset2(ll)
2410 mstack(1,ll) = kprofl(ll)
2412 mstack(2,ll) = kprof2(ll)
2459 SUBROUTINE fi7810(IDENT,MSTACK,KDATA,IPTR,MAXR,MAXD)
2462 INTEGER IDENT(*),KDATA(MAXR,MAXD)
2463 INTEGER MSTACK(2,MAXD),IPTR(*)
2464 INTEGER KPROFL(1600)
2465 INTEGER KPROF2(1600)
2468 DO 3000 i = 1, ident(14)
2474 IF (mstack(1,mk).EQ.257)
THEN
2477 ELSE IF (mstack(1,mk).EQ.258)
THEN
2480 ELSE IF (mstack(1,mk).EQ.1282)
THEN
2483 ELSE IF (mstack(1,mk).EQ.1538)
THEN
2486 ELSE IF (mstack(1,mk).EQ.1793)
THEN
2495 kprofl(jk) = mstack(1,mk)
2496 kprof2(jk) = mstack(2,mk)
2497 kset2(jk) = kdata(i,mk)
2503 print *,
'LOCATION ERROR PROCESSING PROFILER'
2510 IF (mstack(1,mk).EQ.1025)
THEN
2513 ELSE IF (mstack(1,mk).EQ.1026)
THEN
2516 ELSE IF (mstack(1,mk).EQ.1027)
THEN
2519 ELSE IF (mstack(1,mk).EQ.1028)
THEN
2522 ELSE IF (mstack(1,mk).EQ.1029)
THEN
2525 ELSE IF (mstack(1,mk).EQ.2069)
THEN
2528 ELSE IF (mstack(1,mk).EQ.1049)
THEN
2536 kprofl(jk) = mstack(1,mk)
2537 kprof2(jk) = mstack(2,mk)
2538 kset2(jk) = kdata(i,mk)
2543 IF (isw.NE.127)
THEN
2544 print *,
'TIME ERROR PROCESSING PROFILER'
2553 IF (mstack(1,mk).EQ.2817)
THEN
2555 ELSE IF (mstack(1,mk).EQ.2818)
THEN
2557 ELSE IF (mstack(1,mk).EQ.2611)
THEN
2559 ELSE IF (mstack(1,mk).EQ.3073)
THEN
2561 ELSE IF (mstack(1,mk).EQ.3342)
THEN
2563 ELSE IF (mstack(1,mk).EQ.3331)
THEN
2565 ELSE IF (mstack(1,mk).EQ.1797)
THEN
2566 incrht = kdata(i,mk)
2572 ELSE IF (mstack(1,mk).EQ.6433)
THEN
2576 kprofl(jk) = mstack(1,mk)
2577 kprof2(jk) = mstack(2,mk)
2578 kset2(jk) = kdata(i,mk)
2582 IF (isw.NE.255)
THEN
2583 print *,
'ERROR PROCESSING PROFILER',isw
2587 IF (mstack(1,mk).NE.1797)
THEN
2588 print *,
'ERROR PROCESSING HEIGHT INCREMENT IN PROFILER'
2593 lhgt = 500 + ihgt - kdata(i,mk)
2596 IF (mstack(1,mk).GE.16384)
THEN
2606 IF (mstack(1,mk).EQ.1797)
THEN
2607 incrht = kdata(i,mk)
2610 IF (lhgt.LT.(9250+ihgt))
THEN
2611 lhgt = ihgt + 500 - incrht
2613 lhgt = ihgt + 9250 -incrht
2618 lhgt = lhgt + incrht
2621 lhgt = lhgt + incrht
2635 IF (mstack(1,mk).EQ.1797)
THEN
2637 ELSE IF (mstack(1,mk).EQ.6432)
THEN
2640 ELSE IF (mstack(1,mk).EQ.6434)
THEN
2643 ELSE IF (mstack(1,mk).EQ.2070)
THEN
2652 ELSE IF (mstack(1,mk).EQ.2819)
THEN
2655 IF (kdata(i,mk).GE.2047)
THEN
2662 ELSE IF (mstack(1,mk).EQ.2820)
THEN
2665 IF (kdata(i,mk).GE.2047)
THEN
2670 IF (iand(isw,1).NE.0)
THEN
2671 IF (vectu.EQ.32767.OR.vectv.EQ.32767)
THEN
2683 CALL w3fc05 (vectu,vectv,dir,spd)
2708 ELSE IF (mstack(1,mk).EQ.2866)
THEN
2712 ELSE IF (mstack(1,mk).EQ.5568)
THEN
2715 ELSE IF (mstack(1,mk).EQ.2822)
THEN
2718 ELSE IF (mstack(1,mk).EQ.2867)
THEN
2727 kprofl(jk) = mstack(1,mk)
2729 kprof2(jk) = mstack(2,mk)
2731 kset2(jk) = kdata(i,mk)
2736 IF (isw.NE.1023)
THEN
2737 print *,
'LEVEL ERROR PROCESSING PROFILER',isw
2745 kdata(i,ll) = kset2(ll)
2750 mstack(1,ll) = kprofl(ll)
2752 mstack(2,ll) = kprof2(ll)
subroutine fi7806(iptr, lx, ly, ident, msga, kdata, ivals, mstack, mwidth, mref, mscale, j, ll, kdesc, iwork, jdesc, maxr, maxd)
Process operator descriptors.
subroutine fi7801(iptr, ident, msga, istack, iwork, aname, kdata, ivals, mstack, aunits, kdesc, mwidth, mref, mscale, knr, index, maxr, maxd, iunitb, iunitd)
Data extraction.
subroutine fi7802(iptr, ident, msga, kdata, kdesc, ll, mstack, aunits, mwidth, mref, mscale, jdesc, ivals, j, maxr, maxd)
Process standard descriptor.