SUBROUTINE POSAPN(LUNIT) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C C SUBPROGRAM: POSAPN C PRGMMR: WOOLLEN ORG: NP20 DATE: 1994-01-06 C C ABSTRACT: THIS SUBROUTINE READS AND COUNTS BUFR MESSAGES IN ORDER TO C POSITION FOR APPEND. C C PROGRAM HISTORY LOG: C 1994-01-06 J. WOOLLEN -- ORIGINAL AUTHOR C 1998-07-08 J. WOOLLEN -- REPLACED CALL TO CRAY LIBRARY ROUTINE C "ABORT" WITH CALL TO NEW INTERNAL BUFRLIB C ROUTINE "BORT" C 2000-09-19 J. WOOLLEN -- MAXIMUM MESSAGE LENGTH INCREASED FROM C 10,000 TO 20,000 BYTES C 2003-11-04 S. BENDER -- ADDED REMARKS/BUFRLIB ROUTINE C INTERDEPENDENCIES C 2003-11-04 D. KEYSER -- UNIFIED/PORTABLE FOR WRF; ADDED C DOCUMENTATION (INCLUDING HISTORY); OUTPUTS C MORE COMPLETE DIAGNOSTIC INFO WHEN ROUTINE C TERMINATES ABNORMALLY C 2004-08-09 J. ATOR -- MAXIMUM MESSAGE LENGTH INCREASED FROM C 20,000 TO 50,000 BYTES C C USAGE: CALL POSAPN (LUNIT) C INPUT ARGUMENT LIST: C LUNIT - INTEGER: FORTRAN LOGICAL UNIT NUMBER FOR BUFR FILE C C INPUT FILES: C UNIT "LUNIT" - BUFR FILE C C REMARKS: C THIS ROUTINE CALLS: BORT RDMSGW C THIS ROUTINE IS CALLED BY: OPENBF C Normally not called by any application C programs. C C ATTRIBUTES: C LANGUAGE: FORTRAN 77 C MACHINE: PORTABLE TO ALL PLATFORMS C C$$$ INCLUDE 'bufrlib.prm' DIMENSION MBAY(MXMSGLD4) C----------------------------------------------------------------------- C----------------------------------------------------------------------- REWIND LUNIT IREC = 0 1 CALL RDMSGW(LUNIT,MBAY,IER) IF(IER.LT.0) GOTO 2 IREC = IREC+1 GOTO 1 2 REWIND LUNIT DO J=1,IREC CALL RDMSGW(LUNIT,MBAY,IER) IF(IER.EQ.-1) GOTO 901 IF(IER.EQ.-2) GOTO 900 ENDDO C EXITS C ----- RETURN 900 CALL BORT('BUFRLIB: POSAPN - ERROR READING A BUFR MESSAGE') 901 CALL BORT('BUFRLIB: POSAPN - FAILURE TO READ TO END-OF-'// . '(BUFR)FILE') END