1*DECK DUSRMT
2      SUBROUTINE DUSRMT (I, J, AIJ, INDCAT, PRGOPT, DATTRV, IFLAG)
3C***BEGIN PROLOGUE  DUSRMT
4C***SUBSIDIARY
5C***PURPOSE  Subsidiary to DSPLP
6C***LIBRARY   SLATEC
7C***TYPE      DOUBLE PRECISION (USRMAT-S, DUSRMT-D)
8C***AUTHOR  (UNKNOWN)
9C***DESCRIPTION
10C
11C   The user may supply this code
12C
13C***SEE ALSO  DSPLP
14C***ROUTINES CALLED  (NONE)
15C***REVISION HISTORY  (YYMMDD)
16C   811215  DATE WRITTEN
17C   891214  Prologue converted to Version 4.0 format.  (BAB)
18C   900328  Added TYPE section.  (WRB)
19C***END PROLOGUE  DUSRMT
20      DOUBLE PRECISION PRGOPT(*),DATTRV(*),AIJ
21      INTEGER IFLAG(*)
22C
23C***FIRST EXECUTABLE STATEMENT  DUSRMT
24      IF(IFLAG(1).EQ.1) THEN
25C
26C     THIS IS THE INITIALIZATION STEP.  THE VALUES OF IFLAG(K),K=2,3,4,
27C     ARE RESPECTIVELY THE COLUMN INDEX, THE ROW INDEX (OR THE NEXT COL.
28C     INDEX), AND THE POINTER TO THE MATRIX ENTRY'S VALUE WITHIN
29C     DATTRV(*).  ALSO CHECK (DATTRV(1)=0.) SIGNIFYING NO DATA.
30           IF(DATTRV(1).EQ.0.D0) THEN
31           I = 0
32           J = 0
33           IFLAG(1) = 3
34           ELSE
35           IFLAG(2)=-DATTRV(1)
36           IFLAG(3)= DATTRV(2)
37           IFLAG(4)= 3
38           ENDIF
39C
40           RETURN
41      ELSE
42           J=IFLAG(2)
43           I=IFLAG(3)
44           L=IFLAG(4)
45           IF(I.EQ.0) THEN
46C
47C     SIGNAL THAT ALL OF THE NONZERO ENTRIES HAVE BEEN DEFINED.
48                IFLAG(1)=3
49                RETURN
50           ELSE IF(I.LT.0) THEN
51C
52C     SIGNAL THAT A SWITCH IS MADE TO A NEW COLUMN.
53                J=-I
54                I=DATTRV(L)
55                L=L+1
56           ENDIF
57C
58           AIJ=DATTRV(L)
59C
60C     UPDATE THE INDICES AND POINTERS FOR THE NEXT ENTRY.
61           IFLAG(2)=J
62           IFLAG(3)=DATTRV(L+1)
63           IFLAG(4)=L+2
64C
65C     INDCAT=0 DENOTES THAT ENTRIES OF THE MATRIX ARE ASSIGNED THE
66C     VALUES FROM DATTRV(*).  NO ACCUMULATION IS PERFORMED.
67           INDCAT=0
68           RETURN
69      ENDIF
70      END
71