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