79 SUBROUTINE ufbrw(LUN,USR,I1,I2,IO,IRET)
85 COMMON /usrstr/ nnod,ncon,nods(20),nodc(10),ivls(10),kons(10)
102 1 CALL
conwin(lun,inc1,inc2)
106 ELSEIF(inc1.EQ.0)
THEN
110 IF(nods(i).GT.0)
THEN
112 CALL
getwin(nods(i),lun,ins1,ins2)
113 IF(ins1.EQ.0) goto 100
127 CALL
errwrt(
'++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
128 WRITE ( unit=errstr, fmt=
'(5(A,I7))' )
129 .
'BUFRLIB: UFBRW - IRET:INS1:INS2:INC1:INC2 = ',
130 . iret,
':', ins1,
':', ins2,
':', inc1,
':', inc2
133 DO WHILE ( ( ins2 - kk ) .GE. 5 )
134 WRITE ( unit=errstr, fmt=
'(5A10)' )
135 . (tag(inv(i,lun)),i=kk,kk+4)
139 WRITE ( unit=errstr, fmt=
'(5A10)' )
140 . (tag(inv(i,lun)),i=kk,ins2)
142 CALL
errwrt(
'++++++++++++++BUFR ARCHIVE LIBRARY+++++++++++++++++')
149 IF(io.EQ.1 .AND. iret.LE.i2)
THEN
151 IF(nods(i).GT.0)
THEN
152 IF(
ibfms(usr(i,iret)).EQ.0)
THEN
153 invn =
invwin(nods(i),lun,ins1,ins2)
155 CALL
drstpl(nods(i),lun,ins1,ins2,invn)
160 CALL
newwin(lun,inc1,inc2)
161 val(invn,lun) = usr(i,iret)
162 ELSEIF(
lstjpb(nods(i),lun,
'RPS').EQ.0)
THEN
163 val(invn,lun) = usr(i,iret)
164 ELSEIF(
ibfms(val(invn,lun)).NE.0)
THEN
165 val(invn,lun) = usr(i,iret)
167 CALL
drstpl(nods(i),lun,ins1,ins2,invn)
172 CALL
newwin(lun,inc1,inc2)
173 val(invn,lun) = usr(i,iret)
183 IF(io.EQ.0 .AND. iret.LE.i2)
THEN
186 IF(nods(i).GT.0)
THEN
187 invn =
invwin(nods(i),lun,ins1,ins2)
188 IF(invn.GT.0) usr(i,iret) = val(invn,lun)
196 IF(io.EQ.1.AND.iret.EQ.i2) goto 100
197 CALL
nxtwin(lun,ins1,ins2)
198 IF(ins1.GT.0 .AND. ins1.LT.inc2) goto 2
function lstjpb(NODE, LUN, JBTYP)
THIS FUNCTION SEARCHES BACKWARDS, BEGINNING FROM A GIVEN NODE WITHIN THE JUMP/LINK TABLE...
subroutine nxtwin(LUN, IWIN, JWIN)
GIVEN INDICES WITHIN THE INTERNAL JUMP/LINK TABLE WHICH POINT TO THE START AND END OF AN "RPC" WINDOW...
subroutine ufbrw(LUN, USR, I1, I2, IO, IRET)
THIS SUBROUTINE WRITES OR READS SPECIFIED VALUES TO OR FROM THE CURRENT BUFR DATA SUBSET WITHIN INTER...
subroutine getwin(NODE, LUN, IWIN, JWIN)
GIVEN A NODE INDEX WITHIN THE INTERNAL JUMP/LINK TABLE, THIS SUBROUTINE LOOKS WITHIN THE CURRENT SUBS...
This module declares and initializes the BMISS variable.
subroutine conwin(LUN, INC1, INC2)
THIS SUBROUTINE SEARCHES CONSECUTIVE SUBSET BUFFER SEGMENTS FOR AN ELEMENT IDENTIFIED IN THE USER STR...
INTEGER function ibfms(R8VAL)
This function provides a handy way to check whether a real*8 data value returned from a previous call...
This module contains array and variable declarations used to store the internal jump/link table...
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
subroutine drstpl(INOD, LUN, INV1, INV2, INVN)
THIS SUBROUTINE IS CALLED BY BUFR ARCHIVE LIBRARY SUBROUTINE UFBRW WHENEVER IT CAN'T FIND A MNEMONIC ...
function invwin(NODE, LUN, INV1, INV2)
THIS FUNCTION LOOKS FOR A SPECIFIED NODE WITHIN THE PORTION OF THE CURRENT SUBSET BUFFER BOUNDED BY T...
subroutine newwin(LUN, IWIN, JWIN)
GIVEN AN INDEX WITHIN THE INTERNAL JUMP/LINK TABLE WHICH POINTS TO THE START OF AN "RPC" WINDOW (I...