1 SUBROUTINE READNS(LUNIT,SUBSET,JDATE,IRET)
3 !$$$ SUBPROGRAM DOCUMENTATION BLOCK
6 ! PRGMMR: WOOLLEN ORG: NP20 DATE: 1994-01-06
8 ! ABSTRACT: THIS SUBROUTINE SHOULD ONLY BE CALLED WHEN LOGICAL UNIT
9 ! LUNIT HAS BEEN OPENED FOR INPUT OPERATIONS. IT READS THE NEXT
10 ! SUBSET FROM LOGICAL UNIT NUMBER LUNIT INTO INTERNAL SUBSET ARRAYS.
11 ! BUFR MESSAGES IN LUNIT MAY BE EITHER COMPRESSED OR UNCOMPRESSED.
12 ! THIS SUBROUTINE IS ACTUALLY A COMBINATION OF BUFR ARCHIVE LIBRARY
13 ! SUBROUTINES READMG AND READSB.
15 ! PROGRAM HISTORY LOG:
16 ! 1994-01-06 J. WOOLLEN -- ORIGINAL AUTHOR
17 ! 1998-07-08 J. WOOLLEN -- REPLACED CALL TO CRAY LIBRARY ROUTINE
18 ! "ABORT" WITH CALL TO NEW INTERNAL BUFRLIB
20 ! 1999-11-18 J. WOOLLEN -- THE NUMBER OF BUFR FILES WHICH CAN BE
21 ! OPENED AT ONE TIME INCREASED FROM 10 TO 32
22 ! (NECESSARY IN ORDER TO PROCESS MULTIPLE
23 ! BUFR FILES UNDER THE MPI)
24 ! 2003-11-04 S. BENDER -- ADDED REMARKS/BUFRLIB ROUTINE
26 ! 2003-11-04 D. KEYSER -- MAXJL (MAXIMUM NUMBER OF JUMP/LINK ENTRIES)
27 ! INCREASED FROM 15000 TO 16000 (WAS IN
28 ! VERIFICATION VERSION); UNIFIED/PORTABLE FOR
29 ! WRF; ADDED DOCUMENTATION (INCLUDING
30 ! HISTORY); OUTPUTS MORE COMPLETE DIAGNOSTIC
31 ! INFO WHEN ROUTINE TERMINATES ABNORMALLY
33 ! USAGE: CALL READNS (LUNIT, SUBSET, JDATE, IRET)
34 ! INPUT ARGUMENT LIST:
35 ! LUNIT - INTEGER: FORTRAN LOGICAL UNIT NUMBER FOR BUFR FILE
37 ! OUTPUT ARGUMENT LIST:
38 ! SUBSET - CHARACTER*8: TABLE A MNEMONIC FOR BUFR MESSAGE
39 ! CONTAINING SUBSET BEING READ
40 ! JDATE - INTEGER: DATE-TIME STORED WITHIN SECTION 1 OF BUFR
41 ! MESSAGE CONTAINING SUBSET BEING READ, IN FORMAT OF
42 ! EITHER YYMMDDHH OR YYYYMMDDHH, DEPENDING ON DATELEN()
44 ! IREADNS - INTEGER: RETURN CODE:
46 ! -1 = there are no more subsets in the BUFR file
49 ! THIS ROUTINE CALLS: BORT READMG READSB STATUS
50 ! THIS ROUTINE IS CALLED BY: IREADNS
51 ! Also called by application programs.
54 ! LANGUAGE: FORTRAN 77
55 ! MACHINE: PORTABLE TO ALL PLATFORMS
61 COMMON /MSGCWD/ NMSG(NFILES),NSUB(NFILES),MSUB(NFILES), &
62 INODE(NFILES),IDATE(NFILES)
63 ! COMMON /TABLES/ MAXTAB,NTAB,TAG(MAXJL),TYP(MAXJL),KNT(MAXJL), &
64 ! JUMP(MAXJL),LINK(MAXJL),JMPB(MAXJL), &
65 ! IBT(MAXJL),IRF(MAXJL),ISC(MAXJL), &
66 ! ITP(MAXJL),VALI(MAXJL),KNTI(MAXJL), &
67 ! ISEQ(MAXJL,2),JSEQ(MAXJL)
73 !-----------------------------------------------------------------------
74 !-----------------------------------------------------------------------
76 ! REFRESH THE SUBSET AND JDATE PARAMETERS
77 ! ---------------------------------------
79 CALL STATUS(LUNIT,LUN,IL,IM)
82 SUBSET = TAG(INODE(LUN))
85 ! READ THE NEXT SUBSET IN THE BUFR FILE
86 ! -------------------------------------
88 1 CALL READSB(LUNIT,IRET)
90 CALL READMG(LUNIT,SUBSET,JDATE,IRET)
98 900 CALL BORT('BUFRLIB: READNS - INPUT BUFR FILE IS CLOSED, IT MUST'// &
100 901 CALL BORT('BUFRLIB: READNS - INPUT BUFR FILE IS OPEN FOR OUTPUT'// &
101 ', IT MUST BE OPEN FOR INPUT')
102 END SUBROUTINE READNS