79 SUBROUTINE ufbrw(LUN,USR,I1,I2,IO,IRET)
85 COMMON /usrstr/ nnod,ncon,nods(20),nodc(10),ivls(10),kons(10)
1021
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
subroutine conwin(LUN, INC1, INC2)
THIS SUBROUTINE SEARCHES CONSECUTIVE SUBSET BUFFER SEGMENTS FOR AN ELEMENT IDENTIFIED IN THE USER STR...
subroutine drstpl(INOD, LUN, INV1, INV2, INVN)
THIS SUBROUTINE IS CALLED BY BUFR ARCHIVE LIBRARY SUBROUTINE UFBRW WHENEVER IT CAN'T FIND A MNEMONIC ...
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
subroutine getwin(NODE, LUN, IWIN, JWIN)
GIVEN A NODE INDEX WITHIN THE INTERNAL JUMP/LINK TABLE, THIS SUBROUTINE LOOKS WITHIN THE CURRENT SUBS...
integer function ibfms(R8VAL)
This function provides a handy way to check whether a real*8 data value returned from a previous call...
function invwin(NODE, LUN, INV1, INV2)
THIS FUNCTION LOOKS FOR A SPECIFIED NODE WITHIN THE PORTION OF THE CURRENT SUBSET BUFFER BOUNDED BY T...
function lstjpb(NODE, LUN, JBTYP)
THIS FUNCTION SEARCHES BACKWARDS, BEGINNING FROM A GIVEN NODE WITHIN THE JUMP/LINK TABLE,...
This module contains array and variable declarations used to store the internal jump/link table.
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
This module declares and initializes the BMISS variable.
real *8, public bmiss
Current placeholder value to represent "missing" data when reading from or writing to BUFR files; thi...
subroutine newwin(LUN, IWIN, JWIN)
GIVEN AN INDEX WITHIN THE INTERNAL JUMP/LINK TABLE WHICH POINTS TO THE START OF AN "RPC" WINDOW (I....
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...