-
Notifications
You must be signed in to change notification settings - Fork 0
/
dmwhda.f
69 lines (69 loc) · 1.8 KB
/
dmwhda.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
SUBROUTINE DM_WHDA ( iflno, iret )
C************************************************************************
C* DM_WHDA *
C* *
C* This subroutine writes the row and column headers to a DM file. *
C* *
C* DM_WHDA ( IFLNO, IRET ) *
C* *
C* Input parameters: *
C* IFLNO INTEGER File number *
C* *
C* Output parameters: *
C* IRET INTEGER Return code *
C* 0 = normal return *
C* -6 = write error *
C** *
C* Log: *
C* M. desJardins/GSFC 6/86 *
C* M. desJardins/GSFC 3/87 *
C************************************************************************
INCLUDE 'GEMPRM.PRM'
INCLUDE 'dmcmn.cmn'
C
INTEGER ibuff (MBLKSZ)
C------------------------------------------------------------------------
C* Put the row headers into a buffer and write buffer when full.
C
istart = kprowh (iflno)
length = 0
knt = 1
DO i = 1, krow (iflno)
DO j = 0, krkeys (iflno)
length = length + 1
ibuff (length) = kheadr (j,knt,iflno)
IF ( length .eq. MBLKSZ ) THEN
CALL DM_WINT ( iflno, istart, length, ibuff, iret )
IF ( iret .ne. 0 ) RETURN
length = 0
istart = istart + MBLKSZ
END IF
END DO
knt = knt + 1
END DO
C
C* Put the column headers into a buffer and write buffer when full.
C
DO i = 1, kcol (iflno)
DO j = 0, kckeys (iflno)
length = length + 1
ibuff (length) = kheadr (j,knt,iflno)
IF ( length .eq. MBLKSZ ) THEN
CALL DM_WINT ( iflno, istart, length, ibuff, iret )
IF ( iret .ne. 0 ) RETURN
length = 0
istart = istart + MBLKSZ
END IF
END DO
knt = knt + 1
END DO
C
C* Write remaining data in buffer.
C
IF ( length .gt. 0 ) THEN
CALL DM_WINT ( iflno, istart, length, ibuff, iret )
IF ( iret .ne. 0 ) RETURN
END IF
C*
RETURN
END