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